【发布时间】:2018-12-12 02:03:21
【问题描述】:
我有一个名为 tb_tools 的表,其中包含以下字段:
- TOOL_ID(短文本)[key_field]
- 描述(短文本)
- 机架(短文本)
- 列(编号)
- 评论(长文本)
在名为 frm_insertion 的表单中,我有一个带有点击事件的按钮
Private Sub btn_add_Click()
Dim part_temp As String
Dim tempNum As Integer
Dim tempStr As String
tempNum = 12
tempStr = "test"
tool_temp = Nz(DLookup("[TOOL_ID]", "tb_tools", "[TOOL_ID]='" & [box_dien] & "'"), "-1")
If StrComp(tool_temp, "-1", vbTextCompare) = 0 Then
CurrentDb.Execute "INSERT INTO [tb_dies] ([TOOL_ID], [DESCRIPTION], [RACK], [COLUMN], [COMMENTS]) " _
& "VALUES (" & tool_temp & "," & tempStr & "," & tempStr & "," & tempNum & "," & tempStr & ")"
End If
End Sub
我在 INSERT INTO 行中收到错误“参数太少。应为 1”。我检查了字段名称。事实上,我是直接从表格中复制粘贴到代码中的。
我还使用了此处提供的代码: http://forums.devarticles.com/microsoft-access-development-49/check-if-a-field-exists-in-a-table-using-vba-58559.html 检查字段是否可用
【问题讨论】:
-
将你的 SQL 字符串构建成一个字符串,然后执行
currentdb.execute(ssql)。这样你就可以在执行它之前debug.print SQL或msgbox(sSQL)。我的猜测是您的变量值之一是空白,或者有需要处理的特殊字符。通过显示代码生成的 SQL,我们可以回到问题所在。考虑一下您的值是否看起来像...。似乎您的字符串值周围没有撇号,这也会导致问题。考虑使用参数化查询来避免头痛并避免 SQL 注入问题。