在Access中我试图获取我的数据库的子群体,所有行都在指定日期具有事件。
该表目前有2500行,约20-30行有事件/日期组合。
当我执行此代码时,我陷入了一个持续时间超过一分钟的循环,之后我就停止了它:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select * from oper where oDate =" & Format(Me.txtDate, "\#mm\/dd\/yyyy\#"))
testtxt= ""
rs.MoveFirst
Do Until rs.EOF
testtxt = testtxt & rs!OpID & vbCrLf
rs.MoveNext
Loop
答案 0 :(得分:0)
注意在循环后关闭你的记录集,然后释放内存(将记录集设置为空)。
您是否尝试在较小的数据库中执行相同的操作?环境可能是问题所在。
答案 1 :(得分:0)
无论实际导致您的问题是什么,我建议您使用QueryDef objects,因为它们支持类型参数。
以下是对代码的建议更改。
Function OperByDate(dt As Date) As DAO.Recordset
With CurrentDb.CreateQueryDef("", _
"PARAMETERS dt DateTime;" & vbNewLine & _
"SELECT * FROM oper WHERE oDate >= [dt] AND oDate < [dt] + 1;")
.Parameters!dt = Fix(dt)
Set OperByDate = .OpenRecordset(dbOpenForwardOnly)
End With
End Function
和
Sub Test()
Dim testtxt As String
With OperByDate(Me.txtDate)
Do Until .EOF
testtxt = testtxt & !OpID & vbCrLf
.MoveNext
Loop
End With
Debug.Print testtxt
End Sub