Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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(AUTOCAD)SQL查询_Sql_Vba_Autocad - Fatal编程技术网

用于存储字符串值的VBA(AUTOCAD)SQL查询

用于存储字符串值的VBA(AUTOCAD)SQL查询,sql,vba,autocad,Sql,Vba,Autocad,我有一个小问题,我正在尝试用VBA为Autocad编写宏。 我试图通过发送连接到数据库服务器的SQL本机查询来读取某个列值。 问题是,我的字符串变量descToReturn将保存该列的值,但它返回null。我似乎不知道我错在哪里。如果有人能给我建议那就太好了 下面是代码: 专用子B重复单击 将cnn设置为ADODB.Connection 将rst设置为ADODB.Recordset Dim ConnectionString作为字符串 作为字符串的Dim StrQuery 尺寸BOMLineToC

我有一个小问题,我正在尝试用VBA为Autocad编写宏。 我试图通过发送连接到数据库服务器的SQL本机查询来读取某个列值。 问题是,我的字符串变量descToReturn将保存该列的值,但它返回null。我似乎不知道我错在哪里。如果有人能给我建议那就太好了

下面是代码:

专用子B重复单击 将cnn设置为ADODB.Connection 将rst设置为ADODB.Recordset Dim ConnectionString作为字符串 作为字符串的Dim StrQuery 尺寸BOMLineToCheck作为AcadBlockReference Dim BOMAttributes作为变体 Dim PART检查为字符串 作为整数的Dim i 变暗后还原为字符串 ConnectionString=Provider=SQLxxxxx.1;密码=xxxx;持久安全信息=True;用户ID=xxxx;数据源=xx\xx;使用准备程序=1;自动翻译=真;数据包大小=4096;对数据使用加密=False;可能时使用列排序规则标记=False;初始目录=xxx\u xxx 设置cnn=newadodb.Connection cnn.ConnectionString=连接字符串 有线电视新闻网,开门 'cnn.CommandTimeout=900 Set rst=New ADODB.Recordset StrQuery=从[My Table Name]中选择*,其中[My Column]=“partNoToCheck” 对于ThisDrawing.ModelSpace中的每个BOMLineToCheck 如果BOMLineToCheck.Name=BOM3LINE\u old,则 BOMAttributes=BOMLineToCheck.GetAttributes 对于i=0到UBoundBOMAttributes 如果BOMAttributesi.TagString=零件,则 partNoToCheck=BOMAttributesi.TextString 如果结束 接下来我 如果结束 rst.打开StrQuery、cnn、adOpenDynamic 用rst 如果不是,那么EOF descToReturn=rst![我的同事] 如果结束 以 rst.关闭 MsgBox descToReturn 下一个 端接头
仔细查找输入错误:

descToReturn = rst![My Coulmn]
你可能是说:

descToReturn = rst![My Column]

看到区别了吗?

所以,我找到了答案,因为我在VBA环境中引入了SQL,语法不正确,语法怪异:

SQL查询的正确语法:

StrQuery = "SELECT * FROM [My Table] WHERE [My Column]= '" & partNoToCheck & "'"

我猜这个专栏实际上不是我的专栏,而且它被弄糊涂了。但你可能是对的。是的,雅各布的评论是对的,我的专栏是我所指的实际专栏的假想名称。这里是否输入错误无关紧要。这不是奇怪的语法。这是在VB中连接字符串的方式。您可能还需要重新计算代码。如果您只希望返回一个值,或者只使用一列,那么此代码并不完全适用。它可以做得更好。请查看为什么不应该这样做。Jaberwocky,我更习惯于使用面向C和Java的语言,因此,使用“&”而不是+进行连接我发现这有点难以理解。是的,我只是希望每次返回一列值。因此,这是适合我的参数,我的代码结构与我在这里发布的不同,以缩短我的增长功能,但感谢您的建议。