vba - UPDATE 语句中的运行时错误 3144 语法错误
问题描述
在访问 VBA 中更新 SQL 语句时出现错误。这是代码:
Dim id As Integer, docNo As String, pNo As String
id = Me.txtID.Value
pNo = Me.txtPENo.Value
docNo = Me.txtdocNo.Value
db.Execute ("UPDATE tblPE SET (PENo='" & pNo & "',DocNo='" & docNo & "') WHERE ID=" & id & ";")
解决方案
为了可读性和可维护性,请考虑通过QueryDefs进行参数化,并避免在 SQL 中连接和标点 VBA 变量:
Dim db As Database, qdef As QueryDef
Dim sql As String
' PREPARED STATEMENT (NO DATA)
sql = "PARAMETERS [prm_pNo] TEXT, [prm_docNo] TEXT, [prm_id] INTEGER;" _
& "UPDATE tblPE SET PENo=[prm_pNo], DocNo=[prm_docNo] WHERE ID=[prm_id];"
Set db = CurrentDb
Set qdef = db.CreateQueryDef("", sql)
' BIND PARAMS
qdef!prm_id = Me.txtID.Value
qdef!prm_pNo = Me.txtPENo.Value
qdef!prm_docNo = Me.txtdocNo.Value
' EXECUTE ACTION
qdef.Execute
' RELEASE RESOURCES
Set qdef = Nothing: Set db = Nothing
推荐阅读
- python-2.7 - 初始代码执行后,Docker 容器在代码 0 上退出
- laravel - Laravel - 联系人数据未从数据库中显示
- .htaccess - 如何删除 url codeigniter 路由 htaccess 中的某些部分
- c - 以编程方式更改 OSX 鼠标系统首选项设置(例如跟踪速度)是否可能/安全?
- ios - UICollectionView 自动滚动跳过一个项目
- ios - 在第一行开始之前添加一些空格 UITextView
- php - Laravel - 如何从另一个关系表中获取数据
- javascript - 无法使用 Testcafe 拦截来自页面的传出 AJAX 请求
- ms-access - 组合多个 INT 列以在查询中返回单个日期,我该怎么做?
- javascript - 用于删除括号内逗号的正则表达式