Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 传递包含空格或连字符的SQL参数_Vba_Ms Access - Fatal编程技术网

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

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

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

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

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

D) 导致问题的数据元素是大约30个表中的主键,由遗留应用程序生成

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

A)
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@谢谢大家。我很好地利用了上面的一切,包括在