Prob avec une zone liste

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 23 sept. 2004 à 00:06
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 23 sept. 2004 à 21:38
Bonjour,

J'ai intégré ce code dans une feuille mais pour 300 enregistrements
c'est trés long pour le chargement.
quelqu'un peu me donner un autre possibilité pour obtenir le même résultat
merci

je rempli une zone de liste et un clic sur un item doit mettre à jour la feuille

Do Until Acceuil.Data1.Recordset.EOF

' ici on lit 243 enregistrements

lstTitre.AddItem Data1.Recordset("Titre") ', lstTitre.ListIndex
Data1.Recordset.MoveNext
Loop

Acceuil.Data1.Recordset.MoveFirst

'puis je met à jour les labels et objets de la feuille

Private Sub lstTitre_Click()

Data1.Recordset.AbsolutePosition = lstTitre.ListIndex

End Sub

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
23 sept. 2004 à 09:56
Essaye tout d'abord ceci :

Do Until Acceuil.Data1.Recordset.EOF

' ici on lit 243 enregistrements

lstTitre.AddItem Data1.Recordset("Titre") ', lstTitre.ListIndex
Data1.Recordset.MoveNext
DoEvents
Loop

Et si ca ne suffit pas :

Private Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long

Call LockWindowUpdate(lstTitre.hWnd) 'évite le raffraichissement à chaque ajout de données

Do Until Acceuil.Data1.Recordset.EOF

' ici on lit 243 enregistrements

lstTitre.AddItem Data1.Recordset("Titre") ', lstTitre.ListIndex
Data1.Recordset.MoveNext
DoEvents
Loop

Call LockWindowUpdate(False) 'réactive le raffraichissement

Sinon, si tout ceci ne te permet pas de rendre ton code plus efficace, indexe ton champ, ou utilise un DataBoundList au lieu d'un listbox classique : charger des données avec un DataBoundList est immédiat (sur une base avec 40 000 enregistrements, il faut que quelques ms pour charger les données dans la liste...)
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
23 sept. 2004 à 18:36
Merci j'ai fait les essais je gagne un peu.

J'ai bien changer ma zone de liste par un controle DataBoundlist ça fonctionne à merveille le seul prob. c'est que je ne peu pas intercepter le clic sur un Item
ce controle gère ça trés bien en interne si l'on a deux Tables liées.
dans mon cas j'ai paramétré le Databoundlist comme suis

Propriété:

.RowSource = dbTable ' Mon objet Recordset
.ListField = "Titre" '
.BoundColumn = Titre ' ça c'est mis tout seul

avec ça le data se rempli bien mais pas de modification sur ma feuille en cas de clic sur un Item. Et je ne trouve pas dans les propriétés, une qui puisse me servir pour repositionner le recordset

maintenant si je met ceci dans les autres propriétées

.DataSource = dbTable
.DataField = "Titre"

alors là ça me fait tout et n'importe quoi

j'avous que pour moi les controles data c'est pas mon truc
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
23 sept. 2004 à 18:44
Tu peux récupèrer le texte de l'item sélectionné par la propriété BoundText, et à ce moment là, tu recherche dans ton recordset l'enregistrement correspondant, puis tu déplace ton recordset sur cet enregistrement pour mettre à jour tes contrôles liés.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
23 sept. 2004 à 21:38
pfffffffffffffffff ça me saoule

bon j'ai rentré ce code

Private Sub DBList1_Click()

Dim strCriteria As StringstrCriteria "Titre '" & DBList1.BoundText & "'"

Data1.Recordset.FindFirst strCriteria

End Sub

ça marche une fois deux fois des fois 3 et puis plantage

Message d'erreur

erreur: 3077

erreur de syntaxe (opérateur absent) dans l'expression

bon j'ai compri si le titre comporte un ' c'est le plantage assuré
maintenant pour voir comment contourner le prob. c'est une autre histoire
bon je recherche la soluce ........
0
Rejoignez-nous