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

Pesquisando data no mysql com vb


Clauido José

Pergunta

Ola pessoal tenho um sistema feito em vb 6.0 e uso o mysql 4.1.22 como banco de dados, e utilizo mySql Connector 3.51 para fazer a conexão to com um problema na hora de fazer pesquisas por data tipo assim quando eu informo uma data distante por exemplo '01/08/2009' a '31/08/2009' ele traz o resultado da pesquisa certinho agora por exemplo se eu quero uma unica data '26/08/2009' a '26/08/2009' ele não fala que o banco não encontrou resultado algum. Estou fazendo da seguinte maneira.

Dim adores As New DBRecordset
    Dim indice As Integer
    Dim DataInicial As String
    Dim DataFinal As String
    If Not FormConsiste(Me) Then Exit Sub
    DataInicial = Me.Controls((FormControl.GetIndex("PesDatIni")))
    DataFinal = Me.Controls(FormControl.GetIndex("PesDatFim")).Text
    DataFinal = (Year(DataFinal) & "-" & Month(DataFinal) & "-" & Day(DataFinal))
    DataInicial = (Year(DataInicial) & "-" & Month(DataInicial) & "-" & Day(DataInicial))
    Dim Sql As String
    Sql = "SELECT * FROM Processos WHERE ProDatIni >= '" & Format(DataInicial, "YYYY-MM-DD HH:MM:SS") & _
          "' OR ProDatFim <= '" & Format(DataFinal, "YYYY-MM-DD HH:MM:SS") & "' AND ProSta = 1 Order by ProDatIni"
    adores.OpenRecordset DBCnx, Sql, CTForwardOnly, CLServer, LTReadOnly
    lstField(LstIdxPro).ListItems.Clear
    indice = 1
    If adores.EOF Then
        MsgAtt "Não foram encontrados processos neste periodo"
        Exit Sub
    Else
        Do While Not adores.EOF
            lstField(LstIdxPro).ListItems.Add , , adores.GetFieldValue("ProRec")
            lstField(LstIdxPro).ListItems.Item(indice).Tag = adores.GetFieldValue("ProCod")
            lstField(LstIdxPro).ListItems.Item(indice).SubItems(1) = adores.GetFieldValue("ProDatIni")
            lstField(LstIdxPro).ListItems.Item(indice).SubItems(2) = adores.GetFieldValue("ProDatFim")
            lstField(LstIdxPro).ListItems.Item(indice).SubItems(3) = Format(adores.GetFieldValue("ProPesPro"), "00000")
            lstField(LstIdxPro).ListItems.Item(indice).SubItems(4) = Format(adores.GetFieldValue("ProPesRea"), "00000")
            lstField(LstIdxPro).ListItems.Item(indice).SubItems(5) = adores.GetFieldValue("ProUsr")
            adores.MoveNext
            indice = indice + 1
        Loop
    End If

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

clauido, no banco de dados, as datas estao salvas com hora junto?? qual o tipo de dados do campo??

se estiver como varchar, ai não vai dar certo mesmo ne.

acho q o melhor é q esteja como timestamp.

faz o seguinte, ponha o cursor na linha adores.OpenRecordset DBCnx, Sql, CTForwardOnly, CLServer, LTReadOnly e aperte F9 pra adicionar um breakpoint. a linha vai ficar vermelha. ai rode o programa com F5 e faca a pesquisa normalmente. quando chegar na linha acima, ele deve pausar o programa.

então, abra o immediate window (ctrl + g) e digite:

? Sql

e aperte enter

ele vai mostrar o conteudo da query q ele ta tentando executar.

ai poste esse conteudo q ele mostrar ai no forum.

Link para o comentário
Compartilhar em outros sites

  • 0

é verdade aqui tb não funcionou e to quebrando a acabeça com isso tive que entragar o sistema com essa falha e estou pesquisando porque acontece já tirei no formato a hh:mm:ss só trazendo as data informada e nada o que pode ser.

Link para o comentário
Compartilhar em outros sites

  • 0

e quanto a isso tdo aqui q eu postei la em cima??

clauido, no banco de dados, as datas estao salvas com hora junto?? qual o tipo de dados do campo??

se estiver como varchar, ai não vai dar certo mesmo ne.

acho q o melhor é q esteja como timestamp.

faz o seguinte, ponha o cursor na linha adores.OpenRecordset DBCnx, Sql, CTForwardOnly, CLServer, LTReadOnly e aperte F9 pra adicionar um breakpoint. a linha vai ficar vermelha. ai rode o programa com F5 e faca a pesquisa normalmente. quando chegar na linha acima, ele deve pausar o programa.

então, abra o immediate window (ctrl + g) e digite:

? Sql

e aperte enter

ele vai mostrar o conteudo da query q ele ta tentando executar.

ai poste esse conteudo q ele mostrar ai no forum.

Link para o comentário
Compartilhar em outros sites

  • 0

e quanto a isso aqui??

clauido, no banco de dados, as datas estao salvas com hora junto?? qual o tipo de dados do campo??

se estiver como varchar, ai não vai dar certo mesmo ne.

acho q o melhor é q esteja como timestamp.

A minha query aparece assim

SELECT * FROM Processos WHERE ProDatIni >= '2009-08-27' and ProDatFim <= '2009-08-27' Order by ProDatIni

olha uma coisa, clauido. essa query so vai retornar se existir um registro q os DOIS CAMPOS data inicio e data fim forem essa mesma data do dia 27. tem algum registro na tabela com esse valor??

Link para o comentário
Compartilhar em outros sites

  • 0

No campo da tabela esta em datetime o formato vem assim 'yyyy-mm-dd hh:mm:ss' essa tabela são o processo que são feitos diariariamente e tenho que gerar um relatorio desse processo, por exemplo tem que trazer por um certo periodo ou por um unico dia.

Link para o comentário
Compartilhar em outros sites

  • 0

Claudio, o que o Kuroi quis dizer, é que no formato que está sua tabela para pegar um valor o registro tem que ter data de inicio e data final com o mesmo valor, você tem como verificar se realmente existe um registro assim?

essa tabela são o processo que são feitos diariariamente e tenho que gerar um relatorio desse processo, por exemplo tem que trazer por um certo periodo ou por um unico dia.

você quis dizer, que todo registro inicia e termina no mesmo dia?

Link para o comentário
Compartilhar em outros sites

  • 0

isso detalhe gravando hora minuto e segundo só que no relatorio por exemplo se eu digitar a data 27-08-2009 ele tem que trazer todos os processo desse dia

Editado por Clauido José
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,5k
×
×
  • Criar Novo...