OVH Cloud OVH Cloud

Vba Problème jointure

1 réponse
Avatar
yonialhadeff
Bonjour j'ai un probl=E8me byzarre avec Access et vba

j'ai ces deux tables
______ A ____________ B
Id __ Val __ Ordre ____ Id __ Val
1 __ X __ 1 ____ 1 __ 45
2 __ P __ 2 ____ 3 __ 96
3 __ V __ 3

Je fait un select comme ceci:
SELECT * FROM B RIGHT JOIN A ON B.Id =3D A.ID ORDER BY Ordre

je m'attend =E0 recevoir ceci dans le recordset
a=2EID __ a.val __ a.Ordre __ b.Id __ b.Val
1 __ X __ 1 __ 1 __ 45
2 __ P __ 2
3 __ V __ 3 __ 3 __ 96

MAIS NON je recois ceci:
1 __ X __ 1 __ 1 __ 45
2 __ P __ 2 __ 3 __ 96
3 __ V __ 3

Lorsque je fais un copie coll=E9 de ma requete, vers une query (en mode
sql) et que je l'ex=E9cute j'obtient bien ce qu'il faut!

Comment r=E9gler ce probl=E8me ?
voici comment je lance la requete
Set rs =3D db.OpenRecordset(Query, dbOpenForwardOnly, dbReadOnly)


Merci d'avance

yoni A

1 réponse

Avatar
Sylvain Lafontaine
Vos deux résultats sont bons. Dans le premier cas, comme vous triez par
Ordre, les valeurs nulles viennent en dernier.

Dans le deuxième cas, l'instruction Ordre n'est pas respecté par le Query
puisqu'il s'agit syntaxiquement d'une vue; ils viennent donc au hasard, soit
le plus souvent selon le stockage en mémoire. Notez cependant que dans le
deuxième cas, les résultats est réellement aléatoire et pourra être
différent d'une fois à l'autre; particulièrement dans le cas où le nombre de
résultats va augmenter.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


wrote in message
news:
Bonjour j'ai un problème byzarre avec Access et vba

j'ai ces deux tables
______ A ____________ B
Id __ Val __ Ordre ____ Id __ Val
1 __ X __ 1 ____ 1 __ 45
2 __ P __ 2 ____ 3 __ 96
3 __ V __ 3

Je fait un select comme ceci:
SELECT * FROM B RIGHT JOIN A ON B.Id = A.ID ORDER BY Ordre

je m'attend à recevoir ceci dans le recordset
a.ID __ a.val __ a.Ordre __ b.Id __ b.Val
1 __ X __ 1 __ 1 __ 45
2 __ P __ 2
3 __ V __ 3 __ 3 __ 96

MAIS NON je recois ceci:
1 __ X __ 1 __ 1 __ 45
2 __ P __ 2 __ 3 __ 96
3 __ V __ 3

Lorsque je fais un copie collé de ma requete, vers une query (en mode
sql) et que je l'exécute j'obtient bien ce qu'il faut!

Comment régler ce problème ?
voici comment je lance la requete
Set rs = db.OpenRecordset(Query, dbOpenForwardOnly, dbReadOnly)


Merci d'avance

yoni A