'。'附近的语法错误当从Excel中查询SQL Server时
问题描述:
我已经通过Excel文件从VBscript成功连接到我们的SQL Server。我能够运行下面的查询和返回预期的结果,但现在我得到一个错误:'。'附近的语法错误当从Excel中查询SQL Server时
Incorrect syntax near '.'
我已经改变了被添加字符串休息,结束了报价行的唯一的事,符号,空格,连字符继续查询下一行。
我试过了所有的建议,我可以找到堆栈溢出,例如。删除并重新添加空格,复制/粘贴到记事本中以查找特殊字符,重新添加所有'。'。并手动添加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')
答
正如您已经注意到的,当您使用类似的字符串时很难获得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'
因为有后“ITEM_NO”缺少空间。
+0
谢谢你的帮助。我在上面的XML中添加了显然需要的空间,它起作用了!我将来一定会使用SQL格式化程序 – Liz
您可以编辑您的问题以包含SQL代码并正确格式化 – Pac0
使用存储过程是一种更好的做法,因此您不必在VB中处理长查询,它不舒服,而且更容易使用sql编辑器查找错误。 – espino316
你可能需要加倍你的双引号...... – ian0411