用于存储字符串值的VBA(AUTOCAD)SQL查询
我有一个小问题,我正在尝试用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 下一个 端接头用于存储字符串值的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
仔细查找输入错误:
descToReturn = rst![My Coulmn]
你可能是说:
descToReturn = rst![My Column]
看到区别了吗?所以,我找到了答案,因为我在VBA环境中引入了SQL,语法不正确,语法怪异: SQL查询的正确语法:
StrQuery = "SELECT * FROM [My Table] WHERE [My Column]= '" & partNoToCheck & "'"
我猜这个专栏实际上不是我的专栏,而且它被弄糊涂了。但你可能是对的。是的,雅各布的评论是对的,我的专栏是我所指的实际专栏的假想名称。这里是否输入错误无关紧要。这不是奇怪的语法。这是在VB中连接字符串的方式。您可能还需要重新计算代码。如果您只希望返回一个值,或者只使用一列,那么此代码并不完全适用。它可以做得更好。请查看为什么不应该这样做。Jaberwocky,我更习惯于使用面向C和Java的语言,因此,使用“&”而不是+进行连接我发现这有点难以理解。是的,我只是希望每次返回一列值。因此,这是适合我的参数,我的代码结构与我在这里发布的不同,以缩短我的增长功能,但感谢您的建议。