运算符/语法错误

时间:2014-04-15 21:17:37

标签: sql vba ms-access vb6

我正在VB6中执行SQL,这是我正在使用的字符串,我将currFA定义为数字1.我已经调试并在此工作,因为它使用内部联接和联合(它是我在Access中创建的一个查询,我试图将其放入VB6中运行)。现在,我在运行中遇到了操作员丢失错误。

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _
& "FROM ([~FIRE_AREAS] INNER JOIN [~ALLTARGETS] ON [~FIRE_AREAS].FULL_ID = [~ALLTARGETS].FA) INNER JOIN ([~ALLRWCBL] INNER JOIN [~ALLCBLEQ] ON" _
& "[~ALLRWCBL].Cable = [~ALLCBLEQ].Cables) ON [~ALLTARGETS].TARGET = [~ALLRWCBL].Cable" _
& "WHERE ((([~FIRE_AREAS].INDEX) = '" & currFA & "'))" _
& "UNION" _
& "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _
& "FROM [~FIRE_AREAS] INNER JOIN (([~ALLTARGETS] INNER JOIN [~ALLRWCBL] ON [~ALLTARGETS].TARGET=[~ALLRWCBL].Raceway) INNER JOIN [~ALLCBLEQ] ON" _
& "[~ALLRWCBL].Cable=[~ALLCBLEQ].Cables) ON [~FIRE_AREAS].FULL_ID=[~ALLTARGETS].FA" _
& "WHERE ((([~FIRE_AREAS].INDEX) = '" & currFA & "'));"

非常感谢有关错误和语法改进提示的任何帮助!还在学习!

谢谢!

1 个答案:

答案 0 :(得分:2)

你的字符串之间没有空格,所以当你写:

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX" _
& "FROM ([~FIRE_AREAS] …

这就像

之类的SQL字符串
SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEXFROM ([~FIRE_AREAS] …

这显然是无效的SQL,因为INDEXFROM之间没有空格。

一个简单的解决方案就是在每个结束报价之前(或在每个公开报价之后)放置一个空格:

sql = "SELECT DISTINCT [~ALLCBLEQ].Equipment, [~FIRE_AREAS].INDEX " _
    & "FROM ([~FIRE_AREAS] …

但是,如果您发现自己编写了相对复杂的查询,我建议您考虑将它们转换为存储过程或视图。