环境:win2000+vb6+vbsp5用recordset 对象从paradox数据库打开一个数据集,
用另一个recordset对象从access数据库打开一个空表
现将 paradox数据集的记录添加到access的数据集中。
当数据达到3000条时速度会特别慢!请问如何加快速度!
别告诉我去买内存去呀!!!谢谢!
用另一个recordset对象从access数据库打开一个空表
现将 paradox数据集的记录添加到access的数据集中。
当数据达到3000条时速度会特别慢!请问如何加快速度!
别告诉我去买内存去呀!!!谢谢!
可以在循环里加一DOEVENTS,防止像死机一样!
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]"
加doevents我知道,可和提高速度没什么关系呀!
添加时我是先从paradox数据集里读取一条记录,
然后根据每个字段的值,往access库里写数据!
能明白吗?
不能那么写!!
两个数据集的字段数是不一样的!!
一次500条!!那样会快吗?
do while rs.eof
读一条;
调整字段数;
写一条;
loop你是不是一次把数据全部读出来
然后调整字段
最后插入到Access中
然后分批用yoki(小马哥--鬓微霜,又何妨) 的方法比较快。
首先要引用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
我明白他的意思!
可实际情况不是那么简单!
还要根据paradox字段的一个值,在另一个表中找到对应的名称,把名称写到access表里。