begin process at 2008 08 22 06:39:46
1 229 780 membres
51 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : MSFlexGrid - Classification [ Archives Visual Basic / Texte ] (kuiu)

MSFlexGrid - Classification le 23/08/2005 12:39:44

kuiu

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


23-08-05

07:43:32

YYYY

30-08-05

12:04:37

ZZZZ

25-08-05

17:54:07

XXXX

Il me faut:


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.










Re : MSFlexGrid - Classification le 23/08/2005 13:09:59

jpleroisse
Bonjour,
Essaie:  MSFlexGrid1.Sort = flexSortGenericAscending

jpleroisse



Re : MSFlexGrid - Classification le 23/08/2005 14:16:46

guilleto
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

Re : MSFlexGrid - Classification le 23/08/2005 17:06:26

kuiu

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


Re : MSFlexGrid - Classification le 25/08/2005 03:10:54

kuiu

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




Classé sous : msflexgrid, date, lignes, colonne, classification

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS