Recordset VBA Access - Problème requete SQL

Résolu
michaelkeul2 Messages postés 2 Date d'inscription mardi 7 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010 - 7 sept. 2010 à 12:20
michaelkeul2 Messages postés 2 Date d'inscription mardi 7 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010 - 7 sept. 2010 à 12:55
Bonjour,

J'ai un comportement assez bizarre d'access 2003 qui a probablement une raison d'être mais que j'ignore:

quand j'ouvre un recordset sur base d'une requete SQL dont la source est une requête access, le nombre d'élément récupéré n'est pas correct si la requête access ne fait pas l'objet d'un tri alphabétique par exemple.

Exemple:

Dim MyDB As Database
Dim Comptes As Recordset

Set MyDB = CurrentDb()
Set Comptes MyDB.OpenRecordset("SELECT * FROM Q_Comptes WHERE ID " & ID_Compte)

Admettons que ID_Compte est une variable que je récupère par une autre partie de code, que Q_Comptes est une requete access où je mixe l'info de plusieurs tables et dont le champs ID est la clé primaire.

Comptes.RecordCount ne me retourne la valeur exacte que si un champs (n'importe lequel) de ma requête access est trié d'une manière ou d'une autre (exemple: tri croissant).
Si j'enlève le tri de ma requete access, Comptes.RecordCount me retourne 1, ce qui est faut!

Je peux évidemment contourner le problème en triant systématiquement mes requêtes Access mais j'aimerais comprendre si c'est un bug ou non.

Merci à vous

2 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
7 sept. 2010 à 12:44
Bonjour,

Il me semble avoir déjà vu ce problème. Je crois qu'une facon de le contourner sans se prendre trop la tête est de faire :

Set Comptes MyDB.OpenRecordset("SELECT * FROM Q_Comptes WHERE ID " & ID_Compte)
Comptes.MoveLast
Comptes.MoveFirst


à tester
3
michaelkeul2 Messages postés 2 Date d'inscription mardi 7 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010
7 sept. 2010 à 12:55
Merci.

Effectivement ça contourne aussi le problème. J'en conclu donc que ce n'est donc pas un comportement normal.
0
Rejoignez-nous