Почему запрос, который возвращает 835 записей в Access, возвращает пустой набор записей в коде VBA?

Следующий код немного изменен по сравнению с некоторыми шаблонами, которые я использую почти для каждого проекта, над которым я работаю (в Access). Все остальные версии этого кода прекрасно работают в этой базе данных. Все таблицы на самом деле в SQL Server, но они связаны в этой базе данных Access.

Вот странная часть... Когда я запускаю код и спускаюсь в "With rs" и делаю ".Open", следующий шаг "Do While Not .EOF" переходит к нижней части "Do".. Я в.EOF! Но если я получу копию оператора SQL ".Source" и вставлю его в пустой запрос SQL в главном окне Access без кода, я получу 835 записей из этого запроса. Как я могу получить пустой набор записей, когда этот запрос должен вернуть 835 записей?

Я пытался изменить свои.CursorType и.LockType, но безрезультатно.

У кого-нибудь есть мысли о том, что я мог бы попытаться устранить это?

Public Sub test()
Dim db As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sFromDate As String
Dim sToDate As String
Dim sSubUnit As String

sFromDate = "1/1/2013"
sToDate = "1/31/2013"
sSubUnit = "2???"

' Make a connection to the db
Set db = CurrentProject.Connection

With rs
    .ActiveConnection = db
    .CursorType = adOpenForwardOnly
    .LockType = adLockReadOnly

    .Source = "SELECT SCEVENT.CLIENT_ID, SCATTEND.EMP_ID, SCATTEND.STARTDATE, SCATTEND.SVC_ID " & _
                "FROM SCATTEND LEFT JOIN SCEVENT ON SCATTEND.SCEVENT_ID = SCEVENT.ID " & _
                "WHERE (SCATTEND.STARTDATE Between #" & sFromDate & "# And #" & sToDate & "#) " & _
                    "AND (SCATTEND.SUBUNIT_ID Like '" & sSubUnit & "') " & _
                    "AND ((APPTYP_ID IS NULL) OR (APPTYP_ID IN (1,2))) " & _
                "ORDER BY SCEVENT.CLIENT_ID, SCATTEND.EMP_ID, SCATTEND.STARTDATE, SCATTEND.SVC_ID;"
    .Open
    Do While Not .EOF
        MsgBox "there are records!"
        .MoveNext
    Loop
    .Close
End With

Set rs = Nothing
Set db = Nothing

End Sub

1 ответ

Решение

Это может быть связано с разницей между ADO и DAO

Разница между ADO и DAO

Другие вопросы по тегам