Tri dans un MSHFlexGrid

cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013
- 19 févr. 2007 à 08:22
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
- 21 févr. 2007 à 13:03
Bonjour

Voila j'ai des données dans une table de "4700 patient" affiche sur un MSHFlexGrid.
A l'exécution de programme elle m'affiche que  la moitié. Alors j'ai fait un tri j'ai remarque que les noms sont afficher jusqu'a la lettre "E" en ordre alphabétique.................

Salutations et Merci 

14 réponses

cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
19 févr. 2007 à 08:31
Salut,


Est-ce que tu parcoures bien ta table du début à la fin? Une question comme une autre...

A+
Exploreur
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
19 févr. 2007 à 09:06
Sois plus précis, s'il te plait.

Parles-tu de ce qui est affiché avant déroulement ?
ou
de ce que t'affiche le déroulement ?

Ce qui est affiché avant déroulement ne dépend que des propriété top.row et height de ta grille et n'a rien à voir avec un tri
0
cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

19 févr. 2007 à 16:02
Salut


ce n'est pas le probleme d'affichage mais de donnees incompletes


par exemple j'ai 4700 enregistrements le MSHFlexGrid m'affiche que 2000  enregistrements

Salutations


 
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
19 févr. 2007 à 18:17
Et comment procèdes-tu pour les afficher ?
As-tu un bout de ton code ?

MPi
0

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

Posez votre question
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
19 févr. 2007 à 18:23
Quel contrôle utilises-tu ?

un contrôle MSHFLXGD.OCX est capable de jusqu'à la limite de mémoire disponible
Ce n'est par contre pas le cas du contrôle MSFLXGRD.OCX, limité quand à lui (mémoire disponible suffisante ou non) à 350,000 total cellules

De toutes manières, même 350000 cellules paraissent duffisantes, à moins que le nombre de tes colonnes, pour 4000 lignes, soit supérieur à 350000/4000 = 87,5 !

J'ignore maintenant quelles seraient les limitations éventuelles inhérentes à ta SGBD.

Tu aurais peut-être intérêt à utiliser un filtre dans ta requête afin de n'afficher que des séries succéssives moins nombreuses d'articles (lire 4000 articles est de toutes façons assez fastifieux...)
0
cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

20 févr. 2007 à 08:32
Salut

Voici mon exemple

Private Sub Form_Load()
Adodc1.Recordset.Sort = "nom"
Text1.Text = Adodc1.Recordset.RecordCount ------->4666
End Sub

Private Sub MSHFlexGrid1_Click()
For I = 1 To Adodc1.Recordset.RecordCount
MSHFlexGrid1.Row = I
Text1.Text = I -------->2048


Next I




End Sub

ici le compteur m'affiche 4666 enregistrements ...OK

mais quand je deroule la liste "MSHFlexGrid" elle s'arrete a la lettre "E"
ca veut dire il m'affiche les Nom "A,B,C,D,E" la suite des nom ne s'affiche pas!!!!!!!!

j'ai remarque qu'il s'arreter a 2048 enregistrements 

Salutations
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
20 févr. 2007 à 11:33
De quelle façon détermines-tu le nombre de lignes de la grille ?
Est-ce qu'elle est liée au contrôle ADODC ?

Personnellement, je n'utilise jamais de contrôles Data (ADO ou DAO)
J'ai donc peu d'expérience sur leurs limitations

Peut-être pourrais-tu essayer de "forcer" le nombre de lignes de la grille dans le Form_Load (?)
Private Sub Form_Load()
Adodc1.Recordset.Sort = "nom"
Text1.Text = Adodc1.Recordset.RecordCount ------->4666
MSHFlexGrid1.Rows = Adodc1.Recordset.RecordCount

End Sub

MPi
0
cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

20 févr. 2007 à 13:57
Salut



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




L’ adodc1 permet de définir rapidement une connexion à une base de données au moyen des objets Microsoft ActiveX Data Objects (ADO)



 




Donc pour savoir le nombre d’enregistrements dans une table :


Adodc1.Recordset.RecordCount qui est égale 4666 enregistrements



 MSHFlexGrid1.Rows qui égale 2048 enregistrements



Donc le  MSHFlexGrid me donne que 2048 enre



 




Salutations
0
cs_Exploreur
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
20 févr. 2007 à 14:06
Salut,


As-tu regarder ce qui se passe dans ton code quand tu arrives donc à l'enregistrement n° 2049 ?


A+
Exploreur
0
cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

20 févr. 2007 à 16:25
Salut

 il se passe rien il m'afficher les noms en order alpahabetique de la lettre A a E
mais quand je fais un filtre par exemple un nom qui commence par F où M où N etc  il le trouve

a+ 
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
20 févr. 2007 à 16:35
Je te l'ai dit plus haut :
utilise donc des filtres et coupe ainsi en morceaux successifs moins gourmands
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
20 févr. 2007 à 23:23
>>L? adodc1 permet de définir rapidement une connexion à une base de données au >>moyen des objets Microsoft ActiveX Data Objects (ADO)

Oui, ça je le sais,
mais est-ce que la grille est liéeà cet ADODC ? ou à son Recordset, disons... Est-ce que le nombre de lignes s'ajuste automatiquement selon le Recordcount du Recordset ?

Sinon, est-ce que tu détermines à quelque part le nombre de lignes à afficher ? Dans le code ou dans les propriétés de la grille ?

MPi
0
cs_zaatout
Messages postés
156
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
20 novembre 2013

21 févr. 2007 à 08:32
Salut

L'Adodec est liee a la grille , la base de donnees et la table sont liees a l'Adodc donc toutes les donnees de la table seront affiche de A à Z

Avec datagrid ca marche de A à Z!!!!

Merci

je suis entrain d'apprendre je fais des essaies
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
21 févr. 2007 à 13:03
Ce serait donc peut-être un bug de la Flexgrid en mode "linké"
Le nombre de lignes étant 2048, ça me fait penser à une limitation "prévue" (ou non) du contrôle
2 ^ 11
ou (2 ^ 10) * 2
peu importe, mais si ç'avait été 2356 lignes, j'aurais réagi différemment
2048 fait partie des chiffres "magiques" de l'informatique

C'est un peu comme Excel qui offre des pages contenant 2 ^ 8 colonnes et 2 ^ 16 lignes

Finalement, si tu veux utiliser une Flexgrid, il te faudra probablement la charger "manuellement" sans liaison au contrôle ADODC. Avec une double-boucle, ça se fait assez bien.

MPi
0