ACESS数据库中一张表,VB表单里有两个ADODC和DATAGRID,其中一个显示所有数据,另外一个显示查询出来的数据。 今天测试50000组数据时,将查询结果表中数值赋给几个变量,每循环一次耗时时间很长,要1分钟左右。请大家帮忙看看问题。需要怎么改进For k = 0 To Form4.Adodc2.Recordset.RecordCount - 1
Form4.Adodc2.Recordset.MoveFirst
Form4.Adodc2.Recordset.Move (k)
Form4.Pesgo1.XDataII(0, k) = Form4.Adodc2.Recordset.Fields("时间")
Form4.Pesgo1.XDataII(1, k) = Form4.Adodc2.Recordset.Fields("时间")
Form4.Pesgo1.YData(0, k) = Form4.Adodc2.Recordset.Fields("数据1")
Form4.Pesgo1.YData(1, k) = Form4.Adodc2.Recordset.Fields("数据2")
Next k
上面Pesgo是一个图表控件。
Form4.Adodc2.Recordset.MoveFirst
Form4.Adodc2.Recordset.Move (k)
Form4.Pesgo1.XDataII(0, k) = Form4.Adodc2.Recordset.Fields("时间")
Form4.Pesgo1.XDataII(1, k) = Form4.Adodc2.Recordset.Fields("时间")
Form4.Pesgo1.YData(0, k) = Form4.Adodc2.Recordset.Fields("数据1")
Form4.Pesgo1.YData(1, k) = Form4.Adodc2.Recordset.Fields("数据2")
Next k
上面Pesgo是一个图表控件。
如果你有50000组数据
Access绝对不适合你
因为Access数据库文件超过 20 MB 或者数据较多的情况下
均会出现系统延迟高
数据无法正常读取
数据读取错误等问题
Form4.Adodc2.Recordset.MoveFirst
Form4.Adodc2.Recordset.Move (k)然后取值,这里,可能是反复移动RS,占用了大量时间
.MoveFirst
For k = 0 To Form4.Adodc2.Recordset.RecordCount - 1
.Movenext
Form4.Pesgo1.XDataII(0, k) = .Fields("时间")
Form4.Pesgo1.XDataII(1, k) = .Fields("时间2")
Form4.Pesgo1.YData(0, k) = .Fields("数据1")
Form4.Pesgo1.YData(1, k) = .Fields("数据2")
Next k
with Form4.Adodc2.Recordset
.MoveFirst
rsct= .RecordCount -1
For k = 0 To rsct
Form4.Pesgo1.XDataII(0, k) = .Fields("时间")
Form4.Pesgo1.XDataII(1, k) = .Fields("时间2")
Form4.Pesgo1.YData(0, k) = .Fields("数据1")
Form4.Pesgo1.YData(1, k) = .Fields("数据2")
if k<rsct then .MoveNext
Next k
end with
dim rsall,i as long,j as long
with Form4.Adodc2.Recordset
if not .eof then
rsall= Form4.Adodc2.Recordset.GetRows(-1)
For i = 0 to ubound(rsall,2)
Form4.Pesgo1.XDataII(0, k) = rsall(0,i)
Form4.Pesgo1.XDataII(1, k) = rsall(1,i)
Form4.Pesgo1.YData(0, k) = rsall(2,i)
Form4.Pesgo1.YData(1, k) = rsall(3,i)
next i
end if
end with
这里假定你的记录是4列 自己根据查询所有列名顺序 修改 rsall(0,i) 中的第一下标值