Jump to content
Fórum Script Brasil
  • 0

Order By Com Datas


Gabriel Cabral
 Share

Question

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 to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Gabriel Cabral
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...