OVH Cloud OVH Cloud

probleme lenteur remplir treeview

8 réponses
Avatar
John Smith
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et il a
environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1 ghz de
mémoire vive
Voici le code

Ca donne ce genre de treeview

Site 1
10 mars 2006
11 mars 2006
Site 2
1 janvier 2006
2 janvier 2006


Dim sSQL As String
sSQL = "SELECT Principale.Echantillon"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Echantillon"
sSQL = sSQL & " ORDER BY Principale.Echantillon;"
valeur sSQL, 1
Do Until recvaleur(1).EOF
TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
recvaleur(1)("Echantillon"), 1
sSQL = "SELECT Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Statut,"
sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m %Y') as
Mydate,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
recvaleur(1)("Echantillon") & "'))"
sSQL = sSQL & " ORDER BY Mydate;"
valeur sSQL, 2
encours = False
Do Until recvaleur(2).EOF
TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild, "S1;" &
recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
CInt(recvaleur(2)("statut"))
recvaleur(2).MoveNext
Loop
recvaleur(1).MoveNext
Loop
Closeconnection

8 réponses

Avatar
Jean-Marc
"John Smith" a écrit dans le message de
news:BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et


il a
environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1


ghz de
mémoire vive
Voici le code



<snip le code>

Hello,

un grand classique, la solution l'est tout autant:
Rendre le control Enbaled = false, ou encore mieux,
invisible, le temps du chargement.
On peut par exemple afficher qq chose par dessus le
temps du load.

En faisant comme ça, le chargement ne prendra plus que
quelques 1/10 de secondes.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
John Smith
Héhé déja essayer... et ca change rien



"Jean-Marc" wrote in message
news:441ee89f$0$13889$
"John Smith" a écrit dans le message de
news:BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et


il a
environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1


ghz de
mémoire vive
Voici le code



<snip le code>

Hello,

un grand classique, la solution l'est tout autant:
Rendre le control Enbaled = false, ou encore mieux,
invisible, le temps du chargement.
On peut par exemple afficher qq chose par dessus le
temps du load.

En faisant comme ça, le chargement ne prendra plus que
quelques 1/10 de secondes.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
Jean-Marc
Je ne sais pas à quoi ressemblent tes data. Essaie de faire
ta requête sans remplir le treeview, et regarde si par
hasard ce n'est pas la query qui consomme tout le temps.

Parce que franchement, si même avec le treeview invisible ca
prend du temps, c'est la query qui est fautive.

Remplir 100 éléments dans un treeview, c'est de toute façon
super rapide.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



"John Smith" a écrit dans le message de
news:KkDTf.4202$
Héhé déja essayer... et ca change rien



"Jean-Marc" wrote in message
news:441ee89f$0$13889$
> "John Smith" a écrit dans le message de
> news:BmyTf.3797$
>> Salut,
>>
>> J'ai un probleme à remplir un treeview. C'est terriblement long...


et
> il a
>> environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1
> ghz de
>> mémoire vive
>> Voici le code
>
> <snip le code>
>
> Hello,
>
> un grand classique, la solution l'est tout autant:
> Rendre le control Enbaled = false, ou encore mieux,
> invisible, le temps du chargement.
> On peut par exemple afficher qq chose par dessus le
> temps du load.
>
> En faisant comme ça, le chargement ne prendra plus que
> quelques 1/10 de secondes.
>
> --
> Jean-marc
> Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
> "There are only 10 kind of people
> those who understand binary and those who don't."
> mailto: remove '_no_spam_' ;
>




Avatar
driss hanib
utilise éventuellement l'APi LockWindowUpdate avec comme paramètre le
handle de ton treeview
pour relacher l'affichage utilise comme paramètre 0

Driss

"John Smith" a écrit dans le message de news:
BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et il a
environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1 ghz de
mémoire vive
Voici le code

Ca donne ce genre de treeview

Site 1
10 mars 2006
11 mars 2006
Site 2
1 janvier 2006
2 janvier 2006


