2014-06-07 88 views
0

我想使用下面的VBA后面的按钮删除数据库中的某些内容。Microsoft Access运行时错误'3075'语法错误

不幸的是,它给了我一个运行时错误,我不知道为什么。我查看了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 

将是巨大的,如果你能帮助我。

+3

也许它需要一个FROM子句?将SQL更改为'DELETE * FROM OpdrachtTaak WHERE opdrachtnr ...'? – Acantud

+0

@Acantud哇,做了这项工作先生。不要相信我错过了。感谢你的回答。 – JoeriSmits

+0

你打赌,有时只需要第二套眼睛 – Acantud

回答

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 & "'"