使用VBA中的UPDATE SQL语句更新Access数据库

有人可以看看一个stSQLstring,并帮助我解决与UPDATE语句相关的语法错误吗?

运行时错误“-2147217900(8004e14)”:UPDATE语句中的语法错误。

我对SQL有一个基本的理解,似乎并不了解我出错的地方。

如果FileName UserForm值与Access Db中的FileName字段匹配,我想更新表1的字段。

谢谢

Public Sub UpdateDatabaseEntry() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim stDB As String, stSQL As String, stProvider As String Dim FileName As String Dim Nickname As String Dim RecipientName As String Dim RecipientRelationship As String Dim Summary As String Dim Noteworthy As String Dim PreparedBy As String FileName = UserForm1.FileNameTextBox.Text Nickname = UserForm1.NicknameTextBox.Text RecipientName = UserForm1.RecipientNameTextBox.Text RecipientRelationship = UserForm1.RecipientRelationshipComboBox.Text Summary = UserForm1.SummaryTextBox.Text Noteworthy = UserForm1.NoteworthyCheckBox.Value PreparedBy = UserForm1.PreparedByTextBox.Text stDB = "Data Source= E:\MyDb.accdb" stProvider = "Microsoft.ACE.OLEDB.12.0" //Opening connection to database With cn .ConnectionString = stDB .Provider = stProvider .Open End With //SQL Statement telling database what to do stSQL = "UPDATE Table1" & _ "SET Nickname= '" & Nickname & "', RecipientName= '" & RecipientName & "', " & _ "RecipientRelationship= '" & RecipientRelationship & "', Summary= '" & Summary & "', " & _ "Noteworthy= '" & Noteworthy & "', PreparedBy= '" & PreparedBy & "', " & _ "WHERE FileName= '" & FileName & "'" cn.Execute stSQL cn.Close Set rs = Nothing Set cn = Nothing End Sub 

至less有一个问题是由查询中缺less空格造成的。 所以你的查询开始UPDATE Table1set

 stSQL = "UPDATE Table1 " & _ "SET Nickname= '" & Nickname & "', RecipientName= '" & RecipientName & "', " & _ "RecipientRelationship= '" & RecipientRelationship & "', Summary= '" & Summary & "', " & _ "Noteworthy= '" & Noteworthy & "', PreparedBy= '" & PreparedBy & "'" & _ "WHERE FileName= '" & FileName & "'" 

如果这不能解决问题。 然后在variablesreplace之后用stSQL的值编辑你的问题。

编辑:

正如TS指出的,另一个问题是,where (固定在上面)。