⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 从.dbf到.mdb查找更新速度慢.txt

📁 VB技巧问答10000例 VB技巧问答10000例
💻 TXT
字号:
对于这个问题,我想应该是因为你在第一次向new.mdb中添加old1.dbf时,是逐条添加,7000多条记录用二十多秒是比较正常的,但是在你用old2.dbf更新new.mdb时,因为你每更新一条记录都要使用select语句查找stu_ID号,这相当于你每更新一条记录,就又对new.mdb库查找了一遍,根据查找的平均时间,也是遍历全记录的一半左右,8000多条记录,就是你又对new.mdb遍历了8000多遍,所以你第二次用时六七分钟也是有可能的。 
    如果你想提高速度,你可以先对old2.dbf和new.mdb以stu_ID进行相同升序或降序排序,然后从头开始,利用比较插入法:如下 
     if old2.stu_ID>new.stu_ID then '如果old2.stu_ID大,不用插入,new记录后移 
     new.skip 
     else if old2.stu_ID     new.update(old2.stu_ID) 
     new.skip 
     old2.skip 
     end if 
     end if 
     end if 
    利用这个方法可以所用的平均时间就是对old2和new遍历一遍,一共用两遍就可以完成估计大概用时在50秒以内。但是排序可能要花去一定的时间,你可以比较一下,看这种方法是否可以节省时间。 
<END>     
我想问题在于你在循环体内打开Recordset的缘故。即: 
     rs.Open "SELECT * FROM tblNew WHERE stu_ID='" & Trim(tempstuID) & "'" 
    使用ado打开数据比较慢(比DAO慢),特别RS的游标类型是客户端游标时。 
    事实上你可以在循环体外打开rs,如下: 
     rs.Open "Select * from tblNew" 
    然后在循环体内使用Find方法查找是否有满足条件的记录: 
     rs.MoveFirst '在ADO中,这句不可少 
     rs.Find "stu_ID ='" & tempstuID & "'" 
     If rs.EOF Then 
     '添加记录 
     Else 
     '更新记录 
     End If 
<END>
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -