MSFlexGrid - Classification

kuiu Messages postés 19 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 9 avril 2006 - 23 août 2005 à 12:39
kuiu Messages postés 19 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 9 avril 2006 - 25 août 2005 à 03:10
MSFlexgrid
– Classification



J'ai
une MSFlexgrid avec 3 colonnes e une dizaine de lignes.



Ces
lignes sont remplies une a une avec un bouton par des données
venant de TextBox, MaskEdBox e ListBox.



La
1º colonne correspond a un date, Format 23-08-05



La
2º colonne ce sont des heures , Format 07:52:06



La
3º c'est du texte, Hbvhigui








Avec
FlexGrid.Sort = 1.....a 9 , je peux faire des classements; cependant
ceux ci prennent en compte seulement la 3º colonne.



Je
veux classer mes lignes en ordre croissant de date et heure.









Exemple:
si j'ai








<col width=\"66\">
<col width=\"62\">
<col width=\"36\">
----

23-08-05,
07:43:32,
YYYY,

----

30-08-05,
12:04:37,
ZZZZ,

----

25-08-05,
17:54:07,
XXXX


Il
me faut:








<col width=\"66\">
<col width=\"62\">
<col width=\"36\">

----

23-08-05 |
07:43:32 |
YYYY |

----

25-08-05,
17:54:07,
XXXX,

----

30-08-05,
12:04:37,
ZZZZ


Si
quelqu'un a une solution elle sera bienvenue.



Une
solution ,mais que je ne veux pas utiliser, serait de traiter la
classification avec Excel et ensuite passer les lignes dans
MSFlexgrid; mais cela tournerait l'application dépendante de
Excel ce que je ne désire pas.



Merci
d'avance pour les réponses.

4 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
23 août 2005 à 13:09
Bonjour,

Essaie: MSFlexGrid1.Sort = flexSortGenericAscending



jpleroisse
0
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
23 août 2005 à 14:16
Salut à toi Ô programmeur,

Bon ben voilà la solution :

Avant de faire ton tri il te suffit de mettre ces 2 lignes :
MSFlexGrid1.Col = 1
MSFlexGrid1.ColSel = 1

Cela permet de savoir quelle colonne tu veux trier ! (ici la 2ème colonne) !

Ensuite tu rajoute la ligne suivante afin de faire un tri par ordre croissant !
MSFlexGrid1.Sort = flexSortGenericAscending

Et voilà !

La solution se trouvait en fait dans l'aide de l'événement 'Sort'

@+

Olivier
0
kuiu Messages postés 19 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 9 avril 2006
23 août 2005 à 17:06
Je
vous remercie pour vos réponses; j'ai fait quelques essais
mais je n'ai pas obtenu les résultats désirés.



Premièrement
je rectifie, le format des dates est 23-08-2005 et non 23-08-05.



Utilisant
" Descending " mes résultats sont montrés
du haut vers le bas de ma grille, ( ce qu'il me faut ) avec
" ascending " ils viennent du bas vers le haut.
J'ai essayé les différentes alternatives de 1 a 8 et
Col 1 ou Col 0 et sans Col ( de là c' est le texte qui
joue).



Quand
ils viennent du haut ils sont du type: par exemple décroissant
en dates.



Pour
les dates il y a un problème lorsque je change de mois, je
crois qu'il s'agit du format de celles ci, qui reprend les premiers
chiffres pour la classification, je crois qu'il faudra que je
transforme en notation américaine car j'ai 25-08-05 ,
24-08-05, 23-08-05, 08-09-05,




Ci
dessous pour éventuellement faciliter, une copie d'une partie du programe pour l'introduction des
données dans le FlexGrid.








'Numeração
das linhas a preencher, 0 = linha dos titulos



Dim
Ln As Byte








Private
Sub CmdAdTar_Click()








Ln
= Ln + 1



If
Ln > 7 Then



MsgBox
" A selecão é de no maximo 7 tarefas",
vbCritical + vbOKOnly, "Limite de tarefas permitidas"



Exit
Sub



End
If








If
LstOpc.Selected(0) Xor LstOpc.Selected(1) _



Xor
LstOpc.Selected(2) Xor LstOpc.Selected(3) _



Xor
LstOpc.Selected(4) Xor LstOpc.Selected(5) _



Xor
LstOpc.Selected(6) Xor LstOpc.Selected(7) _



Xor
LstOpc.Selected(8) Then



GridTar.Col
= 0



GridTar.Row
= Ln



GridTar.Text
= TxtData.Text



GridTar.Col
= 1



GridTar.Row
= Ln



GridTar.Text
= MaskHora.Text



GridTar.Col
= 2



GridTar.Row
= Ln



GridTar.Text
= LstOpc.Text



Cal.Visible
= True



MsgBox
" Confirmar a data do dia ou inserir uma data futura.",
vbOKOnly + vbInformation, "Seleção de data"



LstOpc.Visible
= False



CmdAdTar.Enabled
= False



Else



MsgBox
"Selecionar uma tarefa em sequencia hóraria.",
vbCritical + vbOKOnly, "Seleção indefinida"



'Zera
a numeração das linhas



Ln
= 0



CmdAdTar.Enabled
= True



End
If



GridTar.Col
= O



GridTar.ColSel
= 0



GridTar.Sort
= 4



End
Sub
0
kuiu Messages postés 19 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 9 avril 2006
25 août 2005 à 03:10
Bonsoir
ou pour certains probablement bonjour, car en fait mon horaire est
celui de la France – 05h00.



J'ai
analysé un petit peu de plus prêt le problème de
la classification et je l'ai résolu a pratiquement 99,99%.



En
fait quand on demande a MSFlexGrid d'interpréter et de classer
des dates,il ne comprend rien du tout; c'est tout comme si l'on
m'adressait la parole en anglais ou en chinois. Ses paramètres,
constantes, etc.. lui permette seulement d'interpréter des
mots et des valeurs numériques dans les cas 3 et 4.



La
solution est donc de convertir les dates et les heures en numéros
pour que la FlexGrid puissent les interpreter et les classer bien
sur avec ses limitations.



Pour
cela j'ai regroupé dans une seule colonnes les dates et les
heures, séparées par un espace et ainsi faire un tir
unique. Deux tris séparés avec des fusions seraient
plus jolis mais plus compliqués et ne sont pas dans me
nécessités.



J'utilise
une colonne invisible pour les calculs de conversion et ensuite je
fais le tri.



J
'obtient un classement du haut vers le bas en ordre décroissant;
j'aurai préféré en odre croissant mais la, une
fois de plus FlexGrid ne collabore pas beaucoup; ce doit être
possible; c'est a étudier mais comme on dit " Não
gosto de descascar um abacaxi " ( je n'aime pas d'éplucher
un ananas ) et je laisse cela pour les puristes et les spécialistes
" cada macaco no seu galho " ( chaque singe sur
sa branche).



