2015-04-28 23 views
0

我在SO上發現了類似的問題,但解決方案表示刪除了一組額外的括號。我這樣做了,但它給了我一個新的錯誤 - 「查詢表達式中的」語法錯誤(缺少運算符)「。我沒有看到另外一組括號,除了我在下面用星號標出的那一組外,我可能會刪除。 (我關注的事實是解決方案設置了括號中的)。現在我只是刪除了越來越多的括號,希望我偶然發現哪一組導致了問題。有任何想法嗎?無法表達聯接表達

編輯整個錯誤消息是「Microsoft Access不能代表在設計視圖中加入表達dbo_jobmatl.suffix = dbo_job.suffix。」「一個或多個字段可能已被刪除或重命名;名稱在聯合展示中指定的一個或多個字段或表可能拼寫錯誤;聯接可能使用在設計視圖中不受支持的運算符,如>或<。

SELECT dbo_jobmatl.item, dbo_job.whse 
FROM **(**(dbo_job INNER JOIN dbo_jobmatl ON (dbo_jobmatl.suffix = dbo_job.suffix) AND (dbo_job.job = dbo_jobmatl.job)**)** INNER JOIN dbo_ISW_LPLot ON dbo_jobmatl.item = dbo_ISW_LPLot.item) INNER JOIN (dbo_location INNER JOIN dbo_ISW_LP ON dbo_location.loc = dbo_ISW_LP.loc) ON dbo_job.whse = dbo_ISW_LP.whse 
GROUP BY dbo_job.job, dbo_job.suffix, dbo_job.item, dbo_job.job_date, dbo_jobmatl.item, dbo_job.whse, [qty_released]*[matl_qty], dbo_jobmatl.qty_issued, ([qty_released]*[matl_qty])-[qty_issued] 
HAVING (((dbo_job.job) Not Like "BM*" And (dbo_job.job) Not Like "QCBEN*" And (dbo_job.job) Not Like "QCBRU*" And (dbo_job.job) Not Like "QCKIR*" And (dbo_job.job) Not Like "SS*" And (dbo_job.job) Not Like "SU*" And (dbo_job.job) Not Like "TR*" And (dbo_job.job) Not Like "WC*" And (dbo_job.job) Not Like "WH*" And (dbo_job.job) Not Like "WT*" And (dbo_job.job) Not Like "KR*" And (dbo_job.job) Not Like "HR*") And ((dbo_job.item) Not Like "Indirect") And ((dbo_job.job_date)=Forms!MainForm!Text0)); 
+0

有更多的錯誤嗎?它是否說出語法錯誤在哪裏?你可以仔細檢查以確保您的Forms!MainForm!Text0的值是一個日期。最後,爲了好玩,在[Form]![MainForm]![Text0]之類的表單引用中的每個元素周圍放置[括號]。我的猜測是,這與括號無關。 – JNevill

+0

是的,還有更多的錯誤,我會編輯。對於那個很抱歉。 – whatwhatwhat

+0

您是否嘗試過在Access可視化編輯器中構建查詢,而不是手動編寫SQL?這可能是因爲你拼錯了一個字段名稱或類似的東西。 – citizenkong

回答

0

試試這個:

SELECT 
    dbo_jobmatl.item 
    , dbo_job.whse 
FROM 
    dbo_job 
    INNER JOIN dbo_jobmatl ON (dbo_jobmatl.suffix = dbo_job.suffix) AND (dbo_job.job = dbo_jobmatl.job) 
    INNER JOIN dbo_ISW_LPLot ON dbo_jobmatl.item = dbo_ISW_LPLot.item 
    INNER JOIN (dbo_location ON dbo_location.loc = dbo_ISW_LP.loc) 
    INNER JOIN dbo_ISW_LP ON dbo_job.whse = dbo_ISW_LP.whse 
GROUP BY 
    dbo_job.job, dbo_job.suffix, dbo_job.item, dbo_job.job_date, dbo_jobmatl.item, dbo_job.whse, [qty_released]*[matl_qty], dbo_jobmatl.qty_issued, ([qty_released]*[matl_qty])-[qty_issued] 
HAVING 
    (((dbo_job.job) Not Like "BM*" And (dbo_job.job) Not Like "QCBEN*" And (dbo_job.job) Not Like "QCBRU*" And (dbo_job.job) Not Like "QCKIR*" And (dbo_job.job) Not Like "SS*" And (dbo_job.job) Not Like "SU*" And (dbo_job.job) Not Like "TR*" And (dbo_job.job) Not Like "WC*" And (dbo_job.job) Not Like "WH*" And (dbo_job.job) Not Like "WT*" And (dbo_job.job) Not Like "KR*" And (dbo_job.job) Not Like "HR*") And ((dbo_job.item) Not Like "Indirect") And ((dbo_job.job_date)=Forms!MainForm!Text0)); 

我粘貼您的查詢文本的gedit,設置語法高亮SQL,然後上班去了格式化。這讓我看到dbo_location的某些連接語法混入了dbo_ISQ_LP的連接語法中。我沒有檢查過你的HAVING語法。

+0

我粘貼它,它沒有工作:(它給了我的錯誤「語法錯誤(缺少運算符)在查詢表達式'(dbo_jobmatl.suffix = dbo_job.suffix ....... ...................... INNER JOIN dbo_ISW_LP ON dbo_job.whse = dbo_ISW_LP.whs'。「.....」表示之間的所有內容 如果你想知道,錯誤消息似乎將「whse」切斷爲「whs」,但事實並非如此。在sql中,我粘貼了它,拼寫正確。好像錯誤消息剛剛用完 – whatwhatwhat

+0

此連接表達式與Access語法不兼容 - 它需要在連接的每個部分周圍使用括號,這是一個奇怪的野獸 – citizenkong

+0

@citizenkong我在等號相關的術語(例如() dbo_jobmatl.item = dbo_ISW_LPLot.item),但是我仍然得到相同的錯誤,我應該把它們放在一些其他條款? – whatwhatwhat