MS ACCESS VBA Ошибка времени выполнения «3021»; с .MoveNext - PullRequest
1 голос
/ 24 февраля 2020

это мой код

Dim Reloc, RelocPrev1, RelocPrev2 As String
Dim Blk, Blk2, Lt, Lt2, PrevDate As String
Dim LotComp, BlockComp As Integer


    Dim DB As Database
    Dim RS As Recordset

Private Sub SearchBtn_Click()

    Reloc = Me.RArea.Value

    Set DB = CurrentDb()
    Set RS = DB.OpenRecordset(Reloc, dbOpenDynaset)

    Blk = RS!Block
    Lt = RS!Lot
    Blk2 = Me.BlockTxt
    Lt2 = Me.LotTxt

    BlockComp = StrComp(Blk, Blk2, 1)
    LotComp = StrComp(Lt, Lt2, 1)

    RS.MoveFirst

    Do Until BlockComp = LotComp
        RS.MoveNext
    Loop

   Call RetrieveData

End Sub

RS! Block и RS! Lot работают нормально, только те RS.Movenext и RS.Edit, которые я пробовал, не работают. Моя таблица заполнена более чем 50 строками. Первый элемент в таблице можно просто вытянуть, я просто не могу перейти к следующему ряду с помощью RS.MoveNext

Есть идеи, как это сделать?

1 Ответ

1 голос
/ 24 февраля 2020

Вы, очевидно, ожидаете, что только 1 запись соответствует критериям. Лучше всего применить критерии фильтрации к набору записей SQL, чтобы отбирались только нужные записи, а затем проверять, является ли набор записей пустым.

К go для отдельной записи, соответствующей критериям, вместо циклического набора записей используйте FindFirst и NoMatch.

RS.FindFirst "Block='" & Blk2 & "' AND Lot='" & Lt2 & "'"
If Not RS.NoMatch Then

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...