Requête unnion vb6

abdo78 Messages postés 66 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 27 novembre 2015 - 10 mai 2011 à 18:56
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Derniè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 )

svp aider moi

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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 ?

Si j'ose dire, c'est un peu n'importe quoi.
0
abdo78 Messages postés 66 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 27 novembre 2015
11 mai 2011 à 10:23
salut
a votre avis quelle méthode à suivre .
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
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

[] Ce qui va sans dire. va mieux en le disant.
0
Rejoignez-nous