2010-10-26 141 views
1

考虑这个Access查询:此Microsoft Access查询有什么问题?

SELECT prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM prod_JT_Shipping 
INNER JOIN (prod_JobTraveller 
      INNER JOIN prod_Parts 
       ON prod_JobTraveller.PartID = prod_Parts.ID) 
    ON prod_JT_Shipping.JT_ID=prod_JobTraveller.ID; 

而且这样的:

SELECT prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM prod_Parts; 

上都出现此错误:

“不是一个有效的名称。确保它不包含无效字符或标点符号,并且不会太长

这怎么解决?

+0

如果你认为你的查询是OK和Access认为它不是,它不是。 – CanSpice 2010-10-26 21:35:47

+0

在证明无辜之前,所有的代码都是有罪的。没有例外。 – Sharpie 2010-10-26 21:36:11

+0

那么,如果你的问题没有问题,你在这里做什么? – 2010-10-26 21:36:50

回答

1

这部分在这里不看的权利:

INNER JOIN (prod_JobTraveller 
INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID) 

如果合并,没有空格,它看起来像

INNER JOIN (prod_JobTraveller INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID) 

这是不是有效的SQL。

+0

使用圆括号对连接进行分组是合法的,尽管我很少使用它,以至于我无法确定OP的查询是否有效,但我认为它已验证。 – 2010-10-26 21:35:56

+0

不起作用。访问中断线。我错误地复制和粘贴。无论如何,问题出现 – Igor 2010-10-26 21:37:36

+0

将直接将OP查询粘贴到查询设计窗口的SQL视图中。 – Fionnuala 2010-10-26 21:50:24

0

好的。我已简化查询:

SELECT prod_Parts.ID,prod_Parts.Number,prod_Parts.Revision,prod_Parts.Description FROM prod_Parts;

同样的错误:)

+0

'prod_Parts'是一个基表还是一个'VIEW'(持久查询对象)?无论哪种方式,发布SQL DDL重新创建它将有所帮助。 'Number'是Access中的一个保留字(ACE,Jet,不管),但是在SELECT子句中用表名限定它不应该引起问题。 – onedaywhen 2010-10-27 08:18:03

2

从错误信息来看,你必须在查询一些看不见的控制字符,这是造成问题。

尝试从头开始重新输入查询,它很可能会起作用。

附注:我觉得更容易遵循,如果都写在这个顺序连接(即与ON子句直接跟随每个JOIN):

SELECT 
    prod_Parts.ID, prod_Parts.Number, prod_Parts.Revision, prod_Parts.Description 
FROM 
    (
    prod_JT_Shipping 
    INNER JOIN prod_JobTraveller ON prod_JT_Shipping.JT_ID=prod_JobTraveller.ID 
) 
    INNER JOIN prod_Parts ON prod_JobTraveller.PartID = prod_Parts.ID 
+0

我考虑过了。我在提问之前做过 – Igor 2010-10-26 21:59:57

+0

您是否尝试过剥离表格?你有没有检查腐败? – Fionnuala 2010-10-26 22:00:48