【发布时间】:2018-06-22 08:05:55
【问题描述】:
我已经拔掉了我遗漏的最后一点,试图获得我认为通过 VBA 运行的相当简单的 SQL 语句。当语句的字符串编译时,它会切断 WHERE 子句的最后一个条件,我不知道如何修复它。请帮忙!
我的 SQL 字符串如下所示:
sSQL = "UPDATE Allocations SET WithdrawalDate =" & dThisWithdrawDate & ",Notes = '" & sNotes & "' WHERE StaffID =" & lID & " AND PatientID = " & lThisPatientID & ";"
字符串与 StaffID 变量一起编译并切断子句的 AND 部分。我做错了什么?
【问题讨论】:
-
你需要养成使用参数的习惯。 SQL 连接很危险。
-
一旦我得到它的工作,我可以尝试使用参数重构它。它用于非常有限的(本地)使用,因此风险非常低。谢谢你的建议:)
-
因为您正在使用字符串连接,所以您的 sNotes 字符串中的某些内容(撇号或回车符?)可能会以某种方式提前终止 SQL 语句。如果您想诊断问题,请向我们展示 sSQL 的确切值,或者使用适当的参数再试一次,看看问题是否消失。请记住,这不仅仅是安全问题。例如,如果您的笔记中有“不要”一词(撇号是单引号字符),那么您的语句将不起作用,因为
'将关闭Notes = ...'的打开引号 -
马特,我想你已经为我解决了这个问题。我的笔记字符串中有一个撇号。我提供了一个没有标点符号的注释字符串,它可以按照我的需要解析 SQL 语句,谢谢!
-
@DarrenBartrup-Cook :) 一个老歌,但很好看。