2013-12-08 50 views
1

我試圖在我的表單中更新記錄。這是一家餐廳預訂系統。給定表#,表格可以讓用戶輸入預約人的客戶ID,預約時間和日期。但是,當我點擊我的形式「更新」按鈕,文本框會彈出這樣的:什麼是「參數太少,預期1」。在MS Access的意思是?

enter image description here

而且不管我把它,運行時錯誤「太少參數預期的1。 「彈出。有時會彈出一個「保留錯誤」。有人能幫助我嗎?這是我終於可以完成這個項目的最後一步。

這是我更新記錄代碼:VBA編輯器與Debug.Print strSQL

+1

添加'Debug.Print strSQL'聲明在你構建你的SQL字符串之後,從立即窗口(VBA編輯器中的[Crtl-G])複製它並更新你的問題(點擊上面的「編輯」鏈接)向我們展示你實際嘗試的SQL執行。 –

+0

什麼也沒有發生...... – nutellafella

+0

編輯你的問題,向我們展示修改後的'Command8_Click()'過程和'Debug.Print strSQL'語句。 –

回答

0

Private Sub Command8_Click() 
On Error GoTo errHandling 

Dim strSQL As String 

strSQL = "UPDATE tblReserve SET CustomerID = " & """" & Me.txtCustID & """" & _ 
", ResDate = " & """" & Me.txtResDate & """" & ", ResTime = " & """" & Me.txtTime &  """" & " WHERE TableNum =" & Me.TableNum 

DoCmd.SetWarnings False 
DoCmd.RunSQL strSQL 
DoCmd.SetWarnings True 
CurrentDb.Execute strSQL, dbFailOnError 

DoCmd.Close 
Exit Sub 
errHandling: 
MsgBox Err.Description 
End Sub 

enter image description here

截圖嘗試是這樣的

strSQL = "UPDATE tblReserve SET CustomerID = " & Me.txtCustID & _ 
", ResDate = " & "'" & Me.txtResDate & "'" & ", ResTime = " & "'" & Me.txtTime & "'" & " WHERE TableNum =" & Me.TableNum 

我不知道爲什麼你在d裏有兩組雙引號雙引號,我認爲你在找什麼是單引號:)

但是,有很多更好的方式來格式化sql比這。此外,這似乎是功課,所以研究!

+0

嘗試過,但沒有奏效。我刪除了'DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True'並且「輸入參數值」彈出窗口消失了。但它仍然不會更新。 – nutellafella

+0

訪問SQL將接受''''或'''作爲字符串分隔符,在VBA中'''分隔的字符串中的字符會加倍,如「Gord說」「Hello!」「 '。 –

2

正如我們chat透露,問題的實質是,[tableNum中]是一個文本字段,因此它的值必須用引號括起來:

"... WHERE TableNum = '" & Me.TableNum & "'" 
+1

轉換爲參數查詢將消除對引用值的需要。 – HansUp

相關問題