CONSULTA ACCESS POR PERIODO
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
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
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.
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.
Só dá uma conferidinha por gentileza:
Set TbClientes = BancoDeDados.OpenRecordSet([Ô]SELECT * FROM Clientes WHERE Data BETWEEN [Ô] & TxtInicial & [Ô] And [Ô] & TxtFinal [Ô], dbOpenTable)
Abraços
Set TbClientes = BancoDeDados.OpenRecordSet([Ô]SELECT * FROM Clientes WHERE Data BETWEEN [Ô] & TxtInicial & [Ô] And [Ô] & TxtFinal [Ô], dbOpenTable)
Abraços
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
veja se funciona, lembrando que o colega tecla deu a resposta correta.
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.
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,
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,
colega atualize para vb6 depois atualize o service pack para o 6 (SP)
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])
Set TbClientes = BancoDeDados.OpenRecordset([Ô]SELECT * FROM Clientes WHERE data BETWEEN #01/01/2011# AND #12/31/2011#[Ô], [txt-color=#0000f0]dbOpenDynaset[/txt-color])
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.
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.
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,
Atenciosamente,
Tópico encerrado , respostas não são mais permitidas