2017-10-13 114 views
-1

我已經通過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') 
+0

您可以編輯您的問題以包含SQL代碼並正確格式化 – Pac0

+0

使用存儲過程是一種更好的做法,因此您不必在VB中處理長查詢,它不舒服,而且更容易使用sql編輯器查找錯誤。 – espino316

+0

你可能需要加倍你的雙引號...... – ian0411

回答

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' 

因爲有後「ITEM_NO」缺少空間。

+0

謝謝你的幫助。我在上面的XML中添加了顯然需要的空間,它起作用了!我將來一定會使用SQL格式化程序 – Liz

相關問題