Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 什么是;参数太少。预期1。”;关于MS Access意味着什么?_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 什么是;参数太少。预期1。”;关于MS Access意味着什么?

Ms access 什么是;参数太少。预期1。”;关于MS Access意味着什么?,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在尝试更新表单中的记录。这是一个餐厅预订系统。给定表#,表单可以让用户输入预订人的客户ID、预订时间和日期。但是,当我单击表单中的“更新”按钮时,会弹出一个文本框,其中包含以下内容: 不管我在里面放了什么,都会弹出运行时错误“参数太少,预期为1”。有时会弹出“保留错误”。有人能帮我吗?这是我完成这个项目的最后一步 这是我更新记录的代码: Private Sub Command8_Click() On Error GoTo errHandling Dim strSQL As String

我正在尝试更新表单中的记录。这是一个餐厅预订系统。给定表#,表单可以让用户输入预订人的客户ID、预订时间和日期。但是,当我单击表单中的“更新”按钮时,会弹出一个文本框,其中包含以下内容:

不管我在里面放了什么,都会弹出运行时错误“参数太少,预期为1”。有时会弹出“保留错误”。有人能帮我吗?这是我完成这个项目的最后一步

这是我更新记录的代码:

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


VBA编辑器的屏幕截图,带有
Debug.Print strSQL

请尝试以下操作

strSQL = "UPDATE tblReserve SET CustomerID = " & Me.txtCustID & _
", ResDate = " & "'" & Me.txtResDate & "'" & ", ResTime = " & "'" & Me.txtTime & "'" &  " WHERE TableNum =" & Me.TableNum
我不知道为什么在双引号中有两组双引号,我想你要找的是单引号:)


但是,有比这更好的格式化sql的方法。这好像也是家庭作业,所以好好学习吧

正如我们的[chat][1]所揭示的,问题的实质是[TableNum]是一个文本字段,因此它的值必须用引号括起来:

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

[1] :)

尝试过,但没有成功。我删除了
DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True
,并且“输入参数值”弹出窗口消失了。但它仍然不会更新。Access SQL将接受
作为字符串分隔符。在VBA中,由
分隔的字符串中的
字符将加倍,如
“Gord说”你好!“
。在构建SQL字符串后,添加一个
调试。打印strSQL
语句,然后从即时窗口(VBA编辑器中的[Crtl-G])复制它,并更新您的问题(单击上面的“编辑”链接)以向我们显示您实际尝试执行的SQL。编辑您的问题以向我们显示修改后的
命令8\u单击()
过程,其中包含
Debug.Print strSQL
语句。好的,如果执行SQL语句(
CurrentDb.Execute
)导致由
errHandling:
处理的错误,然后将永远不会执行
Debug.Print
,对吗?移动
Debug.Print
语句以立即跟随
strSQL=“UPDATE…”。。。“
更新tblReserve SET TableNum=D-02,CustomerID=3,ResDate='12/23/2013',ResTime='10:00:00 PM',其中TableNum=D-02
这是将数据输入我的表单后立即出现在我的窗口中的内容。让我们转换为参数查询将消除对引用值的需要。