TIRAR ORDENACAO DO CAMPO DATAGRID
Olá pessoal, tenho uma spread em vb 6.0 que traz 9 colunas
quando clico na primeira coluna em cima da grid data, ele ordena em ordem decrescente. E quando clico novamente ele ordena em ordem crescente. preciso que fica ordenado por ordem de data
como fazer?
Obrigada
quando clico na primeira coluna em cima da grid data, ele ordena em ordem decrescente. E quando clico novamente ele ordena em ordem crescente. preciso que fica ordenado por ordem de data
como fazer?
Obrigada
Bem, a ordenação que você efetua, ou é sobre o Recordset, ou é sobre a consulta.
Caso seja sobre o Recordset, é algo como:
Neste primeiro caso, basta remover a cláusula Sort, e re-vincular a fonte de dados, algo como no exemplo á seguir:
Há ainda a segunda hipótese, onde você ordena os registros com base na cláusula Select ao banco de dados.
Neste caso, basta que você não utilize a cláusula [Ô]Order By[Ô].
Caso seja sobre o Recordset, é algo como:
...
meuRecordset.Sort = minhaGrade.Columns(indice).DataField
...
Neste primeiro caso, basta remover a cláusula Sort, e re-vincular a fonte de dados, algo como no exemplo á seguir:
Option Explicit
Private rs As ADODB.Recordset
Private Sub Command1_Click()
Set rs = New ADODB.Recordset
With rs
.Fields.Append [Ô]Id[Ô], adBigInt, , adFldKeyColumn
.Fields.Append [Ô]Nome[Ô], adVarChar, 100
.Open
.AddNew
.Fields(0) = 1
.Fields(1) = [Ô]José[Ô]
.AddNew
.Fields(0) = 10
.Fields(1) = [Ô]Manoel[Ô]
.AddNew
.Fields(0) = 36
.Fields(1) = [Ô]Pedro[Ô]
.AddNew
.Fields(0) = 4
.Fields(1) = [Ô]Antônio[Ô]
.AddNew
.Fields(0) = 85
.Fields(1) = [Ô]Clóvis[Ô]
.AddNew
.Fields(0) = 6
.Fields(1) = [Ô]VirgÃlio[Ô]
.UpdateBatch adAffectAll
End With
Set Me.DataGrid1.DataSource = rs
End Sub
Private Sub Command2_Click()
rs.Sort = [Ô][Ô]
Set Me.DataGrid1.DataSource = rs
End Sub
Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer)
rs.Sort = DataGrid1.Columns(ColIndex).DataField
End Sub
Há ainda a segunda hipótese, onde você ordena os registros com base na cláusula Select ao banco de dados.
Neste caso, basta que você não utilize a cláusula [Ô]Order By[Ô].
Boa tarde, Professor Muito obrigada por responder
Na verdade, eu usei o sort ,e como são 9 colunas e a coluna 1 é o campo data, eu queria tirar a ordem decrescente da coluna data e colocar em ordem de data. E os outros 8 campos permanecem em ordem decrescente ,crescente e decrescente.VEJA COMO FIZ: (deste jeito esta as 9 colunas ordenando em decrescente e crescente .Mas a coluna1 a data tem que ficar em ordem de data e não decrescente e crescente.como faço?
obrigada novamente.
Public Sub SortSprData(ObjSpr As vaSpread, ByVal Col As Integer, ByVal Row As Integer, Optional ByVal RowGrandTotal As Boolean = False)
MousePointerAnt = Screen.MousePointer
With ObjSpr
If Row > .RowsFrozen Then Exit Sub
Screen.MousePointer = vbHourglass
.SortBy = SortByRow
.SortKey(1) = Col
.SortKeyOrder(1) = IIf(.SortKeyOrder(1) = SortKeyOrderDescending, SortKeyOrderAscending, SortKeyOrderDescending)
.Col = 1
.Col2 = .MaxCols
.Row = .RowsFrozen + 1
.Row2 = .MaxRows - IIf(RowGrandTotal, 1, 0)
.Action = ActionSort
.TopRow = .RowsFrozen + 1
End With
Screen.MousePointer = MousePointerAnt
End Sub
Na verdade, eu usei o sort ,e como são 9 colunas e a coluna 1 é o campo data, eu queria tirar a ordem decrescente da coluna data e colocar em ordem de data. E os outros 8 campos permanecem em ordem decrescente ,crescente e decrescente.VEJA COMO FIZ: (deste jeito esta as 9 colunas ordenando em decrescente e crescente .Mas a coluna1 a data tem que ficar em ordem de data e não decrescente e crescente.como faço?
obrigada novamente.
Public Sub SortSprData(ObjSpr As vaSpread, ByVal Col As Integer, ByVal Row As Integer, Optional ByVal RowGrandTotal As Boolean = False)
MousePointerAnt = Screen.MousePointer
With ObjSpr
If Row > .RowsFrozen Then Exit Sub
Screen.MousePointer = vbHourglass
.SortBy = SortByRow
.SortKey(1) = Col
.SortKeyOrder(1) = IIf(.SortKeyOrder(1) = SortKeyOrderDescending, SortKeyOrderAscending, SortKeyOrderDescending)
.Col = 1
.Col2 = .MaxCols
.Row = .RowsFrozen + 1
.Row2 = .MaxRows - IIf(RowGrandTotal, 1, 0)
.Action = ActionSort
.TopRow = .RowsFrozen + 1
End With
Screen.MousePointer = MousePointerAnt
End Sub
Faça seu login para responder