Progression du chargement du recordset

[Résolu]
Signaler
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007
-
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010
-
Bonsoir,
   Voilà, j'ai fait un petit programme qui se connecte à une base à l'aide de la méthode ADO, le problème c'est que après avoir bien rempli la base , il prend plus de temps pour la charger et puisque j'ai mis le chargement au form_load , ça donne l'air de ne pas marcher .. si c'est possible y a t il une méthode de résoudre ce problème en detectant le niveau de chargment du recordset et le relier à une progressBar .. Merci d'avance !

16 réponses

Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

alors si c'est ton rs.open qui prend du temps, juste avant tu affiches une petite form sur laquelle tu mets un message d'attente (éventuellement un gif animé) et dès que ton open est fait, tu l'enlèves...
à voir
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

oui , c'est ce que j'ai fait .. merci !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
evites de mettre de long traitements dans le Form_Load.
tu peux simplement le placer dans un Timer, avec un Interval de 200, par exemple :

Private Sub CcTimerDeferLoad_Timer()
    CcTimerDeferLoad.Enabled = False

    '# Initialisation de la fenêtre
    <== Ici ton code ADO
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

Merci pour le conseil au sujet de la form load .. mais est-ce qu'il n'est pas possible de relier le chargement avec une progressbar ? ça aura l'air plus professionnel .. Merci d'avance
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
faut voir si c'est vraiment long a charger...
y'a peut-être moyen d'accelerer la chose

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

Voilà, j'ai une petite idée à chaque fois que l'utlisateur quitte l'application , je fais un savesetting du nombre d'enregistrements , au chargement de l'application je lance ma fenetre en visible=false et en meme temps une autre petite fenetre avec progressbar qui sera parametrer par le nombre d'enregistrements que j'avais enregistrer .. à la fin de la progessBar , la fentre s'affiche , que pensez-vous ? si vous croyez que ça fera l'affaire merci de m'aider à formuler tout ça ..
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
faut voir les traitemens effectués au chargement.... je suis surpris qu'une simplem requête soit si longue a executer.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

Private Sub Form_Load()
Set Con = New ADODB.Connection
Set RS = New ADODB.Recordset
'préparation de la connection
Con.ConnectionString = "c:\gmao.mdb"
Con.Provider = "Microsoft.Jet.OLEDB.4.0"
Con.Open
'Préparation du recordset
SQL_Query = "SELECT * FROM Stock"
RS.Open SQL_Query, Con, adOpenKeyset, adLockOptimistic
'fonction remplir liste
Remplir_Liste
'fonction remplir les champs
Remplir
End Sub

Function Remplir()
With RS
Ref.Text = .Fields(0)
Qua.Text = .Fields(7)
Frns.Text = .Fields(1)
Prix.Text = .Fields(5)
Nom.Text = .Fields(2)
Cat.Text = .Fields(3)
Inst.Text = .Fields(4)
Desc.Text = .Fields(8)
Dat_A.Text = .Fields(6)
End With
Ref.BackColor = &HFFFFFF
Qua.BackColor = &HFFFFFF
Frns.BackColor = &HFFFFFF
Prix.BackColor = &HFFFFFF
Nom.BackColor = &HFFFFFF
Cat.BackColor = &HFFFFFF
Inst.BackColor = &HFFFFFF
Desc.BackColor = &HFFFFFF
Dat_A.BackColor = &HFFFFFF
End Function

Function Remplir_Liste()
'remplir la liste
List_Objets.Clear
RS.MoveFirst
While Not RS.EOF
    List_Objets.AddItem RS("Reference")
    RS.MoveNext
Wend
RS.MoveFirst
List_Objets.Selected(0) = True
End Function

voilà .. je crois que le temps est proportionel au nombre d'enregistrements .. que pensez-vous de mon idée là haut ?
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

salut
je m'emm... au boulot alors tiens, je vais essayer de répondre.
Sur ta form il y a un progress bar (pb).
Dans ton Function Remplir_liste(), avant RS.MoveFirst, tu intercales RS.MoveLast puis pb.max=RS.Recordcount, enfin pb.value=0.
Ensuite avant ton RS.MoveNext tu intercale pb.value=pb.value+1...
Hein, essaye, ça me distrait...
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

oui , Merci , ça m'arange comme idée ..
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

Désolé mais ça ne marche pas .. la temps qu'il prend en chargment est relié à RS.open je crois ..
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ok avec la solution de domsig...
tu pourrais accelerer la chose en figeant le raffraichissement de ton ListBox (WM_SETREDRAW)

attention à ton :
List_Objets.Selected(0) = True

qui va se planter si tu n'as pas de reference.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
le temps ?
non, ca viens des traitements que tu te bornes à effectuer dans le Form_Load.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

oui .. exactement à cause du rs.open

La réalité n'est qu'une vaste illusion !
Messages postés
40
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
30 mars 2007

Mais bon .. merci pour ton aide et Désolé pour le dérangement ..
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

bon bah alors on kique sur réponse acceptée !