2015-04-28 20 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