none
Definir valor para a clausula PARAMETERS RRS feed

  • Pergunta

  • Tenho uma Query mais ou menos assim:

    PARAMETERS [vMES] INTEGER;
    SELECT tbTemp.*
    FROM tbTemp
    WHERE DatePart("m", tbTemp.cp_Data) = [vMES] ;

    Gostaria de saber como definir o valor da variavel [vMes] via VBA !!??
    Sem que o ao executar a Query ele me pergunte qual o valor de [vMEs]

    Nota:
    Estou usando Acces2007 e essa Query é uma Query fixa, não está no editor VBA.


    Muito Obrigado pela ajuda.


    Abraão Alves - Um eterno estudante
    sexta-feira, 5 de junho de 2009 18:29

Respostas

  • Abrãao entendi seu problema. Creio que não seja possível fazer o que você deseja via VBA.

    Porque não faz o seguinte:
    1- Cria uma tabela com o campo vMes;
    2- Usa esse campo para na consulta;
    3- Atualiza esse campo via VBA.

    Há a necessidade de você ter essa consulta, ora pedindo o parâmetro, ora sendo atualizada pelo código? Se existir essa necessidade, cria um código que exclua a consulta existente, crie uma com o valor definido para o parâmetro e ao final restaure a consulta original. Ficou claro?
    • Marcado como Resposta Abraão Alves sexta-feira, 12 de junho de 2009 13:35
    segunda-feira, 8 de junho de 2009 19:58

Todas as Respostas

  • Tenho uma Query mais ou menos assim:

    PARAMETERS [vMES] INTEGER;
    SELECT tbTemp.*
    FROM tbTemp
    WHERE DatePart("m", tbTemp.cp_Data) = [vMES] ;

    Gostaria de saber como definir o valor da variavel [vMes] via VBA !!??
    Sem que o ao executar a Query ele me pergunte qual o valor de [vMEs]

    Nota:
    Estou usando Acces2007 e essa Query é uma Query fixa, não está no editor VBA.


    Muito Obrigado pela ajuda.


    Abraão Alves - Um eterno estudante
    Abraão,

    Pelo que entendi você quer que retorne o mês atual?
    Se sim não precisa do parameters. Seria mes e ano assim:
    WHERE (((Month([tbTemp.cp_Data]) & Year([tbTemp.cp_Data]))=Month(Date()) & Year(Date())));
    senão você fixa um valor na comparação WHERE
    Ou você pode usar o construtor de expressões do Access.
    Por exemplo:
    Quero gerar um relatorio a partir de uma informação de um formulário
    WHERE (((T_Venda.Cod_Venda)=[Formulários]![T_Venda]![Cod_Venda]));

    Espero ter ajudado
    segunda-feira, 8 de junho de 2009 00:41
  • Macho, porque você quer passar o parâmetro pelo VBA e mantém a query fixa?

    Faça a consulta pela VBA. Use o comando DoCmd.

    DoCmd. RunSQL "SELECT * FROM tbTemp WHERE DatePart("m", cp_Data) = " & vMES
    
    segunda-feira, 8 de junho de 2009 12:53
  • Obrigado pela resposta Ricardo.

    Mas é o seguinte: Essa consulta tem que ser flexivel, quer dizer : independente de controles. Pois vou uiliza-la em varios relatorios e consultas.

    E não, eu não quero que retorne apenas o mes atual, quero ter controle customizado da variavel (de preferencia via VBA), definindo o seu valor de acordo com a logica do meu codigo.


    Muito Obrigado pela atenção
    Abraão Alves - Um eterno estudante
    segunda-feira, 8 de junho de 2009 13:45
  • Pois é Hermano essa é a solução mais simples.
    Pode até ser que eu faça isso, só que varias consultasReferenCruzada e relatorios dependem dessa consulta.
    Logo fica meio chato repetir isso para tudo que eu usar!

    Mesmo assim obigado pela ideia.
    Abraão Alves - Um eterno estudante
    segunda-feira, 8 de junho de 2009 14:46
  • Abrãao entendi seu problema. Creio que não seja possível fazer o que você deseja via VBA.

    Porque não faz o seguinte:
    1- Cria uma tabela com o campo vMes;
    2- Usa esse campo para na consulta;
    3- Atualiza esse campo via VBA.

    Há a necessidade de você ter essa consulta, ora pedindo o parâmetro, ora sendo atualizada pelo código? Se existir essa necessidade, cria um código que exclua a consulta existente, crie uma com o valor definido para o parâmetro e ao final restaure a consulta original. Ficou claro?
    • Marcado como Resposta Abraão Alves sexta-feira, 12 de junho de 2009 13:35
    segunda-feira, 8 de junho de 2009 19:58
  • É possível sim "Definir valor para a clausula PARAMETERS" no VBA:

    Sub ReqParamDAO()
        Dim bd As DAO.Database
        Dim rs 'As Recordset
        Set bd = OpenDatabase(ActiveWorkbook.Path & "\Access2000.mdb")
        Set q = bd.QueryDefs("RetornaCidade")
        q.Parameters("nomecidade") = "paris"
        Set rs = q.OpenRecordset
        Do While Not rs.EOF
           MsgBox "Nomes :" & rs(0)
           rs.MoveNext
        Loop
    End Sub



    Você pode trocar a string "paris" por uma variável e tornar         a
    consulta muito útil em seu aplicativo...
     
        q.Parameters("nomecidade") = MinhaVariável



    Fonte: Tutorial nº 61
    http://www.tudosobrexcel.com/cursos/cursos.htm


    sexta-feira, 12 de junho de 2009 15:17