Escolar Documentos
Profissional Documentos
Cultura Documentos
Usando Access
Home Vídeos Tutoriais Dicas Ribbons Suporte Downloads Contato Artigo
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos
apresentados abaixo. Você pode comprar em até 10x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Veremos como o Access usa a sintaxe especializada do VBA para se referir aos controles, propriedades
e métodos de formulários e relatórios. Até os programadores mais experientes costumam tropeçar em
algumas destas formas de escrita. Portanto fique bem atento aos detalhes que serão aqui
apresentados!
O Access usa as coleções Forms e Reports para identificar os objetos que desejamos nos referir.
forms!NomeDoFormulário
reports!NomeDoRelatório
Observe que é usado o operador bang (!) para separar o nome da coleção (forms/reports) do nome de
um objeto da coleção (NomeDoFormulário/NomeDoRelatório).
Cuidado com os nomes de formulários e relatórios que incluem espaços, pois nestes casos é necessário
o uso de colchetes ([...]).
forms![Nome do Formulário]
reports![Nome do Relatório]
Uma outra forma de escrita que nos permite um grau de flexibilidade na definição dos nomes dos
objetos, é o de fazer uso de parênteses.
forms("Nome do formulário")
A flexibilidade vem do fato de podermos utilizar uma variável ou um argumento de uma função para
1 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
reports("Nome do Relatório")
forms(NomeDeUmaVariável)
reports(NomeDeUmArgumentoDeUmaFunção)
Referenciando os controles
Podemos usar o ponto(.) ou o bang(!) para fazer referência aos controles. Eu prefiro o bang(!),
deixando o ponto para referenciar propriedades e métodos.
forms!NomeDoFormulário!NomeDoControle
reports!NomeDoRelatório!NomeDoControle
Vale ressaltar que para o caso dos nomes que incluem espaços, não podemos esquecer de usar os
colchetes([...]).
Outra forma de referenciar os controles é usar os parênteses, que permitem também fazer uso de
variável ou argumento de uma função.
Veja neste artigo sobre bingo, o uso de variável para indicar o nome do controle.
Uso do Me
me!NomeDoControle
me![nome do controle]
usando os parênteses.
me!("Nome do controle")
me("Nome do controle")
forms!NomeDoFormulário!NomeDoControle.visible = false
reports!NomeDoRelatório!NomeDoControle.visible = false
me!NomeDoControle.visible = false
2 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
me!NomeDoControle.visible = false
me.requery
A chave para entender esta sintaxe é observar que o subformulário está encapsulado ao CONTROLE
SUBFORMULÁRIO (caixa que recebe o subformulário), do formulário principal.
O CONTROLE SUBFORMULÁRIO possui a propriedade FORM que nos permite ter acesso aos controles,
propriedades e métodos do subformulário.
Forms!nomeDoFormulárioPrincipal!NomeDoControleSubformulário.FORM!NomeDoControleSub
Na referência ao controle, podemos omitir da sintaxe, a propriedade FORM, ficando com uma escrita
mais enxuta. Veja:
Forms!nomeDoFormulárioPrincipal!NomeDoControleSubformulário!NomeDoControleSub
Forms!nomeDoFormulárioPrincipal!NomeDoControleSubformulário.FORM.Recalc
Muita atenção para não cair numa pegadinha! Observe que indicamos na sintaxe o nome do
CONTROLE SUBFORMULÁRIO (parte em vermelho) e não o nome do subformulário.
3 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Forms!NomeDoFormulárioPrincipal!AMIZADE!NomeDoControleSub
me!AMIZADE!NomeDoControleSub
Se estivermos no módulo VBA do subformulário, bastará usarmos a propriedade PARENT para termos
acesso aos controles, propriedades e métodos do formulário principal. Exemplo:
Parent!NomeDoControle
parent![nome do controle]
Ou usando o parênteses
parent!("nome do controle")
Podemos também acessar propriedades e métodos dos controles, do formulário principal. Exemplo:
usando a propriedade visible de um controle.
parent!NomeDoControle.visible = false
Isso mesmo! Podemos utilizar a sintaxe fora do ambiente VBA. Para estes casos, devemos utilizar a
sintaxe completa.
O valor do campo Material do formulário é utilizado na consulta para realizar a filtragem. Só funciona
com o formulário aberto.
4 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Podemos também utilizar o parent na lista de propriedades e assim obtermos uma escrita mais
reduzida.
Quadros resumo
Segue, abaixo, uma lista resumo que retrata as formas de sintaxe possíveis.
Quadro 1
Quadro 2
Quadro 3
5 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
SubFormulário 1 Parent.RecordSource
SubFormulário 2 Me.RecordSource
Apontando para um Controle do
Formulário Principal Parent.Parent!NomeControle
Subformulário 1 Parent!NomeControle
SubFormulário 2 Me!NomeControle
SourceObject de um controle sub
Formulário Principal N/A
SubFormulário 1 N/A
SubFormulário 2 N/A
Quadro 4
SubFormulário 1 Forms!FormPrincipal!ControleSub1!NomeControle
SubFormulário 2 Forms!FormPrincipal!ControleSub1!ControleSub2.Form!NomeControle
SourceObject de um controle sub
Formulário Principal N/A
SubFormulário 1 Forms!FormPrincipal!ControleSub1.SourceObject
SubFormulário 2 Forms!FormPrincipal!ControleSub1!ControleSub2.SourceObject
Desafio
A título de treinamento, estou lhe desafiando a configurar os campos coloridos, conforme imagem
abaixo.
Segue o arquivo exemplo. Configure os campos dos formulários para que sejam exibidos os valores,
6 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Sucesso!
Como carregar o seu menu sem que ele vá para lista de suplementos
44 comentários
Avelino, consegui entender bem e cumprir o desafio desse tutorial "Referenciar objetos Forms e Reports e às suas
propriedades", muito boa sua explicação, no entanto tenho uma solução muito parecida que não funciona a diferença principal
é que não são caixas não vinculadas e sim combos vinculadas e esta tudo dentro de um Controle de Guia. Onde posso está
errando?
Quero aqui deixar meu profundo agradecimento, pois essa aula me ajudou muito. O tempo passa e a qualidade dos
ensinamentos continua a mesma, perfeita! Deus abençoe e lhe dê a cada dia mais sabedoria!!
Pessoal, tenho um formulário principal e três subformulários aninhados dentro dele. Os subformulários estão aninhados em
cascata um dentro do outro e no modo folha de dados. Neste caso, é possível referenciar?
Sr. Avelino
Help.
-Tenho uma formuláriopai a onde eu faço o cadastro e nele coloquei um sub_formulário a onde mostra todos os Itens
cadastrados.
-Neste sub-formulário mostra todos itens cadastrados, coloquei o código como hiperlink e estou tentando criar uma macro para
quando clicar no código me mostra-se no formuláriopai este item selecionado.
Exemplo:
Ação - IrParaRegistro
Argumento - Formulário
- Nome do Objeto
7 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Obrigado.
Ola pessoal!
Procurei bastante no forum e encontrei poucos casos parecidos, mas não exatamente como eu que preciso,
Seguinte:
Tenho um formulário chamado FormAcertoForn, baseado na tabela Tbl_AcertoFornecedor contendo os campo CodAcerto,
Fornecedor, Destino e Obs. E 2 subformulários que ambos têm o campos CodAcertoForn.
Um subformulário chamado FormAcertoFornParc baseado na tabela Tbl_ComprasParc, vinculado com o fornecedor do
formulário principal e nesse subformulário só aparece as parcelas em aberto referente ao fornecedor selecionado no form
principal e soma somente as parcelas marcadas pelo campo MARCAR(tipo sim/não).
E outro subformulário chamado FormAcertoFornCheq baseado na tabela Tbl_Cheques e que não está vinculado ao formulário
principal.
No formulário FormAcertoForn tenho um filtro que pesquisa registros do subformulário FormAcertoFornCheq pelo campo
DtVencimento e totaliza apenas os registros marcados pelo campo MARCAR(tipo sim/não)
O que eu preciso é o seguinte: Quando clicar no botão GRAVAR, o valor do campo CodAcerto do form principal seja inserido em
todos os registros marcados no campo MARCAR(tipo sim/não) no campo CodAcertoForn que existe nos dois subformulários.
Resumindo, preciso que o CodAcerto atual do form principal seja inserido no campo CodAcertoForn dos dois subformulários,
mas somente nos registros que estão com o campos MARCAR ativado.
Olá estou com um problema, estou desenvolvendo um sistema de impressão de apostilas em pdf, preciso imprimir diversos
arquivos direto nas impressoras, porém, preciso configurar a orientação da folha (retrato ou paisagem) por cada arquivo
enviado, essa informação está armazenada, mas não sei como alterar os parâmetros da impressora e direcionar cada arquivo
para uma impressora em questão pois conforme o arquivo será impresso em duas HP e se for no formato paisagem será
impresso na Brother. Já utilizei o Application.printer e seus metodos mas não funcionaram, estou enviando pelo comando
Shellexecute com as devidas declarações no começo do módulo. Se puderem me ajudar ?.
Sr. Avelino
Iniciei um projeto de cadastro de folhas com informações que servem como treinamento para aqueles que a lêem. Cada uma
dessas folhas possuem sua própria numeração para que possam ser diferenciadas.
Nesse projeto, qualquer pessoa pode usá-lo, e abrir qualquer uma dessas folhas, mas, após visualiza-las devem cadastrar-se
como se tivessem sido treinados.
Até ai eu consegui manipular bem o access. Mas, agora vem a minha dúvida. No momento em que essa pessoa se cadastra eu
preciso que ao lado do item que ele visualizou conste a quantidade de pessoas que ja foram treinadas, e que quando ele se
cadastrar, essa numeração some +1.
Creio que isso deva ser feito através do VBA (eu acho), teria como me ajudar?
Se não tiver entendido direito o que eu quis dizer, me comunique que serei mais esclarecedor.
Prezado Avelino
Sou iniciante no access VBA, porém, estou fazendo um banco de dados para gerenciar a minha conta corrente, eu fiz a
estrutura dele conforme a minha organização,porém, eu gostaria que no formulário de cadastro aparece apenas os créditos e
débitos referente ao mês atual,
Prezado Avelino,
8 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
A intenção é gerar uma mensagem, em caso de erro, que já me diga em qual procedimento/função houve a ocorrência.
Poderia simplesmente digitar o nome do procedimento/função e concatenar com uma "err.description", mas, isso me obrigaria
e digitar o nome em todas as estrutura de interceptação de erro.
Desde já agradeço pela atenção.
Parabéns pelos ensinamentos, esse como tantos outros, é por causa do compartilhamento do saber que o mundo caminha a
passos largos e a vida sempre se renova. O que seria do mundo sem os mestres...???
Hephraim,
sim, tem. Primeiro tem que passar o procedimento do subformulário para PUBLIC no lugar do PRIVATE. Depois chame o
procedimento ou a função desta forma:
Form_NomeSubFormulário.Salvar_Click
Form_NomeSubFormulário.NomeDaFunção
Sucesso!
Muito bom!
Mestre Avelino,
Estou com uma dúvida. Tenho um form principal e dois subforms aninhados e não vinculados entre si (sub1 e sub 2). Como
referencio dois campos dos dois subforms? A minha proposta é quando o campo digitado do sub2 for igual ao do sub1, este
mudará de cor e aparecerá um alerta. Aguardo suas orientações.
Abraço.
Funciona, só que agora fiquei na duvida, o terceiro relatorio engloba todas as propriedades dos outros dois relatorios,
Ex: Na hora em que coloco as datas para realizar a consulta das movimentações tenho que fazer isso duas vezes (acredito que
seja pelo fato de ter dois relatorios em um só)
As configurações mais simples também (Cabeçalho, ropapé, etc) tudo aparece duplicado.
Mas se eu altero essas configurações no Relatório Mov_Funcionários, eles tbm alteram os relatorios principais.
Como posso montar três relatórios distintos sem alterar as suas configurações principais..
9 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Priscila,
o correto é vc montar relatórios e pelo que vc está querendo como resultado, sugiro a montagem de três relatórios (um
somente de Admitidos, o outro de demitidos e terceiro englobando os dois).
Sucesso na montagem!
Estou com uma duvida, criei um formulário (Func_Admitidos) e depois coloquei dentro deste formulário um sub_formulário
(Func_Demitidos) para que pudesse ter os dois relatórios em um só, mas quando tento imprimir sai apenas o formulário
principal e não os dois...., gostaria de saber como posso estar relacionando esses formulários para que na hora da impressão
saia os dois e se possivel algum tipo de filtro ou comando que eu possa colocar que permita a escolha entre o formulário e o
sub_formulário e ambos..
Boa Avelino,
Consegui resolver o desafio, mas confesso que apanhei bastante!
Valeu!
Marcelo,
abra o VBA > no menu Ferramentas > Referências > marque "Microsoft Office 12.0 Object Library"
Se estiver usando o Access 2010, use o "Microsoft Office 14.0 Object Library"
Sucesso!
Boa tarde
Avelino
Mais uma vez peço socorro Bom Mestre
Atenciosamente
Marcelo,
tente assim:
Sucesso!
Boa tarde
Avelino
10 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Antecipo agradecimentos
Boa tarde
Valeu ai pela dica Avelino
era esse comando mesmo q eu estava precisando
Abraços
Obrigado
Marcos Elder,
Pode utilizar o ponto sem problema algum. Assim vc continua se valendo do IntelliSense.
Usar o "!" para referenciar os controles e "." para referenciar as propreidades e métodos, no meu entender, fica mais fácil para
o novato compreender a montagem da sintaxe.
Sucesso!
Marcelo,
não entendi muito bem o que vc deseja. Não ficou claro qual o objetivo.
reports(0).Name
Sucesso!
estou com uma duvida como faço pra chamar o nome do Relatorio atual
Ficou excelente e clareou o mal ( "." ou "!") que me assombrava na hora de referenciá-los. Como você prefere o "!" e você é o
mestre, então ajustei todos meus trabalhos dessa forma também. Quando der exponha porque prefere o "!". Pena que até
certo ponto da digitação perde-se o IntelliSense.
Parabéns mais uma vez!
Pessoal,
fico muito feliz que a missão deste site esteja sendo cumprida.
Sucesso!
11 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Meus Parabéns Avelino, sem dúvida é um material muito rico em e de fácil didática.
Muito obrigado por compartilhar conosco dos seus conhecimentos!
Desculpe-me a minha ignorância Avelino, mas a referencia a subformulário foi esclarecedora. Já tinha até desistido de
referenciar subformulário via VBA, só usava a macro. Tá explicado!
Grande Avelino
Boa Tarde
Estou com a seguinte duvida tenho um Formulario pradrão no meu projeto pra impressão
onde tem 03 objetos Imprir ( Imprimi direto na impressora) Gerar PDF (Gera o Arquivo em PDF) e Enviar E-Mail (Gera o
Arquivo e abre o OultLook )
Duvida Como Faço para Chamar o Report Atual para gerar o Arquivo pois esse mesmo formulario vai ser usado em todo os
Relatorio do Projeto.
Grande Avelino.
Muito obrigado por mais esta iniciativa. Sempre aprimorando e transmitindo seus conhecimentos.
Este tutorial sanou algumas duvidas que tinha a respeito do VBA. Sempre quis saber significados de alguns termos utilizados e
como aplica-los corretamente.
Forte abraço
Parabéns Avelino!
Obrigado por mais uma vez compartilhar de seus conhecimentos com aqueles que estão iniciando nessa jornada como eu!
Sempre apanhei muito com os subformulários e você conseguiu organizar as sintaxes em minha cabeça!
Obrigado!
Sempre tenho acompanhado as publicações deste Site! sou iniciante, as matérias aqui postadas tem sido fundamentais para
meu desenvolvimento, sempre utilizei bem a sintaxe de referência a objetos, entretanto este artigo me mostrou meios mais
eficazes e práticos que eu ainda não conhecia.
Parabéns Avelino.
12 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Avelino, pergunta, tens alguma dica sobre " do access para word", estou fazendo um sistema e gero um relatório e preciso
colocar os dados que estarão neste REL no word.
Que possue várias páginas e os campos deste relatório deverá entrar em determinados lugares. Tens algum exemplo ou
cobrarias para dar esta ajuda....grato, aguardo...
Não há palavras para expressar de maneira real o quanto é importante este site para as pessoas que desejam adquirir
conhecimento dessa ferramenta da Microsoft. Com sua forma de ensinar, apreendemos de maneira simples e correta a utilizar
da melhor forma o Access. Parabéns e obrigado!
Welson Junior
http://dicadecursos.com
Mais uma vez você nos envolve com seus belíssimos e instrutivos ensinamentos. Muito obrigado Avelino.
Tenho bastante conhecimento de sintaxes entre subformulários e subrelatórios. Igualmente o auto-identificador Me, porém
nunca fiz uso deste em sintaxes entre subformulários e subrelatórios. O artigo acendeu uma luz pra exterminar códigos
extensos.
Abração
Parabéns por mais um excelente artigo! Os iniciantes sempre se confundem com estas regras.
Outro tópico importante e mais recente é o uso do tempvars. Recomendo a todos pesquisar o assunto aqui no site.
Um abraço!
Gilberto Mendes
13 of 14 23/06/2020 16:04
Referenciar objetos Forms e Reports e às suas propriedades https://www.usandoaccess.com.br/tutoriais/referenciar-formularios-e-rela...
Nome:
Comentário:
comentar
14 of 14 23/06/2020 16:04