【问题标题】:Microsoft Access run-time error '3075' Syntax ErrorMicrosoft Access 运行时错误“3075”语法错误
【发布时间】:2014-06-07 14:55:10
【问题描述】:

我想使用后面带有以下 VBA 的按钮删除数据库中的某些内容。

不幸的是,它给了我一个运行时错误,我不知道为什么。我查看了 Access 如何返回 SQL 语句,并且在 SQL Server 中它没有给我任何错误。

VBA:

Private Sub btnDeleteTaak_Click()
      If Not IsNull(Me.lstTaakMonteur) Then
        If Not IsNull(Me.comboMonteur.Value) Then
            If Not IsNull(Me.comboOpdracht.Value) Then
                Dim DeleteSQL As String
                DeleteSQL = "DELETE OpdrachtTaak WHERE opdrachtnr = " & Me.comboOpdracht.Value & " AND taaknr = " & Me.lstTaakMonteur.Value & " AND monteurcode = '" & Me.comboMonteur.Value & "'"
                DoCmd.RunSQL (DeleteSQL)
                Me.lstTaakMonteur.Requery
            Else
                MsgBox ("Er is geen opdracht geselecteerd")
            End If
        Else
             MsgBox ("Er is geen monteur geselecteerd")
        End If
    Else
        MsgBox ("Er is geen taak geselecteerd")
    End If
End Sub

错误:

Syntax error (missing operator) in query expression 'OpdrachtTaak WHERE opdrachtnr = 1 AND taaknr = 6 AND monteurcode = 'LM1"

表结构 OpdrachtTaak:

opdrachtnr NUMERIC(5) <pk,fk2> NOT NULL
taaknr NUMERIC(3) <pk, fk3> NOT NULL
tijdsduur NUMERIC(4,1) NULL
Monteurcode VARCHAR(3) <fk1> NULL

如果你能帮助我,那就太好了。

【问题讨论】:

  • 也许它需要一个 FROM 子句?将 SQL 更改为 DELETE * FROM OpdrachtTaak WHERE opdrachtnr... ?
  • @Acantud 哇,先生,做得很好。不要相信我错过了。感谢您的回答。
  • 你打赌,有时只需要第二双眼睛

标签: sql vba ms-access


【解决方案1】:

MS Access 数据库中的删除语句与 SQL Server 中的删除语句完全不同。 在 MS Access 中,您必须在删除查询中包含 From 语句。所以你的代码将是:

DeleteSQL = "DELETE * FROM OpdrachtTaak WHERE opdrachtnr = " & Me.comboOpdracht.Value & " AND taaknr = " & Me.lstTaakMonteur.Value & " AND monteurcode = '" & Me.comboMonteur.Value & "'"

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多