2013-12-11 6 views
0
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 

런타임 오류 3021이 표시되지만 쿼리가 비어 있지 않습니다.런타임 오류 3021 - EOF 또는 BOF가 참이거나 현재 레코드가 삭제되었습니다.

+0

은 떨어지고 시도하지 않는','의 끝에 SQL. 그래도 작동하지 않으면 생성 된 SQL을 인쇄하여 Access에서 직접 실행하십시오. –

+0

중복 질문의 문제점은'LIKE' 와일드 카드 문자였습니다. 이 질문에서도 'LIKE'을 사용하지만 와일드 카드가 관련되어 있다는 표시는 없습니다. – HansUp

답변

5

"런타임 오류 3021이 표시되지만 쿼리가 비어 있지 않습니다."

그 점을 다시 확인하십시오.

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 

코드의 버전이 "레코드가 비어있는"것을 요구하면 코드가 내장 된 SELECT 문을 검사하기 위해 직접 실행 창 (Ctrl 키 + g)로 이동합니다. 명령문 텍스트를 복사하여 테스트 용 새 Access 쿼리의 SQL보기에 붙여 넣을 수 있습니다.

내 추측은 그냥 idtask의 값 앞에 공백이 포함되어 있기 때문에 쿼리에 행을 반환하고, 더 [ID - Tarefa] 값이 일치 공간 플러스 idtask :

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