【发布时间】:2020-08-04 21:54:52
【问题描述】:
我正在构建一个字符串,它将在我的访问数据库中执行 sql。为了正确引用来源,我使用Allen Brown Audit 的指南作为模板来保存对我的主数据库的更改。
这是目前给我带来麻烦的代码:
' If this was not a new record, save the old values.
If Not bWasNewRecord Then
sSQL = "INSERT INTO " & sAudTmpTable & " ( audType, audDate, audUser, ID, Campus, Building, Room, `Device Type`, Model, Domain, `Serial Tag`, Barcode, HostName, `Custodian Name`, Notes ) " & _
"SELECT 'EditFrom' AS Expr1, Now() AS Expr2, NetworkUserName() AS Expr3, " & sTable & "ID, Campus, Building, Room, `Device Type`, Model, Domain, `Serial Tag`, Barcode, Hostname, `Custodian Name`, Notes " & _
"FROM " & sTable & " WHERE " & sTable & "." & sKeyField & " = " & lngKeyValue & ";"
db.Execute sSQL, dbFailOnError
End If
目前它返回“参数太少。预期为 1。”的错误,这让我认为这是 WHERE 子句和之后的字符串连接导致的。我的主要问题是这个问题是否是语法问题,我只需要在某处转义或添加双引号,还是语句的逻辑问题,以及我正在尝试做的事情:从条件,更改记录的 ID 与数据库中的 ID 匹配? 欢迎任何笔记或 cmets,感谢您的宝贵时间。
【问题讨论】:
-
Debug.Print sSQL在您的调试窗口中留下了什么?是你所期望的吗? -
我在 ssql 字符串前后各放了一个,得到:DELETE FROM tempInventoryAuditTable;插入 tempInventoryAuditTable ( audType, audDate, audUser, ID, Campus, Building, Room,
Device Type, Model, Domain,Serial Tag, Barcode, HostName,Custodian Name, Notes) SELECT 'EditFrom' AS Expr1, Now() AS Expr2, NetworkUserName() AS Expr3, InventoryID, Campus, Building, Room,Device Type, Model, Domain,Serial Tag, Barcode, Hostname,Custodian Name, Notes FROM WHERE Inventory.ID = 384;这是我所期待的,因为 ID 与我正在编辑的记录匹配 -
从这些字段中删除空格并相应地调整数据库字段属性会更好吗?
-
你用的是什么关系型数据库?
-
哪一行导致“参数太少”错误?
标签: sql vba database string character-encoding