MS Access和Visual Basic - 插入到语句中的语法错误

时间:2015-02-16 12:54:00

标签: vba ms-access

当我想将表格中的数据发送到表格时,我收到此错误。这是我在MS Access中编写的Visual Basic代码:

Private Sub btnAdd_Click()
    CurrentDb.Execute "INSERT INTO Book(book_id,title,language_id,author_id,year_published,num_pages,publisher_id,num_copies)" & _
                      "Values (" & Null & ",'" & Me.txtTitle & "','" & Me.cbLanguage.Column(0) & "','" & Me.cbAuthor.Column(0) & "','" & Me.txtYearPublished & "','" & _
                      Me.txtNumPages & "','" & Me.cbPublisher.Column(0) & "','" & Me.txtNumCopies & "')"
End Sub

book_id是主键和自动编号。

箭头指示错误出现在第4行代码中。

2 个答案:

答案 0 :(得分:1)

您的主要问题是因为Book_ID设置为自动编号类型;它不需要传递,Access JET引擎将为您处理它。然后,您的所有值都是数字,但是当您向变量添加'时,您将其视为字符串/文本。所以你的代码需要改变为,

Private Sub btnAdd_Click()
    CurrentDb.Execute "INSERT INTO Book (title, language_id, author_id, year_published, " & _
                      "num_pages, publisher_id, num_copies) VALUES (" & Me.txtTitle & ", " & _
                      Me.cbLanguage.Column(0) & ", " & Me.cbAuthor.Column(0) & ", " & Me.txtYearPublished & _
                      ", " & Me.txtNumPages & ", " & Me.cbPublisher.Column(0) & ", " & Me.txtNumCopies & ")"
End Sub

答案 1 :(得分:1)

如果它的PK和自动递增,请不要在insert语句的任何位置包含book_id。