ORDENAR LISTVIEW??
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]
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]
IgorPavi
Bom Dia
Se os dados qua alimentam o ListView vierem de um RecordSet ordene direto na Instrução SQL, exemplo:
Agora se o campo for STring e não puder ser alterado mas composto de números
Até Breve
[s50]
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]
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
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
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
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
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
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
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
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
O formato do campo é assim
11,00
22,00
10,50
9,20
Não posso colocar zeros a esquerda
11,00
22,00
10,50
9,20
Não posso colocar zeros a esquerda
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 :
Ele ordena a parte alfabética, pois bem:
1º crie uma coluna escondida com tamanho 0
2º crie uma variavel tipo long ... lcontList
Bem depois disso, na rotina que vc ordena o list
é um GATO , mais deve funcionar
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