ADO 查询的疑问,恳请大家帮忙
Public Sub Yb2StartCheck()With frmMain.lstResult
'---------读取运报2---------------------------------------------------------
strYb2 = "select d18_date,entry011,entry036 from yb2 where unit='" & SiteID & "'"
If rsYb2.State = adStateOpen Then rsYb2.Close
rsYb2.Open strYb2, conn, adLockReadOnly
If rsYb2.RecordCount = 0 Then Exit Sub
rsYb2.MoveFirst
rsYb2.Find ("d18_date='" & SelDate & "'")
yb2yyc = rsYb2.Fields(1)
yb2fyyc = rsYb2.Fields(2)
On Error Resume Next
rsYb2.MoveNext
rsYb2.Find ("d18_date='" & SelDate & "'")
yb2yyc = yb2yyc + rsYb2.Fields(1)
yb2fyyc = yb2fyyc + rsYb2.Fields(2)
MsgBox yb2yyc
MsgBox yb2fyyc
'----------读取运调14-----------------------------------------------------
strYb14 = "select d18_date,entry078,entry079 from y14 where unit='" & SiteID & "'"
'entry078 entry079
If rsYb14.State = adStateOpen Then rsYb14.Close
rsYb14.Open strYb14, conn, adLockReadOnly
If rsYb14.RecordCount = 0 Then Exit Sub
rsYb14.MoveFirst
rsYb14.Find ("d18_date='" & SelDate & "'")
y14yyc = rsYb14.Fields(1)
y14fyyc = rsYb14.Fields(2)
MsgBox y14yyc
MsgBox y14fyyc
End With
End Sub
这是一个查询数据的子程序,分为两段:读取运报2和读取读调14,现在的问题是把任一段拿出来单独运行,速度都很快
但是如果像上面这样,在一起运行,那么运调14的查询速度明显缓慢(还有时是运报2速度慢)
请大家帮我看看是哪里出了问题,谢谢 --------------------编程问答-------------------- 直接把d18_data的条件写到SQL语句中执行:
strYb2 = "select d18_date,entry011,entry036 from yb2 where unit='" & SiteID & "' and d18_date='"& selDate &"'"
--------------------编程问答-------------------- 这个方法我早已经试过了,现象还是一样的,但谢谢楼上的回答 --------------------编程问答-------------------- 看你记录集的声明:rsYb2、rsYb14
是不是你同时打开了多个记录集? --------------------编程问答-------------------- 干脆将所有要查询的内容一并取出,再按条件Find
strSQL = "select d18_date,entry011,entry036, from yb2 where unit='" & SiteID & "'"
strSQL = strSQL & " Union "
strSQL = strSQL & "select d18_date,entry078,entry079 from y14 where unit='" & SiteID & "'"
只要对应字段的数据类型一致就可以了,这样可以减少数据库的操作时间
--------------------编程问答-------------------- 可能是内存空间问题。多个记录集同时打开,引起大量磁盘交换。
建议每次查询后关闭记录集。因为当查询到的记录集很大时,及时记录集开着,MoveFirst, Find 都会引起磁盘交换,未必合算。 --------------------编程问答-------------------- 谢谢几位回答的朋友,我把记录集用完后关闭试试 --------------------编程问答-------------------- 还是不行啊
用完后我加了一句
If rsYb2.State = adStateOpen Then rsYb2.Close
另外:这次我只打开一个记录集,用完后关闭再打开另一个,还是不行
补充:VB , 数据库(包含打印,安装,报表)