sql - From 子句中的语法错误使用 ADO 删除记录

标签 sql ms-access ado syntax-error

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

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

和想法?提前致谢!

最佳答案

您正在尝试运行操作查询,但使用记录集(需要选择查询)。

试试这个:

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) & ";"

关于sql - From 子句中的语法错误使用 ADO 删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338970/

相关文章:

python Pyodbc,无法在表中创建名为 "Date"的字段

c++ - 使用 ADO 命令对象实现大容量/批量插入

mysql - 查询结果 null 或 0

database - 如何在 MS Access 中重置自动增量字段

ms-access - 为什么我不能直接使用 CurrentDB() 方法用 vba 重新链接表?

c++ - 用户在“控制面板”->“区域和语言选项”中更改设置后修改主窗口的区域设置

sql-server - 作为 SQL Server 前端 Access - ADO 与 DAO?

sql - 直接从 C# 调用 SQL 函数

mysql - 如何选择相关帖子(类似于 Facebook 的墙)?

sql - 无法在64位SQL Server上在进程中加载​​“Microsoft.ACE.OLEDB.12.0”