MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Fromulário de Consulta com passagem de parâmetro de uma data específica

    Compartilhe

    gordo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 10/10/2011

    Fromulário de Consulta com passagem de parâmetro de uma data específica

    Mensagem  gordo em Qua 10 Set 2014, 15:47

    Galera,

    Tenho a seguinte situação:

    Private Sub Form_Load()
    Dim SqlT As String
    Dim db As dao.Database
    Dim TbReg As dao.Recordset
    Conecta
    SqlT = "SELECT tabela.DtProposta, tabela.campo2, tabela.campo3 from tabela WHERE (((tabela.DtProposta)=#2/1/2014#));"
    Set db = CurrentDb
    Set TbReg = db.OpenRecordset(SqlT)
    If TbReg.EOF And TbReg.BOF Then
      MsgBox "Não há propostas cadastradas nesta data!"
      DoCmd.Close
    End If
    TbReg.Close
    Set db = Nothing
    End Sub

    Essa consulta funciona perfeitamente para uma data fixa, no caso 01/02/2014, e retorna a mensagem corretamente. O problema é quando eu ajusto a consulta para uma passagem de parâmetro, ou seja, uma data qualquer, conforme código abaixo:

    Private Sub Form_Load()
    Dim SqlT As String
    Dim db As dao.Database
    Dim TbReg As dao.Recordset
    Conecta
    SqlT = "SELECT tabela.DtProposta, tabela.campo2, tabela.campo3 from tabela WHERE (((tabela.DtProposta)=[Informe a data:]));"
    Set db = CurrentDb
    Set TbReg = db.OpenRecordset(SqlT)
    If TbReg.EOF And TbReg.BOF Then
      MsgBox "Não há propostas cadastradas nesta data!"
      DoCmd.Close
    End If
    TbReg.Close
    Set db = Nothing
    End Sub

    No código acima, uma mensagem de erro é gerada: "Erro em tempo de execução '3061': Parâmetros insuficientes. Eram esperados 1". Quando eu coloco a expressão "[Informe a data:]" como "#[Informe a data:]#", a seguinte mensagem de erro é gerada: "Erro em tempo de execução '3075': Erro de sintaxe na data da expressão de consulta (((tabela.DtProposta)=#[Informe a data:]#))".

    Alguém sabe como eu tenho que colocar isso?

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: Fromulário de Consulta com passagem de parâmetro de uma data específica

    Mensagem  Alexandre Neves em Qui 11 Set 2014, 11:16

    Bom dia,
    SqlT = "SELECT DtProposta, campo2, campo3 from tabela WHERE DtProposta=#" & inputbox("Informe a data.") & "#;"
    Pode ter que usar format(inputbox("Informe a data."),"dd-mm-yyyy")


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gordo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 10/10/2011

    Re: Fromulário de Consulta com passagem de parâmetro de uma data específica

    Mensagem  gordo em Qui 11 Set 2014, 13:08

    Bom dia!

    Coloquei o que você pediu, mas apresenta a seguinte mensagem de erro:

    Erro em tempo de execução '3078':

    O mecanismo de banco de dados microsoft jet não encontrou a tabela de entrada ou consulta. Certifique-se de que ela existe e de que seu nome está digitado corretamente.

    Veja como ficou:

    SqlT = "SELECT tabela.DtProposta, tabela.campo2, tabela.campo3 from tabela WHERE (((tabela.DtProposta)=#" & Format(InputBox("Informe a data:"), "mm/dd/aaaa") & "#));"

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: Fromulário de Consulta com passagem de parâmetro de uma data específica

    Mensagem  Alexandre Neves em Qui 11 Set 2014, 13:45

    Boa tarde,
    Só vendo a bd


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    gordo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 23
    Registrado : 10/10/2011

    Re: Fromulário de Consulta com passagem de parâmetro de uma data específica

    Mensagem  gordo em Qui 11 Set 2014, 14:58

    Bom dia Amigo,

    Descobri a falha. O código ficou estruturado dessa forma:

    Private Sub Form_Load()
    Dim SqlT As String
    Dim db As dao.Database
    Dim TbReg As dao.Recordset
    Dim dtpesq As Date
    Conecta
    dtpesq = Format(InputBox("Informe a data:", "Data da pesquisa"), "mm/dd/yyyy")
    SqlT = "SELECT tabela.DtProposta, tabela.campo2, tabela.campo3 from tabela WHERE ((tabela.DtProposta)=#" & dtpesq & "#);"

    Set db = CurrentDb
    Set TbReg = db.OpenRecordset(SqlT)
    If TbReg.EOF And TbReg.BOF Then
      MsgBox "Não há propostas cadastradas nesta data!"
      DoCmd.Close
    End If
    TbReg.Close
    Set db = Nothing
    End Sub

    No entanto, a funcionalidade ainda está incorreta. Quando eu informo uma data que não tem registro cadastrado, funciona perfeitamente. O problema é quando eu informo uma data em que há registro cadastrado, ele retorna a tabela inteira e não só os registros cadastrados na data que eu informei. Tá faltando só o pulo do gato.

      Data/hora atual: Qui 08 Dez 2016, 23:54