J'ai
dis plus haut 99,99% car il y a parfois des erreurs au niveau de la
seconde; mais qui dans le cas de l'application que je prétends
ne sont pas significatives; c'est le cas par exemple:



25-08-2005
22:22:20



25-08-2005
22:22:21



25-08-2005
22:22:22








22:22:22
donne une erreur de classement; cela doit être du a
l'interprétation de la variable Double.



Ci
dessous une partie du programme relatif au classement.



Pour
mieux comprendre, La MSFlexG a pour nom GridTar cela devrait être
FlexTar, mais j'ai profité d'autres lignes de programme que
j'avais et je n'ai pas changé le nom; manque de temps et
paresse.



'Numeração das linhas a preencher, 0 = linha dos titulos.

Dim Ln As Byte

'Indice da linha a apagar.

Dim I As Byte

'Conversor de datas.

Dim Co As Double





Private Sub CmdAdTar_Click()



Ln = Ln + 1

If Ln > 7 Then

MsgBox " A selecão é de no maximo 7 tarefas", vbCritical + vbOKOnly, "Limite de tarefas permitidas"

Exit Sub

End If



If LstOpc.Selected(0) Xor LstOpc.Selected(1) _

Xor LstOpc.Selected(2) Xor LstOpc.Selected(3) _

Xor LstOpc.Selected(4) Xor LstOpc.Selected(5) _

Xor LstOpc.Selected(6) Xor LstOpc.Selected(7) _

Xor LstOpc.Selected(8) Then

GridTar.Col = 0

GridTar.Row = Ln

GridTar.Text = TxtData.Text & " " & MaskHora.Text

GridTar.Col = 1

GridTar.Row = Ln

GridTar.Text = LstOpc.Text

Cal.Visible = True

MsgBox " Confirmar a data do dia ou inserir uma data futura.", vbOKOnly + vbInformation, "Seleção de data"

LstOpc.Visible = False

CmdAdTar.Enabled = False

Else

MsgBox "Selecionar uma tarefa em sequencia hóraria.", vbCritical + vbOKOnly, "Seleção indefinida"

'Zera a numeração das linhas.

Ln = 0

CmdAdTar.Enabled = True

End If

'Chupacabra invisvel, Largura = 0.

GridTar.ColWidth(3) = 2400




'Cálculo da conversão.

Co = DateValue(GridTar.TextMatrix(Ln, 0)) + TimeValue(GridTar.TextMatrix(Ln, 0))

GridTar.TextMatrix(Ln, 3) = Co

'Classificacão.

GridTar.Col = 3

GridTar.Sort = 4

End Sub


Kuiu







Windows ME Pt-BR

IZarc 3.5.0 Pt-BR

Firefox 1.0.6 Pt-BR

OpenOffice 1.1.5 Pt-BR

Thunderbird 1.0.2 Pt-BR
0
Rejoignez-nous