陷入Access的循环中

时间:2014-06-17 08:33:13

标签: vba ms-access

在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

2 个答案:

答案 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