OVH Cloud OVH Cloud

votre avis sur un tri

5 réponses
Avatar
dav
en DAO avec access 2000 :
pour le résultat d'une une requete sql affichée dans un listBox : quel
est le mieux :

- prévoir le tri dans la requete par ORDER BY....
- ou mettre la propriété SORTED du ListBox à true...

cela a t-il une importance ?
quelle solution améliore le plus les performances ?

merci,
dav

5 réponses

Avatar
Pat Dev VB
Personellement, je préconise une listbox triée.Plus on peut faire simple côté
SQL, mieux c'est. Peut-être travailles-tu sur un petit volume. Mais sur un
nombre important, je pense que la différence serait sensible.

"dav" a écrit :

en DAO avec access 2000 :
pour le résultat d'une une requete sql affichée dans un listBox : quel
est le mieux :

- prévoir le tri dans la requete par ORDER BY....
- ou mettre la propriété SORTED du ListBox à true...

cela a t-il une importance ?
quelle solution améliore le plus les performances ?

merci,
dav



Avatar
Jean-Marc
"dav" a écrit dans le message de
news:41a9d143$0$17383$
en DAO avec access 2000 :
pour le résultat d'une une requete sql affichée dans un listBox : quel
est le mieux :

- prévoir le tri dans la requete par ORDER BY....
- ou mettre la propriété SORTED du ListBox à true...

cela a t-il une importance ?
quelle solution améliore le plus les performances ?



Hello,

1/ Le mieux?
dans la requête (pour diverses raisons)
2/ Cela a t-il une importance?
Ben oui :-)
3/ Performances
la solution SQL.

L'attribut Sorted des ListBox est une affreuse bidouille, lente et peu
fiable (ne marche que sur les chaines). Pour s'en convaincre:
'----
Dim t(5) As Integer
Dim i As Integer

t(1) = 1000: t(2) = 23: t(3) = 76: t(4) = 111: t(5) = 14
For i = 1 To 5
List1.AddItem t(i)
Next i
'----
Résultat:
1000
111
14
23
76

Pas vraiment ce qu'on attendait, n'est ce pas?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
Jean-Marc
Et si le résultat de sa requête ce sont des nombres, ça ne marche pas!

Pour couronner le tout, vous couplez ici de façon inutile et dangereuse
de l'affichage et de la logique. Et encore une couche, la listbox triée ne
fonctionne que sur les strings.

Quand à l'argument "faire simple coté SQL", c'est tout simplement un
non-sens. Un Order By ne complique rien, et en plus il est de bon gout de
mettre au contraire coté SQL le plus possible de processing pour ne
pas hard-coder des bidouilles dans l'interface. Il est bien plus simple de
changer une requète SQL que de changer l'interface.

Et finalement, si demain il porte son appli dans un autre
langage/environnement
graphique que VB, si il a programmé proprement en SQL, le portage est tout
simple, alors que s'il s'appuie sur des ruses de l'interface graphique, il
peut
tout simplement revoir tout son code, ajouter des fonctions, changer le SQL,
bref,
retour à la case départ.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."



"Pat Dev VB" a écrit dans le message de
news:
Personellement, je préconise une listbox triée.Plus on peut faire simple


côté
SQL, mieux c'est. Peut-être travailles-tu sur un petit volume. Mais sur un
nombre important, je pense que la différence serait sensible.

"dav" a écrit :

> en DAO avec access 2000 :
> pour le résultat d'une une requete sql affichée dans un listBox : quel
> est le mieux :
>
> - prévoir le tri dans la requete par ORDER BY....
> - ou mettre la propriété SORTED du ListBox à true...
>
> cela a t-il une importance ?
> quelle solution améliore le plus les performances ?
>
> merci,
> dav
>


Avatar
Pat Dev VB
Malgré ce que j'ai pu dire, Jean-Marc a raison mais ayant l'habitude de
travailler sur de gros volumes, je suis trés sensible à l'optimisation sql.
Si tu recherches un système de listes performantes, de toute façon, la
listbox a ses limites et il vaut mieux se diriger sur de la listview voire
des TrueDBgrid.

"Jean-Marc" a écrit :

"dav" a écrit dans le message de
news:41a9d143$0$17383$
> en DAO avec access 2000 :
> pour le résultat d'une une requete sql affichée dans un listBox : quel
> est le mieux :
>
> - prévoir le tri dans la requete par ORDER BY....
> - ou mettre la propriété SORTED du ListBox à true...
>
> cela a t-il une importance ?
> quelle solution améliore le plus les performances ?

Hello,

1/ Le mieux?
dans la requête (pour diverses raisons)
2/ Cela a t-il une importance?
Ben oui :-)
3/ Performances
la solution SQL.

L'attribut Sorted des ListBox est une affreuse bidouille, lente et peu
fiable (ne marche que sur les chaines). Pour s'en convaincre:
'----
Dim t(5) As Integer
Dim i As Integer

t(1) = 1000: t(2) = 23: t(3) = 76: t(4) = 111: t(5) = 14
For i = 1 To 5
List1.AddItem t(i)
Next i
'----
Résultat:
1000
111
14
23
76

Pas vraiment ce qu'on attendait, n'est ce pas?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."





Avatar
Jean-Marc
C'est vrai qu'optimiser le SQL est important mais mon expérience m'a
souvent montré que les BDD actuelles, quand elles sont bien configurées
sont très performantes. Les Order By en partiulier sont plutot rapides,
surtout si l'on a pris soin de créer les bons index.

Si on veut éviter le Order By et faire le boulot soi même, le TruDbGrid
est effectivement un bon choix. Une autre solution (si l'on trie sur un
seul critère) est d'utiliser un algo performant genre Quick Sort.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."


"Pat Dev VB" a écrit dans le message de
news:
Malgré ce que j'ai pu dire, Jean-Marc a raison mais ayant l'habitude de
travailler sur de gros volumes, je suis trés sensible à l'optimisation


sql.
Si tu recherches un système de listes performantes, de toute façon, la
listbox a ses limites et il vaut mieux se diriger sur de la listview voire
des TrueDBgrid.

"Jean-Marc" a écrit :

> "dav" a écrit dans le message de
> news:41a9d143$0$17383$
> > en DAO avec access 2000 :
> > pour le résultat d'une une requete sql affichée dans un listBox : quel
> > est le mieux :
> >
> > - prévoir le tri dans la requete par ORDER BY....
> > - ou mettre la propriété SORTED du ListBox à true...
> >
> > cela a t-il une importance ?
> > quelle solution améliore le plus les performances ?
>
> Hello,
>
> 1/ Le mieux?
> dans la requête (pour diverses raisons)
> 2/ Cela a t-il une importance?
> Ben oui :-)
> 3/ Performances
> la solution SQL.
>
> L'attribut Sorted des ListBox est une affreuse bidouille, lente et peu
> fiable (ne marche que sur les chaines). Pour s'en convaincre:
> '----
> Dim t(5) As Integer
> Dim i As Integer
>
> t(1) = 1000: t(2) = 23: t(3) = 76: t(4) = 111: t(5) = 14
> For i = 1 To 5
> List1.AddItem t(i)
> Next i
> '----
> Résultat:
> 1000
> 111
> 14
> 23
> 76
>
> Pas vraiment ce qu'on attendait, n'est ce pas?
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
>
>
>