-2

我对这个 UPDATE 查询有疑问,我收到了有关语法错误查询的消息。我认为这个查询是正确的,我找不到给出这个错误的原因。

错误链接

Private Sub cmdModifyBook_Click() 'approves modifying books to the database

Dim str As String
Dim dbs As DAO.Database

Set dbs = CurrentDb()

'checks if the typed all the data of book
If (Me.txtModifyTitle.Value = "") Or (Me.txtModifyTitleWeb.Value = "") Or (Me.txtModifyVerkaufpreis.Value = "") _
   Or (Me.txtModifyThemengruppe.Value = "") Then
   MsgBox "Nicht alle von Ihnen eingegebenen Daten"
   Exit Sub
End If

str = " UPDATE Katalog " _
    & "(Bezeichnung, BezeichnungWeb, Verkaufspreis, Themengruppe) SET " _
    & "('" & Me.txtModifyTitle.Value & "', '" & Me.txtModifyTitleWeb.Value & "', '" & Me.txtModifyVerkaufpreis.Value & "', '" & Me.txtModifyThemengruppe.Value & "') WHERE ID_Buch =" & Me.lblModifyID.Caption & ";"

dbs.Execute str, dbFailOnError

MsgBox "Das Buch wurde in der Datenbank geändert", vbInformation

dbs.Close
Set dbs = Nothing

End Sub
4

2 回答 2

1

您的代码应如下所示:

Private Sub cmdModifyBook_Click() 'approves modifying books to the database

    Dim str As String
    Dim dbs As DAO.Database

    Set dbs = CurrentDb()

    'checks if the typed all the data of book
    If (Me.txtModifyTitle.Value = "") Or (Me.txtModifyTitleWeb.Value = "") Or (Me.txtModifyVerkaufpreis.Value = "") _
       Or (Me.txtModifyThemengruppe.Value = "") Then
       MsgBox "Nicht alle von Ihnen eingegebenen Daten"
       Exit Sub
    End If

    str = "UPDATE Katalog " & _
    "SET Bezeichnung = '" & PQ(Me.txtModifyTitle.Value) & "', " & _
    "BezeichnungWeb = '" & PQ(Me.txtModifyTitleWeb.Value) & "', " & _
    "Verkaufspreis = '" & PQ(Me.txtModifyVerkaufpreis.Value) & "', " & _
    "Themengruppe = '" & PQ(Me.txtModifyThemengruppe.Value) & "' " & _
    "WHERE ID_Buch = " & Me.lblModifyID.Caption & ";"

    Debug.Print str
    MsgBox str

    dbs.Execute str, dbFailOnError

    MsgBox "Das Buch wurde in der Datenbank geändert", vbInformation

    dbs.Close
    Set dbs = Nothing

End Sub 

Private Function PQ(s as string) as String
    PQ = Replace(s, "'", "''")
End Function

请注意,您需要用两个单引号替换文本框中的值中可能存在的任何单引号,以防止 SQL 错误。这就是我发布PQ功能的原因。

于 2013-09-04T13:18:28.023 回答
-1

UPDATE命令语法如下

UPDATE Katalog 
SET
Bezeichnung = Me.txtModifyTitle.Value ,
BezeichnungWeb = Me.txtModifyTitleWeb.Value ,
Verkaufspreis = Me.txtModifyVerkaufpreis.Value,
Themengruppe = Me.txtModifyThemengruppe.Value
WHERE ID_Buch = Me.lblModifyID.Caption

当然,上面的方法现在可以工作了,因为你必须将它用于 str 变量

于 2013-09-04T13:00:52.930 回答