Vídeo - Conheça a coleção TempVars
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito, através do Paypal.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Sabemos que as variáveis de escopo público são visíveis a todos os procedimentos e funções dos formulários, relatórios e módulos globais, porém elas não podem ser aproveitadas diretamente nas consultas, nas macros e na lista de propriedades. Os programadores mais experientes sabem que as funções de escopo público são lidas em consultas, nas macros e na lista de propriedades e então usam a manobra de passar o valor da variável para a função, conforme você pode observar na escrita abaixo:
Option Compare Database
'variável de escopo público Public idUsuario as long
---------------------------------------------------------------------------- Public Function fncIdUsuario() as long
'função recebe valor da variável pública idUsuario fncIdUsuario = idUsuario End Function
Veja na figura o uso da função, usada diretamente em uma consulta:
E se houver a necessidade de alterar o valor da variável, através de uma macro ?
Podemos passar o valor através de um argumento da função. Observe bem, a modificação na função que permite ler e alterar a variável idUsuario.
Option Compare Database
'variável de escopo público Public idUsuario as long
---------------------------------------------------------------------------- Public Function fncIdUsuario(Optional id As Long = 0) As Long If id = 0 Then
'função recebe o valor da variável idUsuario fncIdUsuario = idUsuario Else
'Variável recebe valor do argumento id idUsuario = id End If End Function
Veja na figura abaixo, a ação da macro ExecutarCodigo que chama pela função. A variável idUsuario  receberá o valor 4 que está sendo passado pelo argumento da função.
Do Access 2007 em diante, a Microsoft criou uma coleção chamada TempVars que possibilita criarmos até 255 variáveis públicas no seu interior. Podem ser criadas através de macros, usando a ação DefinirVariávelTemporária, conforme você pode observar na figura abaixo.
As variáveis também podem ser criadas pelo VBA, no interior de funções e/ou procedimentos .
...
TempVars.add "strPais","Brasil" TempVars.add "strCliente","" TempVars.add "booAtivo",true
...
Para definir diversas variáveis na inicialização do aplicativo, crie uma função pública, conforme exemplo abaixo e depois faça uma chamada da função através da macro AutoExec.
Public Function fncIniciaVariaveis() TempVars.Add "strPais", "Brasil" TempVars.Add "strCliente", "Avelino" TempVars.Add "booLiberado", true TempVars.Add "j", 0 TempVars.add "k", "" End Function
É possível remover uma variável ou todas de uma vez , usando os métodos Remove e RemoveAll
'removendo uma variável específica da coleção TempVars
TempVars.Remove "strPais"
'ou removendo todas as variáveis
TempVars.RemoveAll
Pela macro, temos as ações de remoção:
RemoverTodasVariáveisTemporárias
RemoverVariávelTemporária
Suponha que você necessite recriar todas as variáveis para retornar com os valores padrão. Você poderá realizar a seguinte sequência:
...
'removendo todas as variáveis
TempVars.RemoveAll
'recriar as variáveis, com seus valores padrão
call fncIniciaVariáveis
...
Nesta vídeo-aula utilizo o aplicativo Maestro para demonstrar uma situação prática para o uso do TempVars,
que é o de permitir que o usuário logado tenha acesso exclusivo aos
seus clientes.
Faça o login aqui para ter acesso ao vídeo.
Sucesso!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Adquira o kit UsandoAccess e aprenda em alta velocidade
17 comentários Avelino Sampaio 13/11/2021 20:36:53 Ok Walter Sucesso! Alvaro B. Junior 07/11/2021 17:19:24 Não localizei o vídeo para assistir.... Cláudio Machado 10/04/2021 17:54:12 Avelino, obrigado pela dica da vídeo-aula, era exatamente o que precisava, fiz algumas mudanças utilizando o os arquivos do maestro. Apanhei mas consegui. Obrigado pela ajuda, foi de grande valia. Abraços. Avelino Sampaio 10/03/2021 06:18:34 Juliana, basta identificar o idusuario na tabela fornecedores (tabela do lado 1 do relacionamento). Estou considerando que vc tenha a relacioanmento 1 para MUITOS entre fornecedores e produtos (um fornecedor para vários produtos). Sucesso! Avelino Sampaio 10/03/2021 06:14:08 Wellington, algo assim (posição 17:55 do vídeo): iif(fncIdUsuario() in (1;7);>0;fncIdusuario()) Sucesso! Juliana Reis - CE 09/03/2021 23:10:54 Nossa, fazia tempo que eu e meu marido procurávamos um site assim. Como eu faria para colocar a variável em uma consulta que possui mais de uma tabela? Por exemplo, tabela Produtos e tabela Fornecedores, em cada uma dela fica registrado o idUsuario no campo específico. Qual utilizar? Como? Obrigada! Wellington 08/03/2021 10:59:40 Avelino, Vi sugestão no MaximoAccess que você me deu para ver esse artigo, achei 1000 vezes melhor do que o método que utilizo hoje, sendo assim já estou implementando no meu projeto. Porém me apareceu uma dúvida, vamos supor que eu queria dar a um usuário específico a função que o administrador possui, ou seja, que ele veja todos os itens, assim como no seu exemplo o admin possui, como faria? Parabéns pelo site e pelo artigo, muito bom. Wellington Avelino Sampaio 06/03/2021 11:35:42 Almir, use o navegador "Internet Explorer". Sucesso! Almir 06/03/2021 11:27:38 Bom Dia Avelino O player de video não esta aparecendo para mim. è necessario estar logado para ver os videos ?. Grato André Ferreira (eliuzidre) 30/01/2021 00:35:53 A pouco tempo atrás adquiri o Kit oferecido pelo Avelino. Tenho estudado diariamente através dos primorosos tutorias aqui disponibilizados, assim como os que recebi. Digo a todos que o meu projeto está em constante aperfeiçoamento. Quando penso. Terminei! Acabo conhecendo mais uma coisa e adiciono ao meu. Pelo visto tão cedo não vou dar como concluído o meu trabalho! rsrsrsrs. Parabéns Avelino! Avelino Sampaio 06/01/2021 05:29:17 Icaro, obrigado pelo feedback e sucesso! Icaro Ferraz 05/01/2021 22:27:14 Avelino, consegui fazer a configuração corretamente. Muito obrigado! Ícaro Ferraz 05/01/2021 21:10:49 Boa noite Avelino! Apliquei o conteúdo desta video aula num aplicativo que estou desenvolvendo e funcionou corretamente mas tenho uma dúvida: Todos os valores do Campo IdUsuario foram digitados por vc, mas quando faço o acesso direto ao aplicativo e faço a inclusão de um novo registro o campo não recebe o valor da função. Vc poderia me dar alguma dica? Desde já agradeço! paulohenriquess2011@hotmail.com 21/07/2020 23:29:45 Boa noite Avelino!!! Gostei muito dos seus videos, gostaria de saber como faço para conseguir adquirir estas videos aulas, aguardo contato, desde já obrigada. Márcio Melo - RJ 07/05/2020 22:27:51 Show de bola, adorei as várias maneiras de colocarmos uma variável global da id do usuário e como manipular nas consultas, mas uma vez aprendi muito e como sempre passo a utilizar, gosto da maneira que consegue testar tudo que faz, muitas das vezes não sei como fazer e nem como tirar as panes, conforme vi nessa sua aula nem sempre as montagem óbvias funcionam, conforme foi no caso da Seimed na expressão da consulta já passei por isso várias vezes e não sabia como resolver. Ótimo saber as várias formas de termos uma variável global e gosto de adotar tudo pelo próprio VBA. Sou mais Brasil! Avelino Sampaio 07/03/2020 10:44:54 Luís, obrigado pelo incentivo. Sucesso Luís Augusto 03/03/2020 19:21:03 Boa noite Avelino, estou simplesmente admirado! Sua didática esta cada vez melhor, é admirável o seu trabalho. O assunto é de grande valia para todos. A cada exemplo que disponibiliza, temos a oportunidade de enriquecer o nosso conhecimento, gostaria de pedir que não desista das suas convicções e de prestar esta valiosa contribuição para todos os seus leitores e clientes. Sou muito grato, pouquíssimas pessoas disponibilizam de seu conhecimento como o faz. Muito obrigado. Atenciosamente Luís Augusto |