SORT NO MSFLEXGRID

FERNANDORUBIM 05/12/2023 14:21:15
#501915
Tenho um msflexgrid no vb6 onde tem os cabeçalhos:

nome , cidade, uf, data nascimento, data cadastro , data exclusao

como faço para ao clicar no cabeçalho fazer o sort ascendente e descente das colunas datas ??? nome,cidade,uf funcionam...as datas que estão
no formato dd/mm/yyyy classificam só pelas 2 primeiras (dd) ...como faço para classificar também pela data inteira ??

obrigado

KERPLUNK 05/12/2023 14:38:24
#501916
Quase certeza que você está passando os dados como string para o grid. A ordenação jamais deve ser feita no componente, mas sim nos dados. Então ao clicar, você deveria refazer sua query, usando a ordenação correspondente. A regra básica é: o grid só exibe dados.
3SLUIS 05/12/2023 15:44:07
#501917
Resposta escolhida
Uso dessa forma, funciona perfeitamente para datas, números e texto.

  Dim Ordem As Boolean

Private Sub grdPedidos_Click()

Dim Linha As Integer
Dim Colun As Integer
Dim SortDate As Double
Dim dt As Integer
Dim intLinha As Integer
Dim intColuna As Integer
Dim x As Integer
Dim Y As Integer
Dim Marcado As String
Dim cor As String

With grdPedidos
intLinha = .MouseRow
intColuna = .MouseCol

If intLinha = 0 And intColuna <> 1 Then 'Título
If .Col = 3 Then '<-- Aqui as colunas que são data
.Cols = .Cols + 1
Colun = .Cols - 1
.ColWidth(Colun) = 0
dt = .Col
For Linha = 1 To .Rows - 1
If .TextMatrix(Linha, dt) = "" Then
SortDate = DateValue("1/1/1990")
Else
SortDate = DateValue(.TextMatrix(Linha, dt))
End If
.TextMatrix(Linha, Colun) = SortDate
Next Linha

.Col = Colun
If Ordem Then
.Sort = flexSortNumericAscending
Else
.Sort = flexSortStringDescending
End If
Else
If .Col <> 3 Then '<-- Aqui as colunas que são texto ou número
If Ordem Then
.Sort = flexSortGenericAscending
Else
.Sort = flexSortGenericDescending
End If
End If
End If
Ordem = Not Ordem
End If
End With

End Sub
FERNANDORUBIM 05/12/2023 16:07:17
#501918
Muito obrigado 3sluis...funcionou..
Tópico encerrado , respostas não são mais permitidas