环境:win2000+vb6+vbsp5用recordset 对象从paradox数据库打开一个数据集,
用另一个recordset对象从access数据库打开一个空表
现将 paradox数据集的记录添加到access的数据集中。
当数据达到3000条时速度会特别慢!请问如何加快速度!
别告诉我去买内存去呀!!!谢谢!

解决方案 »

  1.   

    怎么慢,要几分钟!?你是怎么添加的.
    可以在循环里加一DOEVENTS,防止像死机一样!
      

  2.   

    一条一条导肯定会慢,试试这种方式:
     Dim cn As New ADODB.Connection
     cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Paradox文件存放路径\;Extended Properties=Paradox 5.x;Persist Security Info=False;"
     cn.Execute "insert into [ttt] in 'c:\test.mdb' select * from [ParadoxTableName]"
      

  3.   

    3600条要一分钟左右!
    加doevents我知道,可和提高速度没什么关系呀!
    添加时我是先从paradox数据集里读取一条记录,
    然后根据每个字段的值,往access库里写数据!
    能明白吗?
      

  4.   

    to yoki(小马哥--鬓微霜,又何妨)
    不能那么写!!
    两个数据集的字段数是不一样的!!
      

  5.   

    我想把这3600条数据,分批添加到access里!1
    一次500条!!那样会快吗?
      

  6.   

    你是不是利用循环?
    do while rs.eof
      读一条;
      调整字段数;
      写一条;
    loop你是不是一次把数据全部读出来
    然后调整字段
    最后插入到Access中
      

  7.   

    打开Paradox数据库的结果集时,将游标改为 adUseClient ,可以大幅提高速度。
      

  8.   

    有不同的情况可以写以在写成多个sql查询,每个对应该一种情况,
    然后分批用yoki(小马哥--鬓微霜,又何妨) 的方法比较快。
      

  9.   

    使用链接表功能实现
    首先要引用Microsoft ADO Ext. 2.x for DDL and Security
        Dim Filename As String    'Paradox文件绝对路径
        Dim cnn  As ADODB.Connection
        Dim cat As ADOX.Catalog
        Dim tbl As ADOX.Table
        Dim strFilename As String '文件名(不含扩展名)
        Dim strFilepath As String '文件路径(不含文件名)    
        Filename = "c:\abc\def.db"
        strFilepath = Left$(Filename, InStrRev(Filename, "\") - 1)
        strFilename = Right$(Filename, Len(Filename) - Len(strFilepath) - 1)
        strFilename = Left$(strFilename, InStrRev(strFilename, ".") - 1)
        
        Set cnn = New Connection
        cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\x.dbm"
        Set cat = New Catalog
        Set cat.ActiveConnection = cnn    '建立链接表
        Set tbl = New ADOX.Table
        Set tbl.ParentCatalog = cat
        tbl.name = "LinkDB"   '链接表名
        tbl.Properties("Jet OLEDB:Remote Table Name") = strFilename & "#DB"
        tbl.Properties("Jet OLEDB:Link Provider String") = "Paradox 3.X;HDR=NO;IMEX=2;"
        tbl.Properties("Jet OLEDB:Link Datasource") = strFilepath
        tbl.Properties("Jet OLEDB:Create Link").Value = True
        cat.Tables.Append tbl
        Set tbl = Nothing
        Set cat = Nothing    '用insert into从链接表向目的表插入数据
        '用drop table删除链接表    cnn.Close
        Set cnn = Nothing
      

  10.   

    yoki(小马哥--鬓微霜,又何妨) 的方法可以的。字段数不一样,你可以改变那条语句哦。
      

  11.   

    明白了!!!
    我明白他的意思!
    可实际情况不是那么简单!
    还要根据paradox字段的一个值,在另一个表中找到对应的名称,把名称写到access表里。
      

  12.   

    不能把paradox这两张表做个连接么?
      

  13.   

    你做链接表后就可以将paradox的表当作access的表来使用了!