Recordset VBA Access - Problème requete SQL [Résolu]

Signaler
Messages postés
2
Date d'inscription
mardi 7 septembre 2010
Statut
Membre
Dernière intervention
7 septembre 2010
-
Messages postés
2
Date d'inscription
mardi 7 septembre 2010
Statut
Membre
Dernière intervention
7 septembre 2010
-
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

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
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
Messages postés
2
Date d'inscription
mardi 7 septembre 2010
Statut
Membre
Dernière intervention
7 septembre 2010

Merci.

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