使用ADO,
DE.CNN.OPEN
STR="CREATE TABLE TEST(AGE LONG)"
DE.CNN.EXECUTE STR
STR="INSERT INTO TEST SELECT * FROM OLDTABLE WHERE AGE<=20 ORDER BY AGE"
DE.CNN.EXECUTE STR
STR="DELETE FROM OLDTABLE"
DE.CNN.EXECUTE STR
STR="INSERT INTO OLDTABLE SELECT * FROM TEST
DE.CNN.EXECUTE STR
可以吗?我最近很穷。老兄给点分吧

解决方案 »

  1.   

    没有人再来试试吗?在家都同意JCP老弟的方法?
      

  2.   

    你是在ACCESS库中建立表还是在SQL SERVER数据库中建立表呢?没有说明白,如果在ACCESS中建立新表,你可以到MSDN中查找CREATETABLE 方面的资料,那里有教你怎么建立库和表以及相应的字段,很简单,有不明白的,可以联系我,QQ:4940826  Email:[email protected]
      

  3.   

    数据库中共有近50个表,其中最大表的记录不超过10000条
    mmzxg(超级笨蛋)有什么好方法?
      

  4.   

    我的ACCESS数据库与很多报表连接,我需要删除原表是因为我需要报表中的内容一起变化,报表不单用于浏览,还用于格式化打印输出...
      

  5.   

    你不用建立临时表,因为你实现的是修改功能,你实现的有点象事务功能, 可以rollback,但是效率太低,还不如在标上加标志位,修改完成的写标志位,又可以rollback。我猜得对不对?
      

  6.   

    你说的在SQL SERVER可以实现,在VB+ACCESS中能行吗?实际上,我是要对原表中的记录进行重新排序(物理顺序变化,而不是建个VIEW)
      

  7.   

    用ado
    Function createTable()
        Dim want As Recordset
        Dim res As Recordset
        Dim i, j, n As Long
        Dim tablename As String
        Dim creats As TableDef
        Dim f As Field
        Set res = CurrentDb.OpenRecordset("select * from alltables")
        If Not res.EOF Then
            res.MoveLast
            n = res.RecordCount
            res.MoveFirst
            For i = 0 To n - 1
                Set want = CurrentDb.OpenRecordset("select * from " & res("name"))
                tablename = Mid(res("name"), 5)
                Set creats = CurrentDb.CreateTableDef(tablename)
                For j = 0 To want.fields.Count - 1
                    creats.fields.Append creats.CreateField(want.fields(j).Name, setDBType(want.fields(j).Type))
                Next
                CurrentDb.TableDefs.Append creats
                CurrentDb.Execute "insert into " & tablename & " select * from " & res("name")
                DoCmd.DeleteObject acTable, res("name")
                Set creats = Nothing
                res.MoveNext
            Next
        End If
    End Function
    Function setDBType(DBType As Long) As Byte
        Select Case DBType
        Case 20
            setDBType = dbLong
        Case 8
            setDBType = dbDate
        Case 10, 12
            setDBType = dbText
        Case 9
            setDBType = dbBinary
        Case 4
            setDBType = dbSingle
        Case 7
            setDBType = dbCurrency
        Case Default
            setDBType = dbLong
        End Select
    End Function可能对你有帮助
      

  8.   

    你要排序?而且改变物理顺序,除非你想提高读盘速度(不过也快不了多少,类似与cluster),不然真是没有必要。
      

  9.   

    你要排序?而且改变物理顺序,除非你想提高读盘速度(不过也快不了多少,类似与cluster),不然真是没有必要。
      

  10.   

    select * from table1 where field1='as' and field2=12.. order by field2,field3//一个recordset 完陈要求;建临时表只能更慢
      

  11.   

    上面的是vba的代码在access中写的关于将所有连接表导入本地,其实你要的只是中间的那一部分
      

  12.   

    排序原代码,允许对任意3个字段进行排序:Private Sub cmdSort_Click()
        Dim db As Database                                         'db 数据库
        Dim strSqlNew As String
        Dim strSqlDel As String
        Dim strSqlRestore As String
        Dim strSqLDrop As String
        Set db = OpenDatabase(App.Path & "\mlc.mdb")
        Dim strFDN1 As String
        Dim strFDN2 As String
        Dim strFDN3 As String
        Dim strFDN As String
        
        Dim cmbSelectzd1 As ComboBox
        Dim cmbSelectzd2 As ComboBox
        Dim cmbSelectzd3 As ComboBox
        Set cmbSelectzd1 = cmbZD1
        Set cmbSelectzd2 = cmbZD2
        Set cmbSelectzd3 = cmbZD3
            If optAsc1.Value = False Then
           strFDN1 = cmbSelectzd1.List(cmbSelectzd1.ListIndex) & " Desc"
        Else
           strFDN1 = cmbSelectzd1.List(cmbSelectzd1.ListIndex) & " ASC"
        End If
        
        If optAsc2.Value = False Then
           strFDN2 = cmbSelectzd2.List(cmbSelectzd2.ListIndex) & " Desc"
        Else
           strFDN2 = cmbSelectzd2.List(cmbSelectzd2.ListIndex) & " ASC"
        End If
        
        If optAsc3.Value = False Then
           strFDN3 = cmbSelectzd3.List(cmbSelectzd3.ListIndex) & " Desc"
        Else
           strFDN3 = cmbSelectzd3.List(cmbSelectzd3.ListIndex) & " ASC"
        End If
          
          
        
        Select Case cmbSelectzd1.List(cmbSelectzd1.ListIndex)
        Case ""
               strFDN1 = ""
               Select Case cmbSelectzd2.List(cmbSelectzd2.ListIndex)
                      Case ""
                      strFDN2 = ""
                            Select Case cmbSelectzd3.List(cmbSelectzd3.ListIndex)
                                   Case ""
                                   strFDN3 = ""
                                   MsgBox "选择参数有误或未进行选择,请重新选择!", 64, "错误的选择"
                                   Exit Sub
                                   Case Is <> ""
                                   strFDN = strFDN3
                            End Select
            
                      Case Is <> ""
                            Select Case cmbSelectzd3.List(cmbSelectzd3.ListIndex)
                                   Case ""
                                   strFDN = strFDN2
                                   Case Is <> ""
                                   strFDN = strFDN2 + ", " + strFDN3
                            End Select
                End Select
               
               
        Case Is <> ""
               Select Case cmbSelectzd2.List(cmbSelectzd2.ListIndex)
                      Case ""
                      strFDN2 = ""
                            Select Case cmbSelectzd3.List(cmbSelectzd3.ListIndex)
                                   Case ""
                                   strFDN3 = ""
                                   strFDN = strFDN1
                                   Case Is <> ""
                                   strFDN = strFDN1 + ", " + strFDN3
                            End Select
            
                      Case Is <> ""
                            Select Case cmbSelectzd3.List(cmbSelectzd3.ListIndex)
                                   Case ""
                                   strFDN = strFDN1 + ", " + strFDN2
                                   Case Is <> ""
                                   strFDN = strFDN1 + "," + strFDN2 + ", " + strFDN3
                            End Select
               
               
                End Select
        End Select
                      
                  
                  
                  
        If cmbSelectzd1.List(cmbSelectzd1.ListIndex) = cmbSelectzd2.List(cmbSelectzd2.ListIndex) Or cmbSelectzd2.List(cmbSelectzd2.ListIndex) = cmbSelectzd3.List(cmbSelectzd3.ListIndex) Or cmbSelectzd1.List(cmbSelectzd1.ListIndex) = cmbSelectzd3.List(cmbSelectzd3.ListIndex) Then
        MsgBox "选择参数有误,请重新选择!", 64, "错误的选择"
        Exit Sub
        Else
        End If
        
        
            
        strSqlNew = "select * into " & "new" & RCName & " from " & RCName & " order by " & strFDN
        db.Execute strSqlNew
        'MsgBox "完成临时表建立", 64, "Temp table created!" 
        strSqlDel = "delete * from " & RCName
        db.Execute strSqlDel
        'MsgBox "完成原表记录删除", 64, "delete records in old table!!!"
     
        strSqlRestore = "insert into " & RCName & " select * from new" & RCName
        db.Execute strSqlRestore
        'MsgBox "完成临时表数据回写至原表", 64, "Trans data!!!"
        
        strSqLDrop = "drop table new" & RCName
        db.Execute strSqLDrop
        'MsgBox "完成临时表删除", 64, "Delete temp table"
    db.Close
        frmTableShow.Dataconnect.Refresh
        frmTableShow.DBGrid1.RefreshUnload Me
    End Sub