传递包含空格或连字符的SQL参数

时间:2019-06-07 08:51:53

标签: ms-access access-vba

A)我正在从旧版应用程序收集数据;数据元素包含空格和连字符(CBR-CR-22-2)或(CBR-CR-22-2)

B)在VBA中,当构建函数并使用这些数据元素传递SQL参数时,代码会生成错误(很多!)

C)我缩小范围来确定所有错误都是由数据元素的格式引起的

D)引起问题的数据元素是大约30个表中的PRIMARY KEY,由旧版应用程序生成

(请参见代码)我尝试了语法:

A)strDataElm

B)[strDataElm]

C)& """ & strDataElm & """

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & strDataElm

在它给出的立即窗口中

    SELECT NumeroCtl FROM tblLnkCtrl WHERE RISKID = CBR - CR - 22 - 2

在理想的世界中,我希望按原样通过CBR - CR - 22 2或没有空格CBR-CR-22-2的strDataElm;删除连字符会带来问题,因为数据是主键并在其他应用程序中重复使用。.

1 个答案:

答案 0 :(得分:2)

如前所述,最好使用参数化查询,但是我知道-连接字符串的方法太令人高兴了。

尝试一下:

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE [" & strSourceFld & "] = [" & strDataElm & "]"

如果您通过字段引用

而且,如果您自己传递值

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & "'" &  strDataElm & "'"