[..] Optimiser remplissage ListView (Requête SQLite)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

[..] Optimiser remplissage ListView (Requête SQLite)

#1

Message par Hugues »

Bonjour,

J'aimerai optimer le chargement de ma ListView suite à une requête SQLite.

En effet, le temps de remplissage de maListView est long (environ 1000 lignes...).

Je sais d'où viens la lenteur de remplissage (je remplis ma ListView ligne par ligne)
► Afficher le texte
Merci
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#2

Message par scorp84 »

Bonjour,

Regarde peut être du côté de _GUICtrlListView_AddArray()

Amicalement.

BM
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#3

Message par Hugues »

Bonjour,

Merci, j'y ai pensé aussi mais je galère...

Ce qui me ralenti aussi c'est l'alternance des couleurs des lignes de la Listview.

Il faudrait que j'utilise la fonction _SQLite_GetTable2d(), mais quand je fais un _GuiCtrlListView_AddArray(), ca me met le nom des champs, chose que je ne veux pas...

Donc je tourne en rond et ça commence à me gonfler... :twisted: :twisted:

EDIT:
Bon y'a un peu du mieux... j'arrive à supprimer la première ligne en retravaillant le tableau, ce qui nous donne:
► Afficher le texte
Maintenant, il faut que j'alterne les couleurs...
Modifié en dernier par Hugues le mer. 16 avr. 2014 14:14, modifié 1 fois.
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#4

Message par scorp84 »

Essaye peut être ça :

Code : Tout sélectionner

GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
Cela vient de ce post :
http://www.autoitscript.com/forum/topic ... /?p=699993

Amicalement.

BM
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#5

Message par mikell »

Du calme :mrgreen:

Code : Tout sélectionner

Local $array, $iRows, $iColumns
_SQLite_GetTable2d (-1, "SELECT * FROM table WHERE Stock = '0';", $array, $iRows, $iColumns)
; _ArrayDisplay($array)

For $i = 1 to UBound($array)-1
    GUICtrlCreateListViewItem($array[$i][0] & "|" & $array[$i][1] & ....etc, $listview)
Next
Et pour la couleur alternée il me semble avoir évoqué dans un autre post $GUI_BKCOLOR_LV_ALTERNATE, non ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#6

Message par Hugues »

J'ai des problèmes avec

Code : Tout sélectionner

GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
lol

A la création de mon GUI, il y a bien alternance de couleur et quand je lance ma requête et rempli cette même ListView il n'y a plus d'alternance...

:cry: :cry:
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#7

Message par scorp84 »

Peux-tu nous envoyer ton nouveau code car sans cela va être difficile de t'aider.

Amicalement.

BM
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#8

Message par Hugues »

Voici le code lorsque je charge ma base SQLite dans ma ListView au demarrage, la ListView est créé dans une autre fonction...
► Afficher le texte
Et voici le code quand je fais une recherche SQL:
► Afficher le texte
PS, je sais c'est le bordel!!! :mrgreen:
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#9

Message par scorp84 »

Je dirai à première vue que ton GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) est mal placé.

Je le mettrai juste après le GUICtrlCreateListView.

Amicalement.

BM
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#10

Message par Hugues »

J'ai fais, mais ca fait rien....
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#11

Message par scorp84 »

Envoie nous la partie de code où tu génères ton Listview.

Amicalement.

BM
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#12

Message par Hugues »

Voici la partie qui génère mon GUI:
► Afficher le texte
Après ce qui est bizarre, c'est que si je laisse le code qui est long pour afficher la ListView, si je minimise le GUI puis le Maximise, l'affichage est quasi instantané... :shock:
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#13

Message par Hugues »

Bonjour,

C'est encore moi. :mrgreen: Du coup, j'ai retravaillé mes requêtes.

Cela donne ça:
► Afficher le texte
Je passe par la fonction _SQLite_GetTable2d() pour récuperer les valeurs désirées, ensuite je retravaille le tableau de celle-ci pour ne pas avoir le nom des colonnes, puis je fais un _GUICtrlListView_AddArray().

Tout est OK, mais pour l'alternance des couleurs, je suis bloqué... je ne sais pas s'il faut utiliser WM_NOTIFY, un refresh de la ListView...

J'ai essayé plein de chose mais que néni...
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#14

Message par Hugues »

Bon j'ai presque reussi!!! :mrgreen: :mrgreen:

J'utilise ça, il faut que je le finalise...

Juste une question:

Au chargement, il ne modifie rien mais àprès requete oui... comment le faire à l'ouverture?
► Afficher le texte
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#15

Message par Hugues »

Méthode sauvage mais qui fonctionne, je lance ma fonction après la déclaration de WM_NOTIFY...

Code : Tout sélectionner

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    _LoadSQLiteData()
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#16

Message par jguinch »

Il n'y a rien de sauvage...
GUIRegisterMsg peut être lancé avant la création de la GUI. :P
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#17

Message par TommyDDR »

Désolé, j'arrive peut être un peu tard...

Si vous avez beaucoup de lignes à modifier d'un coup dans une listeview mettez juste avant la modification :

Code : Tout sélectionner

_GUICtrlListView_BeginUpdate($hListView)
et juste apres :

Code : Tout sélectionner

_GUICtrlListView_EndUpdate($hListView)
Cela empêchera la fenêtre de se redessiner pendant le changement des données.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#18

Message par Hugues »

lol, tout le monde arrive un fois que la bataille est finie MDR

C'est pas grave, ça m'a forcé à chercher dans les divers forum et à modifier des bouts de code...

Merci quand même! :mrgreen:

Je passe pas encore le sujet en résolu pour le moment car i'll be back... :mrgreen:
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#19

Message par scorp84 »

lol, tout le monde arrive une fois que la bataille est finie MDR
Sympa pour les premiers lol

Amicalement.

BM
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Optimiser remplissage ListView (Requête SQLite)

#20

Message par Hugues »

Bah je voulais pas dire ça dans ce sens :oops: :mrgreen:
Répondre