Dim sSQL As String
sSQL = "SELECT Principale.Echantillon"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Echantillon"
sSQL = sSQL & " ORDER BY Principale.Echantillon;"
valeur sSQL, 1
Do Until recvaleur(1).EOF
TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
recvaleur(1)("Echantillon"), 1
sSQL = "SELECT Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Statut,"
sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m %Y') as
Mydate,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
recvaleur(1)("Echantillon") & "'))"
sSQL = sSQL & " ORDER BY Mydate;"
valeur sSQL, 2
encours = False
Do Until recvaleur(2).EOF
TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild, "S1;" &
recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
CInt(recvaleur(2)("statut"))
recvaleur(2).MoveNext
Loop
recvaleur(1).MoveNext
Loop
Closeconnection




Avatar
John Smith
Salut

Merci beaucoup pour vos réponses finalement c'Est la requete le trouble....


"driss hanib" wrote in message
news:
utilise éventuellement l'APi LockWindowUpdate avec comme paramètre le
handle de ton treeview
pour relacher l'affichage utilise comme paramètre 0

Driss

"John Smith" a écrit dans le message de news:
BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et il
a environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1 ghz
de mémoire vive
Voici le code

Ca donne ce genre de treeview

Site 1
10 mars 2006
11 mars 2006
Site 2
1 janvier 2006
2 janvier 2006


Dim sSQL As String
sSQL = "SELECT Principale.Echantillon"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Echantillon"
sSQL = sSQL & " ORDER BY Principale.Echantillon;"
valeur sSQL, 1
Do Until recvaleur(1).EOF
TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
recvaleur(1)("Echantillon"), 1
sSQL = "SELECT Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Statut,"
sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m %Y') as
Mydate,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
recvaleur(1)("Echantillon") & "'))"
sSQL = sSQL & " ORDER BY Mydate;"
valeur sSQL, 2
encours = False
Do Until recvaleur(2).EOF
TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild, "S1;" &
recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
CInt(recvaleur(2)("statut"))
recvaleur(2).MoveNext
Loop
recvaleur(1).MoveNext
Loop
Closeconnection








Avatar
Jean-Marc
J'en étais sur :-)

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;


"John Smith" a écrit dans le message de
news:uGWTf.4771$
Salut

Merci beaucoup pour vos réponses finalement c'Est la requete le


trouble....


"driss hanib" wrote in message
news:
> utilise éventuellement l'APi LockWindowUpdate avec comme paramètre


le
> handle de ton treeview
> pour relacher l'affichage utilise comme paramètre 0
>
> Driss
>
> "John Smith" a écrit dans le message de news:
> BmyTf.3797$
>> Salut,
>>
>> J'ai un probleme à remplir un treeview. C'est terriblement long...


et il
>> a environ une centaine de donné (15 secondes) avec un ordi 2 ghz et


1 ghz
>> de mémoire vive
>> Voici le code
>>
>> Ca donne ce genre de treeview
>>
>> Site 1
>> 10 mars 2006
>> 11 mars 2006
>> Site 2
>> 1 janvier 2006
>> 2 janvier 2006
>>
>>
>> Dim sSQL As String
>> sSQL = "SELECT Principale.Echantillon"
>> sSQL = sSQL & " FROM Principale"
>> sSQL = sSQL & " GROUP BY Principale.Echantillon"
>> sSQL = sSQL & " ORDER BY Principale.Echantillon;"
>> valeur sSQL, 1
>> Do Until recvaleur(1).EOF
>> TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
>> recvaleur(1)("Echantillon"), 1
>> sSQL = "SELECT Principale.Projet,"
>> sSQL = sSQL & " Principale.Echantillon,"
>> sSQL = sSQL & " Principale.Statut,"
>> sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m


%Y') as
>> Mydate,"
>> sSQL = sSQL & " Principale.Dateprelevement"
>> sSQL = sSQL & " FROM Principale"
>> sSQL = sSQL & " GROUP BY Principale.Projet,"
>> sSQL = sSQL & " Principale.Echantillon,"
>> sSQL = sSQL & " Principale.Dateprelevement"
>> sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
>> recvaleur(1)("Echantillon") & "'))"
>> sSQL = sSQL & " ORDER BY Mydate;"
>> valeur sSQL, 2
>> encours = False
>> Do Until recvaleur(2).EOF
>> TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild,


"S1;" &
>> recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
>> frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
>> CInt(recvaleur(2)("statut"))
>> recvaleur(2).MoveNext
>> Loop
>> recvaleur(1).MoveNext
>> Loop
>> Closeconnection
>>
>>
>
>




