Progression du chargement du recordset

Résolu
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007 - 30 août 2006 à 02:11
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010 - 31 août 2006 à 10:09
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

domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
30 août 2006 à 16:05
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
3
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
31 août 2006 à 00:36
oui , c'est ce que j'ai fait .. merci !
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 09:24
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
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 13:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 14:27
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
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 14:29
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 ..
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 14:33
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
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 14:43
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 ?
0
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
30 août 2006 à 15:05
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...
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 15:12
oui , Merci , ça m'arange comme idée ..
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 15:24
Désolé mais ça ne marche pas .. la temps qu'il prend en chargment est relié à RS.open je crois ..
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 15:25
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 15:27
le temps ?
non, ca viens des traitements que tu te bornes à effectuer dans le Form_Load.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 15:46
oui .. exactement à cause du rs.open

La réalité n'est qu'une vaste illusion !
0
jhon_smith Messages postés 40 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 30 mars 2007
30 août 2006 à 15:52
Mais bon .. merci pour ton aide et Désolé pour le dérangement ..
0
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
31 août 2006 à 10:09
bon bah alors on kique sur réponse acceptée !
0
Rejoignez-nous