SQL erreur non spécifiée

gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009 - 20 mai 2007 à 08:18
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009 - 21 mai 2007 à 06:31
Bonjour à tous,
Je travaille avec D7, des tables ACCESS et des composants ADO. Jusque là pas de problème, mais avec une requête SQL, j'ai le message "Erreur non spécifiée". (déjà là ca part mal)
Voici la composition des tables pour compréhension.
Table1 : TB1champs1, TB1champs2, TB1champs3, TB1champs4
Table2 : TB2champs1, TB2champs2, TB2champs3
Table3 : TB3champs1, TB3champs2
Table4 : TB4champs1
Voici la requête que je passe en variable :

'SELECT * FROM (Table1 ' +'INNER JOIN (Table2 INNER JOIN Table3 ON Table2.TB2champs2 Table3.TB3champs1) ON Table1.TB1champs1 Table2.TB2champs1) ' +
'INNER JOIN Table4 ON Table1.TB1champs2 = Table4.TB4champs1 ' +'WHERE (Table3.TB3champs2 34 ) AND (Table1.TB1champs3 "Stock") AND (Table1.TB1champs4 IS NOT NULL) ' +
'ORDER BY Table2.TB2champs3';

Si j'ouvre ACCESS et que j'applique cette requête, tout fonctionne.
Si je l'applique sous Delphi via ADO alors erreur.
Il faut savoir quand même que le SQL d'ACCESS est interprété.
Maintenant si je supprime l'INNER JOIN imbriqué :

'SELECT * FROM Table1 ' +
'INNER JOIN Table4 ON Table1.TB1champs2 = Table4.TB4champs1 ' +'WHERE (Table3.TB3champs2 34 ) AND (Table1.TB1champs3 "Stock") AND (Table1.TB1champs4 IS NOT NULL) ' +
'ORDER BY Table2.TB2champs3';

dans ce cas, tout fonctionne.
Je pense à une erreur de syntaxe....mais où ?
Bien évidemment j'ai fais le tour du net, j'ai trouvé des personnes qui avaient le même problème mais sans jamais de réponses...(sauf une qui indiquait que certaines versions de MySql ne gérait pas l'INNER JOIN, mais ce n'est pas mon cas.

Merci de votre aide
A+
A voir également:

2 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
20 mai 2007 à 22:57
Essaie Table3.TB3champs2 = "34" et aussi de récupérer le script SQL dans access et de le coller dans ADO;
@Bientôt
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009
21 mai 2007 à 06:31
Salut,
Le Table3.champs2 est un champs numérique entier, mettre les guillemets provoque une erreur.
La requête, comme elle est là, est celle qui sort directement du script d'ACCESS.
Sachant que le code SQL d'ACCESS est interprété, ce n'est peut-être pas forcémment comme ceci en SQL standard ou 92.....
A+
Merci
0
Rejoignez-nous