TIRAR ORDENACAO DO CAMPO DATAGRID

MARINA33 24/05/2013 14:42:12
#423987
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
PROFESSOR 26/05/2013 15:41:45
#424042
Bem, a ordenação que você efetua, ou é sobre o Recordset, ou é sobre a consulta.
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[Ô].




MARINA33 27/05/2013 12:07:52
#424085
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
Faça seu login para responder