【发布时间】:2023-03-26 04:45:02
【问题描述】:
我试图在访问表单中输入数据时创建一个事件,在文本框失去焦点后,如果框不为空,我希望将 ID 和值存储到另一个表中。尝试使用下面的代码后,我得到“运行时错误 3061 预期的参数太少 1”。我已经在调试模式下进行了检查,并且这些值被转移并带到了字符串中。
Private Sub Consolidate_LostFocus()
Dim queryString As String
queryString = "INSERT INTO [ReportMasterTable]([#], [Notes]) VALUES(" & [#].Value & ", " & [Consolidate].Value & ")"
If Consolidate.Text <> vbNullString Then
CurrentDb.Execute (queryString)
End If
End Sub
【问题讨论】:
-
这只是一个小型内部数据库,我们只使用它几个星期进行一些分析
-
如果您使用了参数化查询,那么您甚至不会问这个问题,因为不会有这个分隔符问题。做对就是做对。
-
访问参数查询的创建和使用相当简单。我给你的例子可能会像写的那样运行而不会出错。试试看;不喜欢就丢弃。
-
参数查询可能是一个想法,但这里还有更多的问题。这种形式可能根本不应该包含 SQL,它应该绑定到一个表或查询。在这种情况下,参数是掩盖实际设计问题的红鲱鱼。它是指一个断腿的人被割伤的手指。这就是为什么@Hogan,我没有提到参数。
-
@Remou - 我想我们需要同意不同意;一定程度的间接(即数据绑定)不会对设计产生太大影响,但不使用参数化查询或存储过程对可维护性、稳定性和安全性有很大影响。
标签: sql ms-access vba ms-access-2007