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+

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
14
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