Avatar
riki
John Smith a écrit :
Salut

Merci beaucoup pour vos réponses finalement c'Est la requete le trouble....


"driss hanib" wrote in message
news:
utilise éventuellement l'APi LockWindowUpdate avec comme paramètre le
handle de ton treeview
pour relacher l'affichage utilise comme paramètre 0

Driss

"John Smith" a écrit dans le message de news:
BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et il
a environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1 ghz
de mémoire vive
Voici le code

Ca donne ce genre de treeview

Site 1
10 mars 2006
11 mars 2006
Site 2
1 janvier 2006
2 janvier 2006


Dim sSQL As String
sSQL = "SELECT Principale.Echantillon"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Echantillon"
sSQL = sSQL & " ORDER BY Principale.Echantillon;"
valeur sSQL, 1
Do Until recvaleur(1).EOF
TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
recvaleur(1)("Echantillon"), 1
sSQL = "SELECT Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Statut,"
sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m %Y') as
Mydate,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
recvaleur(1)("Echantillon") & "'))"
sSQL = sSQL & " ORDER BY Mydate;"
valeur sSQL, 2
encours = False
Do Until recvaleur(2).EOF
TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild, "S1;" &
recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
CInt(recvaleur(2)("statut"))
recvaleur(2).MoveNext
Loop
recvaleur(1).MoveNext
Loop
Closeconnection











Bonjour,

Chargez, remplissez toujours vos treeviews en mode hide et une fois le
treeview charger, afficher le, pour un gain de vitesse.

Cordialement,

EG.
Avatar
Driss HANIB
Si tu as beaucoup de données, et si tu as différents niveaux de noeuds, ne
crée d'abord que le premier niveau et lorsque que tu cliques sur un de ces
noeuds,alors seulement ne chargement que les données correspondant aux
noeuds fils...
Cela diminue aussi letemps de chargement.

Driss
"John Smith" a écrit dans le message de news:
uGWTf.4771$
Salut

Merci beaucoup pour vos réponses finalement c'Est la requete le
trouble....


"driss hanib" wrote in message
news:
utilise éventuellement l'APi LockWindowUpdate avec comme paramètre le
handle de ton treeview
pour relacher l'affichage utilise comme paramètre 0

Driss

"John Smith" a écrit dans le message de news:
BmyTf.3797$
Salut,

J'ai un probleme à remplir un treeview. C'est terriblement long... et il
a environ une centaine de donné (15 secondes) avec un ordi 2 ghz et 1
ghz de mémoire vive
Voici le code

Ca donne ce genre de treeview

Site 1
10 mars 2006
11 mars 2006
Site 2
1 janvier 2006
2 janvier 2006


Dim sSQL As String
sSQL = "SELECT Principale.Echantillon"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Echantillon"
sSQL = sSQL & " ORDER BY Principale.Echantillon;"
valeur sSQL, 1
Do Until recvaleur(1).EOF
TreeView1.Nodes.Add , , "M" & recvaleur(1)("Echantillon"),
recvaleur(1)("Echantillon"), 1
sSQL = "SELECT Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Statut,"
sSQL = sSQL & " str_to_date(Principale.Dateprelevement,'%d %m %Y')
as Mydate,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " FROM Principale"
sSQL = sSQL & " GROUP BY Principale.Projet,"
sSQL = sSQL & " Principale.Echantillon,"
sSQL = sSQL & " Principale.Dateprelevement"
sSQL = sSQL & " HAVING (((Principale.Echantillon)='" &
recvaleur(1)("Echantillon") & "'))"
sSQL = sSQL & " ORDER BY Mydate;"
valeur sSQL, 2
encours = False
Do Until recvaleur(2).EOF
TreeView1.Nodes.Add "M" & recvaleur(1)("Echantillon"), tvwChild, "S1;" &
recvaleur(1)("Echantillon") & ";" & recvaleur(2)("projet"),
frenchdate(recvaleur(2)("Dateprelevement"), , strlang),
CInt(recvaleur(2)("statut"))
recvaleur(2).MoveNext
Loop
recvaleur(1).MoveNext
Loop
Closeconnection