Eroare de execuție 3021 – EOF sau BOF este adevărat sau înregistrarea curentă a fost ștearsă (Programare, Ms Access, Vba)

user2898085 a intrebat.
rst.Open "SELECT * FROM Equipas WHERE ([ID - Funcionário] LIKE '" & idfunc & "' AND [ID - Tarefa] LIKE ' " & idtask & "' );", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
rst.Delete adAffectCurrent
rst.Update
rst.Close

Primesc eroarea de execuție 3021, însă interogarea nu este goală.

Comentarii

  • Încercați să renunțați la ; de la sfârșitul SQL. Dacă tot nu funcționează, încercați să imprimați SQL-ul generat și să îl rulați direct în Access. –  > Por Tim Williams.
  • Problema din întrebarea duplicată a fost LIKE caracterul wild card. Deși această întrebare utilizează de asemenea LIKE, , nu există nicio indicație că este vorba de un caracter joker. –  > Por HansUp.
1 răspunsuri
HansUp

„Primesc eroarea de execuție 3021, totuși interogarea nu este goală.”

Verificați de două ori acest punct.

Dim strSelect As String
strSelect = "SELECT * FROM Equipas " & _
    "WHERE ([ID - Funcionário] LIKE '" & _
    idfunc & "' AND [ID - Tarefa] LIKE ' " & idtask & "' );"
Debug.Print strSelect
rst.Open strSelect, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
If rs.BOF And rs.EOF Then
    MsgBox "recordset is empty"
Else
    rs.MoveLast
    MsgBox "recordset contains " & rs.RecordCount & " rows"
End If
'rst.Delete adAffectCurrent
'rst.Update
rst.Close

Dacă această versiune a codului vă spune „setul de înregistrări este gol”, , mergeți la fereastra Immediate (Ctrl+g) pentru a examina SELECT instrucțiunea pe care a construit-o codul. Puteți copia textul declarației și îl puteți lipi în SQL View a unei noi interogări Access pentru testare.

Cea mai bună presupunere a mea este că interogarea nu returnează niciun rând deoarece include un spațiu chiar înainte de valoarea lui idtask, , și nici o [ID - Tarefa] valori se potrivesc cu spațiul plus idtask:

idfunc & "' AND [ID - Tarefa] LIKE ' " & idtask & "' );"
                                    ^ here