我已经从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')
答案 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; 之后缺少空格。