2013-12-11 63 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为true或当前记录已被删除

+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 

如果代码的那个版本告诉你“记录为空”,请立即窗口(按Ctrl + 克)检查SELECT语句代码构建。您可以复制语句文本并将其粘贴到新的Access查询的SQL视图中进行测试。

我最好的猜测是该查询返回任何行,因为它包含只是idtask值前一个空格,没有[ID - Tarefa]值匹配空间,加上idtask

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