BETWEEN... HELP-ME
Olá,
O que há de errado neste código abaixo que quando pesquiso entre duas datas diz que não existe e sendo que no banco de dados ela existe.
Tipo assim: 28/08/2009 e 02/02/2009 , o VB diz que não existe mas, 28/08/2009 e 31/08/2009 diz que existe. Não estou entendendo o porque. Alguem pode me ajudar a fazer uma pesquisa utilizando o BETWEEN entre duas datas qe funcione?
O que há de errado neste código abaixo que quando pesquiso entre duas datas diz que não existe e sendo que no banco de dados ela existe.
Tipo assim: 28/08/2009 e 02/02/2009 , o VB diz que não existe mas, 28/08/2009 e 31/08/2009 diz que existe. Não estou entendendo o porque. Alguem pode me ajudar a fazer uma pesquisa utilizando o BETWEEN entre duas datas qe funcione?
Dim mData1 As Date
Dim mData2 As Date
Set tb1 = New Recordset
If txtData1 <> [Ô]__/__/____[Ô] Or txtData2 <> [Ô]__/__/____[Ô] Then
Select Case Combo1
Case Is = [Ô]DATA ENTRADA[Ô]
mData1 = CDate(txtData1)
mData2 = CDate(txtData2)
tb1.Open [Ô]select selecione as [ô]SELECIONE[ô],codigo as [ô]CODIGO[ô],datacadastro as [ô]DAT.ENT[ô],nomecliente as [ô]CLIENTE[ô],cpf as [ô]CPF[ô],nomebanco as [ô]BANCO[ô],valorcredito as [ô]CRéDITO R$[ô],prazo as [ô]PRAZO[ô],comissao as [ô]COMISSÃO %[ô],valorcomissao as [ô]COMISSÃO R$[ô],nomeproduto as [ô]PRODUTO[ô],status as [ô]SITUAÇÃO[ô],datapagcorretor as [ô]DATA PAGAMENTO[ô],operador as [ô]OPERADOR[ô] from clientes WHERE (datacadastro BETWEEN [ô][Ô] & Format(mData1, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(mData2, [Ô]dd/mm/yyyy[Ô]) & [Ô][ô])[Ô], DB, adOpenStatic, adLockReadOnly
Case Is = [Ô]DATA PAGAMENTO[Ô]
tb1.Open [Ô]select selecione as [ô]SELECIONE[ô],codigo as [ô]CODIGO[ô],datacadastro as [ô]DAT.ENT[ô],nomecliente as [ô]CLIENTE[ô],cpf as [ô]CPF[ô],nomebanco as [ô]BANCO[ô],valorcredito as [ô]CRéDITO R$[ô],prazo as [ô]PRAZO[ô],comissao as [ô]COMISSÃO %[ô],valorcomissao as [ô]COMISSÃO R$[ô],nomeproduto as [ô]PRODUTO[ô],status as [ô]SITUAÇÃO[ô],datapagcorretor as [ô]DATA PAGAMENTO[ô],operador as [ô]OPERADOR[ô] from clientes WHERE (datapagcorretor BETWEEN [ô][Ô] & FormatDateTime(txtData1, vbShortDate) & [Ô][ô] AND [ô][Ô] & FormatDateTime(txtData2, vbShortDate) & [Ô][ô])[Ô], DB, adOpenStatic, adLockReadOnly
End Select
End If
If tb1.RecordCount > 0 Then
Set Grid1.DataSource = tb1
Else
MsgBox [Ô]Não há dados![Ô], vbCritical, Me.Caption
Exit Sub
End If
Passe a data para o formato MM/dd/yyyy e se certifique de queo campo no bd esteja como data.
é exatamente como o RICART disse, mas só pra evitar ambiguidade, vc tem precisa fazer só isso aqui na cláusulia BETWEEN:
BETWEEN [ô][Ô] & Format(mData1, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(mData2, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô])[Ô]
BETWEEN [ô][Ô] & Format(mData1, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô] AND [ô][Ô] & Format(mData2, [Ô]mm/dd/yyyy[Ô]) & [Ô][ô])[Ô]
Qual é o Banco de dados?
[txt-size=3]Galera muito obrigado a todos, conseguir resolver o problema... foi isso mesmo que o RICART falou, apenas mudei o tipo do campo de VARCHAR para DATETIME no MySQL. Valeu!!![/txt-size]
Tópico encerrado , respostas não são mais permitidas