SELECT PARA RETORNO DE DADOS DE [ô]DATA[ô] EM LIST
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.
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.
no banco de dados o campo agendamentos está no formato Date?
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.
Deixei como um campo [ô]texto[ô] pois ele salva neste campo o seguinte dado:
[ô]18/08/2015 08:18:52[ô].
[ô]18/08/2015 08:18:52[ô].
é 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.
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
Access
Acho que já resolveria, mas não é a maneira correta!
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!
Isso FILMAN, troquei para a maneira correta no BD deixando como [ô]Date[ô] e funciona corretamente.
Obrigado!
Obrigado!
Tópico encerrado , respostas não são mais permitidas