abdo78
Messages postés66Date d'inscriptionmercredi 6 février 2008StatutMembreDernière intervention27 novembre 2015
-
10 mai 2011 à 18:56
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
11 mai 2011 à 11:56
salut
je suis entrain de programmer une application sous vb6,je veux créer une requête union de 2 requête . voila mon code :
1er requête : * Set rs db1.OpenRecordset("select SECTION, LibelleSEC,sum(Z1)as M1,sum(Z2)as M2, from ANALYTIQUE where LEFT(section,1) '1' Group by SECTION, LibelleSEC order by [SECTION]")
2eme requête : * Set Rec6 dbasesté.OpenRecordset("select section,speculation, sum(z5)+sum(6)as m13 from analytique1 where speculation '" & rec5!code & "' GROUP BY section,speculation ")
- sql1 "select SECTION, LibelleSEC,sum(Z1)as M1,sum(Z2)as M2, from ANALYTIQUE where LEFT(section,1) '1' Group by SECTION, LibelleSEC order by [SECTION]")
- sql2 "select section,speculation, sum(z5)+sum(6)as m13 from analytique where speculation '" & rec5!code & "' GROUP BY section,speculation "
requête union ***** Set rec db1.OpenRecordset("select section,rec!m1,rec!m2,rec6!m13 from '" & sql1 & "' RIGHT JOIN '" & sql2 & "' on rs!section rec6!section order by [section]")
quant j execute un message s'affiche : erreur de syntaxe dans la requête .la clause de la requête est incomplète.(la requête union )
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 mai 2011 à 01:07
Salut
Un Union sur des requêtes ?
Idée bizarre.
Je ne sais pas si ça existe, mais c'est la première fois que je vois ça.
De toute façon, dans ta dernière requête, tu mélanges le monde VB avec le monde SQL.
Tout ce que tu nets dans une requête SQL ne fait référence qu'a ce qui existe dans tes tables, c'est tout. On ne peut pas coller des rappels de valeurs d'objets appartenant à VB comme tu l'as fait avec rec!m1.
Dans ta dernière requête, tu fais référence à rec!m1
Si cela avait été correct, tu aurais dû utiliser la syntaxe du genre :
"select section, " & rec!m1 & ", " & rec!m2 & ", ...
Mais comme rec est l'objet dans lequel tu es en train de travailler, ça n'a aucun sens.
D'autre part, rec!m1 représente le contenu du champ, et là, tu le mets dans la liste des champs : on devrait donc y voir le NOM d'un champ, pas son contenu.
Toujours dans cette même requête, tu écris
... from '" & sql1 & "...
From ne peut s'adresser qu'à une/des table/s, rien d'autre. Pourquoi veux-tu lui faire avaler la syntaxe d'une autre requête SQL ?
Reprenons aussi la deuxième requête.
where speculation = '" & rec5!code & "'
C'est quoi rec5!code ? quel objet ?
Ce genre de syntaxe doit représenter la valeur d'un des champs d'un RecordSet.
Or, une requête peut fournir plusieurs résultats dans un RecordSet. Quelle valeur penses-tu que le programme prendra ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 11 mai 2011 à 11:56
salut,
les requetes UNION existe bel et bien.
Seulement il faut que :
-Le noombre de champs Select soit identique.
-Le libelle ou l' alias soit identique.
Exemple:
"SELECT ch1, ch2, ch3+ch4 AS alias1 FROM TABL1 UNION SELECT 2ch As ch1, ch2, 2ch3+2ch4 AS alias1 FROM TABL2;"
Remarquer que si les champs des deux tables ne portent pas le même nom, il faut
utiliser un alias commun.
Le resultat de cette requete renvoi:
ch1, ch2, alias1