2012-02-18 64 views
1

我正在使用ADO删除MS Access 2007数据库中的记录,并且完全丧失了为什么我的SQL代码出现此语法错误。它声称在FROM子句中有一个错误,但我没有看到它。我使用同一个表直接从另一个模块中的工作SQL语句中获取FROM子句。我已经将代码输入到新查询的SQL视图中,并且运行得很好。这里是代码:From子句中的语法错误使用ADO删除记录

Private Sub cmdDeleteMessage_Click() 

    If MsgBox("Once you delete a message, it cannot be undone." & _ 
    "Are you sure you want to delete this message?", vbYesNo) = vbYes Then 
    Dim sql As String 
    Dim rsDel As New ADODB.Recordset 
    rsDel.CursorType = adOpenDynamic 
    rsDel.LockType = adLockOptimistic 
    sql = "DELETE * FROM [Staff Notes] WHERE [MsgID] = " & Me.txtMsgID.Value & ";" 

    rsDel.Open sql, CurrentProject.AccessConnection, , , adCmdTable 

     With rsDelete 
      .Update 
      .Close 
     End With 
    End If 

End Sub 

和想法?提前致谢!

回答

1

你试图运行一个操作查询,但使用一个记录集(它期望一个选择查询)。

试试这个:

sql = "DELETE * FROM [Staff Notes] WHERE [MsgID] = " & Me.txtMsgID.Value & ";" 
CurrentProject.AccessConnection.Execute sql, , adExecuteNoRecords 

而且,如果[的MsgID]是一个字符串,你需要放在引号你的价值:

sql = "DELETE * FROM [Staff Notes] WHERE [MsgID] = " & Chr$(34) & Me.txtMsgID.Value & Chr$(34) & ";" 
+0

它的工作原理!干杯!我最初尝试一个选择,然后删除记录,并得到相同的结果。我仍然困惑,为什么我可以添加记录到记录集,但无法删除它们。我能看到的唯一真正的区别是我没有使用SQL语句来打开我希望添加到的表。猜猜这会造成所有不同。无论如何,感谢您的帮助! – Eyowzitgoin 2012-02-20 02:43:48