Функция фильтра набора записей DAO не может фильтровать с 2 свойствами
Я использую VBA в MS Access 2010.
В настоящее время я пытаюсь отфильтровать из набора записей с 2 полями. Однако я устал, это не будет фильтровать согласно тому, что я хочу.
Но если бы я фильтровал только по одному полю, набор записей мог бы фильтровать соответственно.
Это то, что у меня сейчас.
Private Function getCheckedRecordsFromDB(ByVal cmNum As String) As Boolean
Dim rs As Recordset
Dim rsFiltered As Recordset
Dim iSeral As Integer
'Gets different fields from different tables and store them into rs
Set rs = CurrentDb.OpenRecordset("QueryMemoOutFrm")
' Its not working during the filtering, keeps returning nothing found
rs.Filter = "Doctype='Outgoing' AND DocumentRef='" & cmNum & "'"
Set rsFiltered = rs.OpenRecordset
Do While Not rsFiltered.EOF
' Do Something
Loop
rs.Close
Set rs = Nothing
rsFiltered.Close
Set rsFiltered = Nothing
End Function
Я прочитал документацию по MSDN и не вижу, где я ошибся. (Может быть, я что-то упустил)
2 ответа
Я немного изменил коды, и это работает. Но не уверен, почему, хотя.
Private Function getCheckedRecordsFromDB(ByVal cmNum As String) As Boolean
Dim rs As Recordset
Dim rsFiltered As Recordset
Dim dSerial As Double
'Gets different fields from different tables and store them into rs
Set rs = CurrentDb.OpenRecordset("QueryMemoOutFrm")
rs.Filter = "Doctype='Outgoing' AND DocumentRef='" & cmNum & "'"
Set rsFiltered = rs.OpenRecordset
' newly added
rsFiltered.MoveFirst
Do While Not rsFiltered.EOF
dSerial = rsFiltered!SerialNo
rsFiltered.MoveNext
Loop
rs.Close
Set rs = Nothing
rsFiltered.Close
Set rsFiltered = Nothing
End Function
Гораздо проще устранить неполадки, если вы предоставляете свой реальный код посредством копирования / вставки. При этом, мне просто интересно, почему вы используете два набора записей? Получаете ли вы правильный ответ, если вы действительно делаете свой цикл на реальном фильтрованном наборе записей?
Устранить линию
Set rsFiltered = rs.OpenRecordset
Используйте этот блок кода на rs вместо rsFiltered
Do While Not rs.EOF
' Do Something
Loop