'附近的语法不正确。'从Excel查询SQL Server时

时间:2017-10-13 16:49:32

标签: sql-server excel vb.net

我已经从Excel文件中成功连接到我们的SQL Server。我能够运行以下查询并返回预期结果,但现在我收到错误:

  

''

附近的语法不正确

我唯一改变的是添加字符串分隔符,以引号,&符号,空格,连字符结束该行以继续查询以下行。

我已经尝试了我在Stack Overflow上可以找到的所有建议,例如。删除并重新添加空格,复制/粘贴到记事本中以查找特殊字符,重新添加所有'。'并手动添加CR。

还有其他想法吗?我应该使用不同的语法来分解我的查询字符串吗?

SELECT 
    IM_BARCOD.BARCOD, IM_PRC.PRC_1, IM_INV.QTY_AVAIL, IM_ITEM.DESCR, 
    IM_INV.LOC_ID, IM_INV.ITEM_NO" & _
FROM 
    BCEXP.dbo.IM_BARCOD 
INNER JOIN 
    BCEXP.dbo.IM_INV ON IM_INV.ITEM_NO = IM_BARCOD.ITEM_NO 
INNER JOIN 
    BCEXP.dbo.IM_PRC ON IM_INV.ITEM_NO = IM_PRC.ITEM_NO 
INNER JOIN 
    BCEXP.dbo.IM_ITEM ON IM_INV.ITEM_NO = IM_ITEM.ITEM_NO" & _
WHERE
    (IM_ITEM.TRK_METH = 'N' AND IM_INV.LOC_ID = 'MAIN')" & _
    AND(IM_ITEM.ITEM_VEND_NO = 'OSPR' OR IM_ITEM.ITEM_VEND_NO = 'ENZEES' 
        OR IM_ITEM.ITEM_VEND_NO = 'WM')

1 个答案:

答案 0 :(得分:2)

正如您所注意到的,当您使用类似的字符串时,很难让SQL正确。我假设您使用的是旧版本的Visual Studio,因此使SQL更具可读性的一个选项是使用XML文字,如下所示:

Dim sql = <sql>
SELECT     im_barcod.barcod, 
           im_prc.prc_1, 
           im_inv.qty_avail, 
           im_item.descr, 
           im_inv.loc_id, 
           im_inv.item_nofrom bcexp.dbo.im_barcod 
inner JOIN bcexp.dbo.im_inv 
ON         im_inv.item_no=im_barcod.item_no 
INNER JOIN bcexp.dbo.im_prc 
ON         im_inv.item_no=im_prc.item_no 
INNER JOIN bcexp.dbo.im_item 
ON         im_inv.item_no=im_item.item_nowhere(im_item.trk_meth='N' 
AND        im_inv.loc_id='MAIN') 
AND       ( 
                      im_item.item_vend_no='OSPR' 
           OR         im_item.item_vend_no='ENZEES' 
           OR         im_item.item_vend_no='WM') 
</sql>.Value()

标记<sql>的名称并不重要。您的缩进可能与显示的不同 - 我这次使用的是在线SQL格式化程序(Instant SQL Formatter)。

现在你可以看到这一切都非常糟糕

im_inv.item_no=im_item.item_nowhere(im_item.trk_meth='N'

因为在&#34; item_no&#34; 之后缺少空格。