CONSULTA ACCESS POR PERIODO

WOLFROUD 08/04/2011 19:08:46
#370878
Pessoal preciso de ajuda, sou novato em Vb e não estou conseguindo efetuar uma pesquisa por período no access.

Tenho textbox com data inicial e data final, como faço para fazer a consulta do período? Segue:

Dim BancoDeDados As Database
Dim TbClientes As Recordset

Private Sub TxtMes_LostFocus()

Set BancoDeDados = OpenDatabase(Application.Name & [Ô]\Otica.mdb[Ô])
Set TbClientes = BancoDeDados.OpenRecordset([Ô]Clientes[Ô], dbOpenTable)


TbClientes.Index = [Ô]Data[Ô]
TxtMes.Text = Format(TxtMes, [Ô]dd/mm/yyyy[Ô])

?????? Daqui em diante já tentei inúmeras coisas e não encontrei nada que funcione,
Ajudem-me,


Abraços

End Sub
TECLA 08/04/2011 19:43:26
#370879
Resposta escolhida
O que você precisa fazer é alterar o trecho abaixo...
Set TbClientes = BancoDeDados.OpenRecordset([Ô][txt-color=#e80000]Clientes[/txt-color][Ô], dbOpenTable)
...por uma consulta SQL.

Exemplo:
Set TbClientes = BancoDeDados.OpenRecordset([Ô][txt-color=#e80000]SELECT * FROM Clientes WHERE data BETWEEN #01/01/2011# AND #12/31/2011#[/txt-color][Ô], dbOpenTable)

Perceba no exemplo acima, que utilizei uma DATA de EXEMPLO diretamente na consulta. O exercício que terás que fazer, é substituir os VALORE FIXOS por uma operação de concatenação com TextBox. Um outro detalhe importante, é que o no ACCESS a data a ser pesquisada precisa estar formatada como MM/DD/YYYY.
WOLFROUD 09/04/2011 13:37:23
#370921
Só dá uma conferidinha por gentileza:

Set TbClientes = BancoDeDados.OpenRecordSet([Ô]SELECT * FROM Clientes WHERE Data BETWEEN [Ô] & TxtInicial & [Ô] And [Ô] & TxtFinal [Ô], dbOpenTable)

Abraços
MARCELO.TREZE 09/04/2011 15:20:54
#370926
Coelga só vou reforçar o que o tecla explicou

o formato deve ser sempre mm/dd/yyyy e este deve estar entre #


então vc deve usar o format


Set TbClientes = BancoDeDados.OpenRecordSet([Ô]SELECT * FROM Clientes WHERE Data BETWEEN #[Ô] & Format(TxtInicial,[Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format(TxtFinal,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô], dbOpenTable)


veja se funciona, lembrando que o colega tecla deu a resposta correta.




WOLFROUD 12/04/2011 19:30:52
#371129
Srs. agradeço a consideração, mas preciso dizer que algo ainda falta na minha codificação. Segue o erro :

Run Time Error 3011.

O mecanismo do banco de dados Microsoft Jet não pôde encontrar o objeto SELECT * FROM Clientes WHERE Data BETWEEN ## And ##. Certifique-se que o objeto exista e de ter digitado seu nome e o caminho corretamente.

Estou usando VB5 e o Visdata Manager

Aquele Abraço,

MARCELO.TREZE 12/04/2011 20:45:50
#371139
colega atualize para vb6 depois atualize o service pack para o 6 (SP)



TECLA 12/04/2011 20:48:59
#371141
Tente assim:

Set TbClientes = BancoDeDados.OpenRecordset([Ô]SELECT * FROM Clientes WHERE data BETWEEN #01/01/2011# AND #12/31/2011#[Ô], [txt-color=#0000f0]dbOpenDynaset[/txt-color])
WOLFROUD 12/04/2011 21:35:49
#371150
Parece que fumegou!!! O erro de fato sumiu! Muito Obrigado!

Agora só falta emitir o relatório com os dados gerados na consulta.

Se tiverem uma dica ficarei muito grato!


Abraço,

Ps. Pelo que notei meu caro colega Marcelo Treze tenho que me atualizar mesmo, esse VB% é muito antigo e o VisData usa Access 2.0. Agradeço a sugestão.
WOLFROUD 18/04/2011 23:32:47
#371789
Srs. a pesquisa realmente parece funcionar, agora tenho problemas para gerar o relatório, como faço para colocar as informações geradas nesta consulta em um relatório????

Atenciosamente,

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