Notifications
Clear all

Listview - Ordenar data e hora

4 Posts
2 Usuários
0 Reactions
2,039 Visualizações
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Pessoal,

Seguinte, em uma aplicação que estou desenvolvendo, tenho um comando para carregar um listview com as seguintes colunas:

Data Hora Usuário

Estou ordenando a exibição dos dados pela data como podem ver no código abaixo:

sql = " SELECT * FROM Registros "
sql = sql & " WHERE Cpf = '" & nCpf & "' AND Servico = '" & "Rota" & "'"
sql = sql & " ORDER BY Data"

Ocorre que o comando acima ordena pelo dia da data. Ex:

03/07/2012
04/07/2012
26/06/2012
27/06/2012

Eu queria ver a possibilidade de ordenar primeiramente pelo mês, depois o dia. Ficaria assim:

26/06/2012
27/06/2012
03/07/2012
04/07/2012

Tem jeito?

Valeu.

 
Postado : 04/07/2012 3:07 pm
benzadeus
(@benzadeus)
Posts: 78
Trusted Member
 

Por algum motivo que não tenho como saber agora (provavelmente os registros entraram na sua tabela como texto), as datas não estão sendo consideradas números de série e por isso você está obtendo o resultado errado.
Experimente trocar o seu trecho de código pelo mostrado abaixo:

SQL = "SELECT * FROM Registros "
SQL = SQL & " WHERE Cpf = '" & nCpf & "' AND Servico = '" & "Rota" & "'"
SQL = SQL & " ORDER BY Year(Data), Month(Data), Day(Data)"

Felipe Costa Gualberto
Microsoft Excel MVP
http://www.ambienteoffice.com.br

 
Postado : 06/07/2012 1:49 pm
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Por algum motivo que não tenho como saber agora (provavelmente os registros entraram na sua tabela como texto), as datas não estão sendo consideradas números de série e por isso você está obtendo o resultado errado.
Experimente trocar o seu trecho de código pelo mostrado abaixo:

SQL = "SELECT * FROM Registros "
SQL = SQL & " WHERE Cpf = '" & nCpf & "' AND Servico = '" & "Rota" & "'"
SQL = SQL & " ORDER BY Year(Data), Month(Data), Day(Data)"

Benzadeus, desculpe a demora na resposta.
Sua sugestão não trouxe o resultado esperado, mas consegui resolver provisoriamente eliminando o ORDER BY e deixando na ordem da própria tabela do access que em tese está mais em ordem do que se eu "cismar" de colocá-la em ordem cronológica.

Agora você fez uma colocação pertinente e que realmente procede. Eu estou tratando minhas datas como texto, por conseguir trabalhar melhor assim, e também por falta de maldade na programação já que sou amador.

Qual (ais) problema(s) posso enfrentar se persistir com essa técnica?

Obrigado.

At

 
Postado : 13/07/2012 7:37 am
benzadeus
(@benzadeus)
Posts: 78
Trusted Member
 

Desculpe a demora, estive ausente nos últimos dias.
Quando se trata principalmente de Excel, é interessante manter todo dado numérico como números mesmo. O Excel é muito poderoso para mostrar dados numéricos a um usuário da forma que bem desejarmos. Por exemplo, a data 18/07/2012 pode ser mostrada como 41108, como quarta-feira, 18 de julho de 2012 e de qualquer forma que desejar, bastando alterar a formatação de exibição da coluna que contém as datas.
No entanto, se você utilizar as datas como texto e precisar mostrá-las em outro formato (como jul/2012 ao invés de julho/2012), terá primeiramente que transformá-las em número, depois em texto. São dois passos, sendo que nem sempre o primeiro passo (transformar de texto para número) é simples.
Particularmente para o Excel, montar um relatório de tabela dinâmica quando as datas são tratadas como um texto, pode se tornar um pesadelo.
Acho que vale a pena você tentar trabalhar com datas em seu formato de número.

Felipe Costa Gualberto
Microsoft Excel MVP
http://www.ambienteoffice.com.br

 
Postado : 18/07/2012 4:12 pm