Vba 传递包含空格或连字符的SQL参数
A) 我正在从遗留应用程序收集数据;数据元素包含空格和连字符(CBR-CR-22-2)或(CBR-CR-22-2) B) 在VBA中,当构建函数并用这些数据元素传递SQL参数时,代码会生成错误(很多!) C) 我缩小范围以确定所有错误都是由数据元素的格式引起的 D) 导致问题的数据元素是大约30个表中的主键,由遗留应用程序生成 (参见代码)我尝试了以下语法: A)Vba 传递包含空格或连字符的SQL参数,vba,ms-access,Vba,Ms Access,A) 我正在从遗留应用程序收集数据;数据元素包含空格和连字符(CBR-CR-22-2)或(CBR-CR-22-2) B) 在VBA中,当构建函数并用这些数据元素传递SQL参数时,代码会生成错误(很多!) C) 我缩小范围以确定所有错误都是由数据元素的格式引起的 D) 导致问题的数据元素是大约30个表中的主键,由遗留应用程序生成 (参见代码)我尝试了以下语法: A) strDataElm B) [strDataElm] C) &“&strDataElm&” 在即时窗口中,它提供 SELEC
strDataElm
B) [strDataElm]
C) &“&strDataElm&”
在即时窗口中,它提供
SELECT NumeroCtl FROM tblLnkCtrl WHERE RISKID = CBR - CR - 22 - 2
在理想情况下,我希望标准数据按原样传递,即
CBR-CR-22-2
或不带空格CBR-CR-22-2
;删除连字符会带来问题,因为数据是主键,在其他应用程序中重复使用。正如前面提到的,最好使用参数化查询,但我知道连接字符串的方法太令人愉快了
试试这个:
strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE [" & strSourceFld & "] = [" & strDataElm & "]"
如果传递字段引用
这个,如果你传递值本身
strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & "'" & strDataElm & "'"
正如前面提到的,最好使用参数化查询,但我知道连接字符串的方法太令人愉快了 试试这个:
strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE [" & strSourceFld & "] = [" & strDataElm & "]"
如果传递字段引用
这个,如果你传递值本身
strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & "'" & strDataElm & "'"
首先使用实际参数,而不是串联字符串。若strSourceFld的数据类型是string,那个么应该将其放在单引号中:。。。RISKID='CBR-CR-22-2'通过使用实际参数而不是串接字符串开始。若strSourceFld的数据类型是string,那个么应该将其放在单引号中:。。。RISKID='CBR-CR-22-2'非常正确。。。使用“'”确实解决了问题。。。我保证尝试参数化查询;在目前的情况下,我必须构建与初始表中字段数量相同的查询……如果必须,请在将变量与SQL连接时使用Gustav@谢谢大家。我很好地利用了以上的一切,包括在“非常真实”网站上发现的可爱的奇迹。。。使用“'”确实解决了问题。。。我保证尝试参数化查询;在目前的情况下,我必须构建与初始表中字段数量相同的查询……如果必须,请在将变量与SQL连接时使用Gustav@谢谢大家。我很好地利用了上面的一切,包括在