VBA Excel + Access : PB de MoveFirst, MoveNext, BOF et EOF [Résolu]

Signaler
Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009
-
Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009
-
Bonjour Tout le monde :) !!

Bon ben voilà je vais essayer d'être clair sur un problème bête et assez surprenant ( du moins je suis assez surpris du comportement de VBA ).
J'ai une base de donnée possédant une table, cette table est alimentée par une importation d'un fichier txt.
Pour le bon fonctionnement de ma macro je me dois de trier la table suivant un champ numérique ( c'est ici que le problème se créé ! ) Access me trie la table et le résultat visible à l'écran est celui attendu .
Maintenant que ma base de donnée est prete à être traité , je lance ma macro Excel. Le but de cette macro est, à partir de la base de donnée me générer des fichiers TXT sous un format spécifique. La macro ouvre donc la base de donnée je crée mes differents recordset de cette façon :
Set DB_Compte = DBEngine.Workspaces(0).OpenDatabase(ThisWorkbook.Path & "\fichiersentree" & S_NomFichier)
Set RS_BSEG = DB_Compte.OpenRecordset("BSEG", dbOpenTable)
Set RS_BKPF = DB_Compte.OpenRecordset("BKPF", dbOpenTable)
et je place mon recordset sur ce que je pensais être la premiere occurence par RS_BSEG.MoveFirst et là SURPRISE !
Je m'aperçois que les données qu'il me rapatrie du movefirst ne correspond pas à la premiere occurence de ma table. De même le MoveNext ne suis pas l'ordre des lignes de ma table .... :(
Après analyse je m'aperçois ( à mon grand désarroi ) qu'il a gardé en mémoire l'ordre d'importation des données !!!
Quelqu'un peut il m'expliquer comment faire pour lire la base de donnée dans l'ordre que j'ai trié

Merci d'avance à tous ceux qui passeront du temps dessus

Bon code à tous !!!

Le Troll

4 réponses

Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Access peut effectivement trier ta table selon une colonne, mais d''après ce que je sais, il n'effectue aucune modification sur les données stockées, c'est juste un paramètre d'affichage.

La seule façon que je vois de remédier à ton problème est de trier tes données avant de les inserer dans la table.. mais pour faire ca ca va dépendre de la taille de ton fichier d'origine, et du mode de fonctionnement précis de ta base.

Une solution à mon avis simple serait de garder ton fonctionnement actuel, et lorsque tu veux générer des fichiers triés, tu utilises un select into order by pour trier une table temporaire et travailler sur celle la.

Ca te permet en plus d'avoir un moyen de retour en cas de pépin ;)

Y'a surement plus efficace, mais ca à le mérite d'être simple

voila voila

A.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009

Bon je te remercie mais la solution de trier les données n'ai pas jouable,
je viens d'apprendre la volumetrie à traiter et elle dépasse les 25 millions de lignes ( je sais même pas si Access a les moyens de traiter tout ça )
Je crois que la solution de la table temporaire est la meilleur en termes de sécurité des données et de fiabilité par contre je suis assez deçu de l'implementation apporté par Microsoft à ce logiciel :(
mais bon on peut pas avoir le beurre, l'argent du beurre et la cremiere donc je vais essayer et voir ce que ça donne

Merci bcp pour ta solution :)

Gottferdom !!!!
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Pour l'expérience que j'en ai, tu vas avoir du mal à traiter ce genre de volumes avec access -_-

A ta place je changerai le plus vite possible de SGBD

Bon courage ^^
A.
Messages postés
80
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
2 octobre 2009

Hmm je dois dire que ca fait longtemps que j'aurai changé de systeme aussi bien pour les automates que pour les bases de donnée cependant le client est roi et celui ci nous a imposé Excel et Access comme environemment de travail je suis moyenement content mais bon on fait avec :)
Sur ceux je te remercie pour l'aide je vais essayer de trouver une astuce biedon pour savoir comment traiter cette volumetrie de taré ......

Allé bonne journée et bon code

Gottferdom !!!!