Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pri1836

Abrir um formulário usando vba

Recommended Posts

Olá pessoal,

 

Não conheço muito bem as ferramentas do Access e nem o VBA.

 

Preciso abrir um relatorio atraves de formulário, utilizando uma caixa de Listagem

 

tentei o código abaixo, mas não funciona

 

Private Sub Combinação34_AfterUpdate()

DoCmd.OpenReport "Rel_Seção", acViewDesign, Combinação34, Seção, acWindowNormal

End Sub

 

Gostaria de saber qual parte estou errando...

 

Se alguém puder me ajudar eu agradeço

 

Priscila

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque essa linha:

DoCmd.OpenReport "Rel_Seção", acViewDesign, Combinação34, Seção, acWindowNormal

por essa:

DoCmd.OpenReport "Rel_Seção", acViewReport

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, Obrigada pela resposta...

 

Ele abre o formulário normalmente, mas no caso a inteção é abrir o formulário com a filtro da cx de listagem (Combinação 34) mencionada.

 

Tem como realizar isso atravéz do VBA?

 

Priscila

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha.. formulário ou relatório, na verdade, a filtragem é feita por uma consulta; então você 1º precisa cria-la, de forma que o critério será o dado (um valor, uma variável) selecionado na lista, ok?

Exemplo: vamos supor que você tem 1 tabela de funcionários de sua empresa com uma coluna chamada nome_funcionario e a caixa de combinação (a lista) se chame “lista_funcionarios” (sem aspas); crie a consulta assim:

SELECT dados
From tabela
Where nome_funcionario = [Formulários]![nome_do_formulario]![lista_funcionarios]

Atenção: onde está nome_do_formulario troque pelo nome do formulário onde está a caixa de combinação, não o nome do formulário que você deseja abrir, ok?

Agora crie o relatório baseado nessa consulta.

Para isso abra o relatório (ou formulário) no modo design, acione “propriedades” do relatório e em “Dados” – Fonte de Registro selecione a consulta.

Teste e qqer coisa retorne.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, Bom Dia

 

O Relatório já está criado "Rel_Seção"

 

A caixa de combinação39, está baseada na Tabela "Seção", a mesma deveria trazer o Rel_Seção conforme o item selecionado na cx. de listagem (Combinação39).

 

Deixando dessa maneira:

 

Private Sub Combinação39_AfterUpdate()

DoCmd.OpenReport "Rel_Seção", acViewDesign, , , acDialog, "Seção ='" & Me!Combinação39 & "'"

End Sub

 

O relatorio abre normalmente, mas com todos os itens da seção e não apenas o que selecionei,

 

Tentei da seguinte maneira:

 

Option Compare Database

Select_dados

From Tabela

Where Secao = formulários![Relatórios por filtro]![Combinação39]

Private Sub Combinação39_AfterUpdate()

DoCmd.OpenReport "Rel_Seção", acViewDesign, , , acDialog, "Seção ='" & Me!Combinação39 & "'"

End Sub

 

Mas também fica do mesmo jeito, ele abre o Rel_Seção, mas não filtra os dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha.. vamos por partes:

O Relatório já está criado "Rel_Seção"

1º evite acentuação e espaços em nomes de objetos (tabelas, formulários, consultas etc.)

normalmente não dá certo usar esses nomes q o Access cria automaticamente;

Mude por exemplo p/ cxbusca, cxPesquisa etc., como preferir

a configuração do relatório já expliquei aqui (é indiferente se já está criado ou não):

abra o relatório (ou formulário) no modo design, acione “propriedades” do relatório e em “Dados” – Fonte de Registro selecione a consulta.

A caixa de combinação39, está baseada na Tabela "Seção", a mesma deveria trazer o Rel_Seção conforme o item selecionado na cx. de listagem (Combinação39).

isso tb já foi explicado:

a filtragem é feita por uma consulta SQL, não por VBA;

Tentei da seguinte maneira:

Option Compare Database

Select_dados

From Tabela

Where Secao = formulários![Relatórios por filtro]![Combinação39]

por gentileza preste atenção nessas linhas:

select_dados

formulários![Relatórios por filtro]![Combinação39]

com o exemplo que eu postei

em "Dados" você seleciona as colunas q deseja exibir (não há espaços sublinhados;

se você deseja pesquisar dados q estão nas colunas nome, endereco e telefone da tabela clientes, por exemplo,

você escreve a consulta assim:

select nome, endereco, telefone

e em From Tabela

substitua, claro, a palavra "Tabela" pelo nome da tabela que você está pesquisando;

no exemplo from clientes;

fica ssim, portanto:

select select nome, endereco, telefone
from clientes

agora de uma pesquisada melhor sobre filtros

isso é normalmente definido pela clúasule where;

por exemplo, se você quer descobrir quais clientes q você (ou sua empresa) são da cidade de São Paulo, você terá que ter uma coluna com a cidade dos clientes,

ai a consulta fica assim:

select select nome, endereco, telefone
from clientes
where cidade = "São Paulo";

etc..

e isso:

Option Compare Database

Select_dados

From Tabela

Where Secao = formulários![Relatórios por filtro]![Combinação39]

além de estar com a sintaxe errada, pode valer para o objeto relatório, mas essa parte:

Private Sub Combinação34_AfterUpdate()

DoCmd.OpenReport "Rel_Seção", acViewReport

End Sub

é 1 propriedade (ou configuração) da cx d combinação, não tem nada a ver com o relatório;

perceba q são objetos distintos..

ao q parece, você está confundindo VBA com SQL;

minha sugestão: deixe VBA 1 pouco de lado inicialmente e procure

compreender a lógica de bancos de dados - principalmente SQL.

sobre SQL:

http://www.linhadecodigo.com.br/artigo/2741/Guia-r%C3%A1pido-para-consultas-SQL.aspx

http://www.linhadecodigo.com.br/artigo/2975/Comandos-b%C3%A1sicos-em-SQLinsert-update-delete-e-select.aspx

e sobre especificamente o Access, veja essas apostilas:

http://www.apostilando.com/download.php?cod=3286&categoria=Access

http://www.apostilando.com/download.php?cod=2969&categoria=Access

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.