gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 novembre 2009
-
20 mai 2007 à 08:18
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 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:
Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par exists.
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 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