Ir para conteúdo
Fórum Script Brasil
  • 0

Order By Com Datas


Gabriel Cabral

Pergunta

Olá pessoal....

procurei aki no forum e em outros lugares mas não axei nada sobre isso....

o problema é o seguinte...

Tenho um campo q armazena datas...mas este campo é do tipo texto...

as datas armazenadas são do tipo dd/mm/aa....

então faço um select e quero q num MSHFlexGrid, os registros fiquem ordenados por data.....

StringSQL = "SELECT * FROM Tabela ORDER BY Campo_Data"

mas o que acontece é que fica ordenado por dia..depois por mes...

ficando por exemplo:

03/08/07

04/08/07

04/09/07

05/08/07

05/09/07

06/01/07

Uma solução seria mudar o campo para o tipo data/hora....

mas ele ficaria m/d/aa

e eu preciso q ele fique dd/mm/aa

o que posso fazer???

Obrigado

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

a solucao seria sim mudar pra data/hora, mas essa mascara m/d/aa depende da configuracao do windows e pode ser mudada. alem do mais, se você usa visual basic, na hora de mostrar a data pode formatar como quiser com a funcao format.

mas se quiser dexar como texto tenta fazer o select assim:

StringSQL = "SELECT * FROM Tabela ORDER BY CDate(Campo_Data)"

mas vai dar erro caso tenha alguma data invalida.

Link para o comentário
Compartilhar em outros sites

  • 0
a solucao seria sim mudar pra data/hora, mas essa mascara m/d/aa depende da configuracao do windows e pode ser mudada. alem do mais, se você usa visual basic, na hora de mostrar a data pode formatar como quiser com a funcao format.

mas se quiser dexar como texto tenta fazer o select assim:

StringSQL = "SELECT * FROM Tabela ORDER BY CDate(Campo_Data)"

mas vai dar erro caso tenha alguma data invalida.

Valeeeeu kuroi

exatamente o que eu precisava ;)

Muito obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
a solucao seria sim mudar pra data/hora, mas essa mascara m/d/aa depende da configuracao do windows e pode ser mudada. alem do mais, se você usa visual basic, na hora de mostrar a data pode formatar como quiser com a funcao format.

mas se quiser dexar como texto tenta fazer o select assim:

StringSQL = "SELECT * FROM Tabela ORDER BY CDate(Campo_Data)"

mas vai dar erro caso tenha alguma data invalida.

Então kuroi.....

eu coloquei CDate para o campo como texto e deu certinho.....beleza

mas e se o campo tiver q ser do tipo data??

como eu faço para no MSHFlexGrid mostrar a data no formato "dd/mm/yy" ????

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa kuroi, não entendi muito bem....

e também não sei se tem algum outro problema aki no meu código..

vou coloca-lo aki pra você ver se tem algo q está impedindo a data de ficar no formato desejado...

Para fazer uma consulta entre datas e escolhendo um cliente numa combo, faz-se dessa forma...

Set Conex = New ADODB.Connection
Conex.Open StringDeConexao

GrideCons.Visible = True
cboNomeFantasia.Text = ""

StringSQL = "SELECT * FROM Atendimentos WHERE Atend_NomeFantasia Like "
StringSQL = StringSQL & "WHERE Atend_Data Between #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# And #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"
StringSQL = StringSQL & "ORDER BY Atend_Data"

Set rs = New ADODB.Recordset

rs.Open StringSQL, Conex, adOpenDynamic, adLockOptimistic

If rs.EOF Then MsgBox "Não foram encontrados registros correspondentes.", vbExclamation, "Registro não encontrado"

Set GrideCons.DataSource = rs
GrideCons.Refresh
rs.Close
Set rs = Nothing

aqueles DTPicker que uso pra selecionar as datas, só funcionam se estiverem no formato "YYYY-MM-DD"

Eles podem estar interferindo em alguma coisa???

Agradeço muuuuuito se puder ajudar

Obrigado

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

  • 0

o seu problema é mostrar a data no grid no formato certo, não??

então, nesse caso, isso vem do select. o where não influencia no formato (ou seja o DtPicker não tem nd a ver). você teria q fazer tipo assim:

StringSQL = "SELECT NOME_DO_CAMPO_DA_SUA_TABELA_QUE_VC_QUER_POR_NO_SELECT, NOME_DO_OUTRO_CAMPO_DA_QUE_VC_QUER_POR_NO_SELECT, etc..., Format(Atendimentos.Atend_Data, 'DD/MM/YY') As Atend_Data FROM Atendimentos "
StringSQL = StringSQL & "WHERE Atend_Data Between #" & Format(DTPicker1.Value, "YYYY-MM-DD") & "# And #" & Format(DTPicker2.Value, "YYYY-MM-DD") & "#"[/code]

entendeu?? teria q por o Format na data direto no Select.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...