PESQUISAR DATA NO MYSQL COM VB

CJMCARDOSO 03/09/2009 17:36:13
#321867
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
ALEXLUGON 03/09/2009 17:53:26
#321872
ja tentou algo parecido com isso?


select * from boleto where datavencimento between [ô]2009-09-10[ô] and [ô]2009-09-10
CJMCARDOSO 03/09/2009 17:55:40
#321874
Nao mas são dois campos diferente funcionaria dataIncial e DataFinal
EMANDRADE2002 03/09/2009 18:38:22
#321880
Resposta escolhida
CJMCARDOSO vc ja verificou se no dia 26 vc tem registro na tabela boleto,
outra coisa vc tá colocando horas no select entao tera que ter um registro que consida data e hora para ele trazer o resultado verifica isso e tira a hora do select
CJMCARDOSO 03/09/2009 18:47:44
#321881
Já tirei e tentei usar como o exemplo do que amigo me passou
CJMCARDOSO 03/09/2009 18:51:12
#321883
Detalhe no Immediate quando vou depurar a query ele me traz assim tirei a hora no formato

SELECT * FROM Processos WHERE ProDatIni >= [ô]2009-09-01[ô] and ProDatFim <= [ô]2009-09-03[ô] AND ProSta = 1 Order by ProDatIni
MARCELO.TREZE 04/09/2009 13:04:18
#321964
realmente o problema está na sua query, vamos a duas opções

primeira

Sql = [Ô]SELECT * FROM Processos WHERE (ProDatIni >= [ô][Ô] & Format(DataInicial, [Ô]YYYY-MM-DD HH:MM:SS[Ô]) & _
[Ô][ô] and ProDatFim <= [ô][Ô] & Format(DataFinal, [Ô]YYYY-MM-DD HH:MM:SS[Ô]) & [Ô][ô] ) AND ProSta = 1 Order by ProDatIni[Ô]


segunda maneira

Sql = [Ô]SELECT * FROM Processos WHERE (ProDatIni Between [ô][Ô] & Format(DataInicial, [Ô]YYYY-MM-DD HH:MM:SS[Ô]) & _
[Ô][ô] and [ô][Ô] & Format(DataFinal, [Ô]YYYY-MM-DD HH:MM:SS[Ô]) & [Ô][ô]) AND ProSta = 1 Order by ProDatIni[Ô]


teste ambas alterações
CJMCARDOSO 04/09/2009 13:18:40
#321966
cara as 1o. ela vai só com em vez de colocar and colocar or ficando assim

[th][/th]
Query

Sql = [Ô]SELECT * FROM Processos WHERE (ProDatIni >= [ô][Ô] & Format(DataInicial, [Ô]YYYY-MM-DD[Ô]) & _
[Ô][ô] or ProDatFim <= [ô][Ô] & Format(DataFinal, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] ) AND ProSta = 1 Order by ProDatIni[Ô]


mas desse jeito qualquer data que eu colcar ele traz a segunda maneira nao me retorna valor nenhum
MARCELO.TREZE 04/09/2009 13:28:27
#321967
qual o formato do campo no banco de dados? Date ou datetime?

CJMCARDOSO 04/09/2009 13:29:31
#321968
Detalhe fiz uns teste agora no sistema troquei o campo de dateTime para date e troce certinho só que cliente quer que coloque a h e minuto só que na pesquisa do relatorio pode ser apenas pela data alguem pode me ajudaer
MARCELO.TREZE 04/09/2009 15:48:08
#321986
faz o seguinte teste no format troque

HH:MM:SS por HH:NN:SS

N representa segundos senão se confunde com M de mes

faz esta alteração usando o campo como datetime

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas