ORDENAR LISTVIEW??

USUARIO.EXCLUIDOS 06/06/2005 08:21:27
#87193
Olá!!

Estou com um grande problema!!
Quero ordenar uma listview mas a colina é numerica ai quando ordeno fica assim:

1
10
11
2
20
Será que tem como ordenar numericamente??
Grato

[txt-color=#008000]** Título Original ("SOCORRO!! ORDENAR LISTVIEW??") editado por KpellaJr
** Por favor, leia as Regras do Fórum. [/txt-color]
LCSD 06/06/2005 09:00:35
#87197
IgorPavi

Bom Dia

Se os dados qua alimentam o ListView vierem de um RecordSet ordene direto na Instrução SQL, exemplo:

sSQL = "Select * from Clientes order by CodigoCliente"


Agora se o campo for STring e não puder ser alterado mas composto de números

sSQL = "Select * from Clientes order by CInt(CodigoCliente)"


Até Breve
[s50]
USUARIO.EXCLUIDOS 06/06/2005 09:31:55
#87200
Por Sql tudo bem Funciona

Mas infelizmente não é isso que quero

Gostaria de usar o

Me.LvOrders.SortKey = ColumnHeader.Index - 1
Me.LvOrders.Sorted = True

Acho que não tem como fazer
Mesmo assim obrigado
GUTO 06/06/2005 09:41:53
#87201
meu listview esta assim

lsv.ColumnHeaders.Add , , "Código", 1000 '(título da coluna, largura da coluna)
lsv.ColumnHeaders.Add , , "Nome", 3000
lsv.ColumnHeaders.Add , , "Rua", 1500
lsv.ColumnHeaders.Add , , "Bairro", 1000
lsv.ColumnHeaders.Add , , "Cidade", 1500
lsv.ColumnHeaders.Add , , "Estado", 800


Set cnBd = New ADODB.Connection
cnBd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Bdimobiliaria.MDB;Persist Security Info=False"
Sql = "select Codigo, Nome, RuaNoti, BairroNoti, CidadeNoti, Estado from Tbl_Proprietarios order by Codigo"
Set rs = cnBd.Execute(Sql)
If rs.eof Then GoTo SemRegistro
ArrAux = rs.GetRows()
rs.Close
Set rs = Nothing
cnBd.Close
Set cnBd = Nothing
For i = 0 To UBound(ArrAux, 2)
Set item = lsv.ListItems.Add
item.Text = ArrAux(0, i) 'codigo
item.SubItems(1) = "" & ArrAux(1, i) 'nome
item.SubItems(2) = "" & ArrAux(2, i) 'ruanoti
item.SubItems(3) = "" & ArrAux(3, i) 'bairronoti
item.SubItems(4) = "" & ArrAux(4, i) 'Cidade
item.SubItems(5) = "" & ArrAux(5, i) 'Estado
USUARIO.EXCLUIDOS 06/06/2005 09:48:54
#87204
Assim funciona pq vc está usando SQL para ordenar
Eu uso além do SQL os comandos abaixo
Me.LvOrders.SortKey = ColumnHeader.Index - 1
Me.LvOrders.Sorted = True
Quando o usuário clica na coluna ela ordena
A dificuldade é que não consigo ordenar campos numéricos
USUARIO.EXCLUIDOS 06/06/2005 10:19:46
#87213
como esta o formato do campo numerico?? vamos supor que esteja assim:
00000
então deveria ter numeros assim:
00001
00002
00003
00004
00005
agora se nao estiver neste formato
1
2
3...
10
11

ele vai ordenar assim:
1
10
11
2
3

USUARIO.EXCLUIDOS 06/06/2005 10:30:22
#87216
O formato do campo é assim

11,00
22,00
10,50
9,20

Não posso colocar zeros a esquerda
LIZANDRO 06/06/2005 17:44:54
#87332
Resposta escolhida
Vale fazer um GATO ????

Olha só quando tenho problemas com ordenação do list faço assim, bem quando a consulta vem do SQL ela vem certo.

Quando vc usa o :
  
Me.LvOrders.SortKey = ColumnHeader.Index - 1
Me.LvOrders.Sorted = True

Ele ordena a parte alfabética, pois bem:
1º crie uma coluna escondida com tamanho 0
2º crie uma variavel tipo long ... lcontList
  
Set cnBd = Nothing

For i = 0 To UBound(ArrAux, 2)
lcontList = i
Set item = lsv.ListItems.Add
item.Text = ArrAux(0, i) 'codigo
item.SubItems(1) = "" & ArrAux(1, i) 'nome
item.SubItems(2) = "" & ArrAux(2, i) 'ruanoti
item.SubItems(3) = "" & ArrAux(3, i) 'bairronoti
item.SubItems(4) = "" & ArrAux(4, i) 'Cidade
item.SubItems(5) = "" & ArrAux(5, i) 'Estado
item.SubItems(6) = lcontList


Bem depois disso, na rotina que vc ordena o list

  
if ColumnHeader.Index = 1 then ' coloque o indice do campo que esta dando probema
Me.LvOrders.SortKey = 6
else
Me.LvOrders.SortKey = ColumnHeader.Index - 1
Me.LvOrders.Sorted = True
endif


é um GATO , mais deve funcionar
Tópico encerrado , respostas não são mais permitidas