2010-10-26 4 views
1

Tenir compte de cette requête d'accès:Quel est le problème avec cette requête 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; 

également ceci:

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

Cette erreur se produit à la fois:

« est pas un nom valide. Assurez-vous qu'il n'inclut pas les caractères non valides ou la ponctuation et qu'il n'est pas trop long

Comment est-ce que c'est réversible?

+0

Si vous pensez que votre requête est OK et l'accès PENSE ce n'est pas, ce n'est pas. – CanSpice

+0

Tout le code est coupable jusqu'à preuve d'innocence. Aucune exception. – Sharpie

+0

Eh bien, si votre requête est OK, que faites-vous ici? –

Répondre

1

Cette partie ici ne regarde pas à droite:

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

Si vous consolidez que sans espace, il ressemble

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

Ce qui est pas valide SQL.

+0

Il est légal de grouper des jointures en utilisant des parenthèses, bien que je l'utilise si rarement que je ne peux pas dire avec certitude si la requête OP est valide ou non, mais je pense est valable. –

+0

Ne fonctionne pas. L'accès casse les lignes. J'ai mal copié et collé. Quoi qu'il en soit, le problème est présenté – Igor

+0

Un copier-coller direct de la requête OP dans la vue SQL de la fenêtre de conception de la requête va s'exécuter. – Fionnuala

0

OK. J'ai une requête simplifiée:

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

La même erreur :)

+0

'prod_Parts' est-il une table de base ou un' VIEW' (objet Query persisté)? De toute façon, poster DDL SQL pour le recréer aiderait. 'Number' est un mot réservé dans Access (ACE, Jet, peu importe) mais le qualifier dans la clause SELECT avec le nom de la table ne devrait pas causer de problème. – onedaywhen

2

A en juger par le message d'erreur, vous avez un certain caractère de contrôle invisible dans la requête, qui est l'origine du problème. Essayez de retaper la requête à partir de zéro, et cela fonctionnera très probablement.

Side note: Je trouve plus facile de suivre les jointures si elles sont écrites dans cet ordre (c.-à la clause ON directement après chaque 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

Je l'ai considéré. Je l'ai fait avant de demander – Igor

+0

Avez-vous essayé une table dépouillée? Avez-vous vérifié la corruption? – Fionnuala

Questions connexes