簡體   English   中英

MS Access-UPDATE SQL查詢錯誤3061

[英]MS Access - UPDATE SQL Query Error 3061

我嘗試使用從InputBox傳遞的文本來更新表中的數據。

Private Sub editname_Click()

 Dim GivenNameTB As String
 Dim EnterName As String
 Dim SQl As String
 Dim LocationID As Integer


 Me.txt_name.SetFocus
 GivenNameTB = Me.txt_name.Text
 EnterName = InputBox("Change name", "Change name", GivenNameTB)
 LocationID = Me.list_ma.Column(1)

 SQl = " Update tWorkers SET GivenName = forms!mainform!EnterName WHERE tWorkers.IDName = forms!mainform!LocationID "

 CurrentDb.Execute SQl




End Sub

但是,我收到錯誤代碼3061“參數太少。預期為2”

編輯:

tWorkers的表結構:

IDName - auto-increment (primary key)
LastName - text
GivenName - text

我通過SET GivenName = ...定位GivenName列,並通過LocationID來定位行。

LocationID從列表字段list_ma中獲取其值。 列表字段由五列組成,而IDName為第二列。

我的全部要點是更新表中的字段。 我的表單中的文本框顯示了一個名稱,可以通過單擊按鈕進行編輯。 然后彈出一個輸入框。 輸入的字符串應保存在所需字段中。

重新閱讀您的問題,您的數據保存在VBA變量中,而不是表單控件中。 因此,您無法從表單中讀取參數( DoCmd.RunSQL將無濟於事)。

您必須動態構造SQL字符串,最好使用Gustav的CSql()

SQL = "Update tWorkers SET GivenName = " & CSql(EnterName) & _
      " WHERE tWorkers.IDName = " & CSql(LocationID)
Debug.Print SQL
CurrentDb.Execute SQL

我認為您需要DoCmd.RunSQL而不是CurrentDb.Execute

Private Sub editname_Click()

 Dim GivenNameTB As String
 Dim EnterName As String
 Dim SQl As String
 Dim LocationID As Integer

 Me.txt_name.SetFocus
 GivenNameTB = Me.txt_name.Text
 EnterName = InputBox("Change name", "Change name", GivenNameTB)
 LocationID = Me.list_ma.Column(1)

 SQL = " Update tWorkers SET GName = " & chr(34) & EnterName & chr(34) & " WHERE tWorkers.IDName = " & LocationID

 Debug.Print SQL -- For checking what code we are running.

 DoCmd.RunSQL SQL 

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM