MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Compartilhe
    avatar
    Rafael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 590
    Registrado : 15/11/2011

    Critério em consulta com Variavel Global (Public)

    Mensagem  Rafael Silva em 17/7/2013, 01:29

    Boa Noite !

    Qual a Sintaxe de uma variável global como critério em uma consulta do tipo String ?
    Ex.

    Select * from TblClientes where Nome = '"& VariavelGLobal &"' ?
    Select * from TblClientes where Nome = "& VariavelGLobal &" ?
    Select * from TblClientes where Nome = & VariavelGLobal & ?
    Select * from TblClientes where Nome = VariavelGLobal ?

    Tentei de todas as formas acima.

    No click de um botão de um form passo o valor de uma listbox.column(1) para a variável global e pretendo abrir um relatório com essa consulta que estou criando.

    Saudações !


    .................................................................................
    "Nunca abaixe a cabeça para ninguém,
    nem levante o nariz demais, olho no olho já é o suficiente."
    avatar
    Julio Lustosa
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  Julio Lustosa em 17/7/2013, 02:21

    Rafael, boa noite!

    Se entendi bem o que deseja, creio que seja essa:

    Select * from TblClientes where Nome='" & VariavelGLobal & "'"

    Abraços.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10227
    Registrado : 04/11/2009

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  JPaulo em 17/7/2013, 13:28

    Normalmente envia-se as Variáveis Globais para uma função, mais ou menos isto:

    Function UtilizaVariavelGLobal() As String
       UtilizaVariavelGLobal = VariavelGLobal
    End Function

    Depois utiliza-se no select desta forma:

    SELECT * FROM TblClientes WHERE Nome = UtilizaVariavelGLobal();


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    avatar
    Rafael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 590
    Registrado : 15/11/2011

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  Rafael Silva em 17/7/2013, 16:53

    Boa Tarde !

    Não sei se estou fazendo certo, até porque nunca usei Relatório antes.

    Em um formulário tenho um listbox que usuário navega nela e quando ele decidi imprimir o que vou chamar de "Detalhe" (Relatório), ele clicar em um botão para abrir o relatório.

    Só que o relatorio que vai abrir tera varios SubRelatorios cada um proveniente de uma consulta diferente mas todas as consultas deste relatorio tem como paramentro os itens da linha da listBox selecionada no formulario.

    Ex.
    Com a listbox selecionado ao clicar no botao para abrir o relatorio primeiro armazeno as variaveis que preciso usar como critério nas consulta


    Private Sub Btn_GerarRelatorio_Click()
       Call UtilizaVariavelGLobal
    End Sub

    Function UtilizaVariavelGLobal() As String
      Ativo_Selecionado = LisBx_Equip.Column(2)
       Modelo = LisBx_Equip.Column(15)
       Numero_OS = LisBx_Equip.Column(4)
       Tipo_Serv = LisBx_Equip.Column(3)
       Sigla = LisBx_Equip.Column(16)
       Dt_Inicio = LisBx_Equip.Column(6)
    End Function


    Essas variáveis globais serão usadas como critério nas consulta que irei abrir a partir de um click do botão em um formulário.

    Nunca trabalhei com relatório não sei como é feito os filtro mas se alguém tiver uma ideia pra me passar ficarei muito grato !

    Obrigado !


    .................................................................................
    "Nunca abaixe a cabeça para ninguém,
    nem levante o nariz demais, olho no olho já é o suficiente."
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10227
    Registrado : 04/11/2009

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  JPaulo em 17/7/2013, 17:53

    Rafael, meu amigo;

    O uso das variaveis globais, são sempre dentro de um modulo à parte, da seguinte forma:
    Atenção: Altere as variaveis de acordo com o formato correto de cada uma, se é String, se é Data, se é numerico.

    Option Compare Database

    Global Ativo_Selecionado As String
    Global Modelo As String
    Global Numero_OS As String
    Global Tipo_Serv As String
    Global Sigla As String
    Global Dt_Inicio As String

    Public Function CarregaVariaveisGLobais()
    'carrega as variaveis
      Ativo_Selecionado = Forms!SeuFormulario.LisBx_Equip.Column(2)
      Modelo = Forms!SeuFormulario.LisBx_Equip.Column(15)
      Numero_OS = Forms!SeuFormulario.LisBx_Equip.Column(4)
      Tipo_Serv = Forms!SeuFormulario.LisBx_Equip.Column(3)
      Sigla = Forms!SeuFormulario.LisBx_Equip.Column(16)
      Dt_Inicio = Forms!SeuFormulario.LisBx_Equip.Column(6)
    End Function


    Public Function UtilizaVariavelGlobal(ParametroGlobal)
    'utiliza as variaveis no criterio dos campos na consulta
    'Exemplo: UtilizaVariavelGlobal('Modelo')
    Select Case ParametroGlobal
       Case "Ativo_Selecionado"
                  UtilizaVariavelGlobal = Ativo_Selecionado
       Case "Modelo"
                  UtilizaVariavelGlobal = Modelo
       Case "Numero_OS"
                  UtilizaVariavelGlobal = Numero_OS
       Case "Tipo_Serv"
                  UtilizaVariavelGlobal = Tipo_Serv
       Case "Sigla"
                  UtilizaVariavelGlobal = Sigla
       Case "Dt_Inicio"
           UtilizaVariavelGlobal = Ativo_Selecionado
    End Select
    End Function


    No pressionar do seu botão no formulario, carrega as variaveis:

    Private Sub Btn_GerarRelatorio_Click()
    'chama a função de carregar as variaveis
      Call CarregaVariaveisGLobais
    End Sub


    No criterio do campo na sua consulta, você define qual variavel utiliza:

    UtilizaVariavelGlobal('Modelo')


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    avatar
    Rafael Silva
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 590
    Registrado : 15/11/2011

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  Rafael Silva em 17/7/2013, 20:06

    Excelente !

    Muito Obrigado JPaulo.


    Resolvido !


    .................................................................................
    "Nunca abaixe a cabeça para ninguém,
    nem levante o nariz demais, olho no olho já é o suficiente."
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10227
    Registrado : 04/11/2009

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  JPaulo em 18/7/2013, 09:50

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    coelho84
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 08/03/2013

    Lentidão da consulta ao resgatar o parâmetro da variavel atravês de função!

    Mensagem  coelho84 em 31/10/2018, 22:21

    Desculpe reviver o tópico kkk

    Vamos lá, eu utilizo algo muito semelhante e funciona.

    Porém notei que uma consulta simples estava demorando muito para carregar o formulário que utiliza a consulta, então nos testes notei o seguinte...

    Quando já informo um parâmetro ele carrega o formulário instantaneamente, já quando o parâmetro vem da variável Global pela função ele está demorando um tempo considerável, o que pode ser?

    Fiz outro teste e ao invés de de informar o parâmetro, inclui o critério para abrir a caixa de dialogo solicitando o critério e ao informar e clicar em OK o resultado também é instantâneo!

    Estou com o Access 2013, puxando os dados de um banco de dados Oracle por ODBC, cheguei até a pensar que era esse o motivo da demora, mas nestes testes sem usar a função com a variável o resultado é instantâneo!

    Se alguém puder dar uma luz ou encontrar outra forma de resgatar este parâmetro sem que seja através de um form, pois com form aberto também testei e é instantâneo.

    Obrigado.

    coelho84
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 08/03/2013

    Re: [Resolvido]Critério em consulta com Variavel Global em Relatórios (Public)

    Mensagem  coelho84 em 31/10/2018, 23:26

    Opa, fiquei intrigado com isso e fui fazendo diversos testes kkkk
    E consegui resolver...

    No meu caso essa demora foi ocasionada, somente porque não havia mencionado o formato do tipo de dados na função...

    Era assim:

    Código:
    Global VPop As Integer

    Public Function FNCop()

    FNCop = VPop

    End Function

    Desta forma acima, chegou a demorar 7 segundos. Shocked

    Foi só fazer isso...

    Código:
    Global VPop As Integer

    Public Function FNCop() As Integer

    FNCop = VPop

    End Function

    Já desta forma é instantâneo... Laughing

    Agora, se alguém puder me explicar o porque isso acontece?

    Serei grato!

    Em todo caso, obrigado pela atenção!

      Data/hora atual: 15/11/2018, 04:44