SELECT PARA RETORNO DE DADOS DE [ô]DATA[ô] EM LIST

MILTONSILVA94 15/08/2015 10:40:52
#450017
Montei a rotina de pesquisar em um dos meus formularios do projeto, porém ordenei no código para que me retornasse no Listview os dados pela [ô]Data[ô], ou seja, retornaria as datas mais antigas até as mais novas.
Porém ele não faz a classificação dos dias/mês, sendo assim, ele retorna os valores:
08/11/2015
11/09/2015
11/10/2015
11/11/2015
12/12/2016
Sendo que o correto seria retornar da seguinte maneira:
11/09/2015
11/10/2015
08/11/2015
11/11/2015
12/12/2016

Estou mandando o código SQL abaixo, caso alguém consiga me auxiliar:

lsql = [Ô]SELECT * FROM AGENDAMENTOS [Ô]

If Trim(txtNome.Text) <> [Ô][Ô] & Trim(txtData.Text) <> [Ô][Ô] & Trim(cboStatusAgendamento.Text) <> [Ô][Ô] Then
lsql = lsql & [Ô] WHERE nome LIKE [ô][Ô] & Trim(txtNome.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND data LIKE [ô][Ô] & Trim(txtData.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND status_agendamento LIKE [ô][Ô] & Trim(cboStatusAgendamento.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] ORDER BY data ASC[Ô]
End If

Obrigado.
JCM0867 15/08/2015 11:47:30
#450021
no banco de dados o campo agendamentos está no formato Date?
JABA 17/08/2015 11:31:06
#450121
Talvez a formatação do seu campo data no banco esteja com o [Ô]mês[Ô] no primeiro elemento. Para corrigir isso, verifique como está a formatação da sua data no banco.
MILTONSILVA94 18/08/2015 08:19:52
#450167
Deixei como um campo [ô]texto[ô] pois ele salva neste campo o seguinte dado:
[ô]18/08/2015 08:18:52[ô].
F001E 18/08/2015 09:02:23
#450170
é por isso...campo tipo texto ele vai ordenar pelo primeiro caractere e se o banco for SQL Server o campo tipo DateTime salva desse formato que você quer.
FILMAN 18/08/2015 20:01:49
#450194
Resposta escolhida
Qual banco de dados está usando?

Tudo será melhor se o seu campo for do tipo correto, mas caso deseja permanecer como TEXTO tente assim

SQL Server
    lsql = [Ô]SELECT * FROM AGENDAMENTOS [Ô]

If Trim(txtNome.Text) <> [Ô][Ô] & Trim(txtData.Text) <> [Ô][Ô] & Trim(cboStatusAgendamento.Text) <> [Ô][Ô] Then
lsql = lsql & [Ô] WHERE nome LIKE [ô][Ô] & Trim(txtNome.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND data LIKE [ô][Ô] & Trim(txtData.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND status_agendamento LIKE [ô][Ô] & Trim(cboStatusAgendamento.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] ORDER BY Cast(data As DateTime) ASC[Ô]
End If



Access
    lsql = [Ô]SELECT * FROM AGENDAMENTOS [Ô]

If Trim(txtNome.Text) <> [Ô][Ô] & Trim(txtData.Text) <> [Ô][Ô] & Trim(cboStatusAgendamento.Text) <> [Ô][Ô] Then
lsql = lsql & [Ô] WHERE nome LIKE [ô][Ô] & Trim(txtNome.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND data LIKE [ô][Ô] & Trim(txtData.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] AND status_agendamento LIKE [ô][Ô] & Trim(cboStatusAgendamento.Text & [Ô]*[ô][Ô])
lsql = lsql & [Ô] ORDER BY CDate(Mid(data,1,10)) ASC[Ô]
End If



Acho que já resolveria, mas não é a maneira correta!
MILTONSILVA94 20/08/2015 18:59:06
#450285
Isso FILMAN, troquei para a maneira correta no BD deixando como [ô]Date[ô] e funciona corretamente.
Obrigado!
Tópico encerrado , respostas não são mais permitidas