Álvaro Caldas’ Info

Criando um formulário com campos relacionados de registros em tabelas diversas

Publicado por: Álvaro Caldas em: 19 Dezembro 2008

A necessidade originária é a de, num formulário de vendas de vários produtos para um mesmo cliente, ter a seguinte situação: ao digitar o código do cliente, aparecer automaticamente seu nome e endereço, entre outros dados, assim como, ao escolher o código dos produtos, aparecer, também, a descrição de cada produto, sua respectiva unidade de medida, preço, entre outros dados, para então digitar a quantidade vendida.

Contextualizada a situação, vamos aos requisitos e passos seguintes.

Requisitos:

Para isso, será preciso, previamente ao menos, criar 04 (quatro) tabelas:
1a- Cliente – que conterá campos como CodCliente (chave primária), Nome, Sexo, Endereço, etc…

2a- Produto – que conterá campos como CodProduto (chave primária), Produto, Unidade, Preço, etc…

3a- Vendas – que conterá campos como CodVenda (chave primária), Data, CodCliente (relacionado ao campo CodCliente correspondente na tabela Cliente);

Observação:

Criando Relacionamentos pelo Assistente de Pesquisa:

Para se fazer um relacionamento na elaboração de uma tabela, no modo design, depois de digitar o nome do campo e em tipo de dados, escolha Assistente de Pesquisa, aparecendo a tela respectiva:

Escolha “Eu quero que a coluna de pesquisa procure valores de uma tabela ou coluna”. Botão Avançar.

assistentedepesquisa-01-pesquisavaloresdeoutratabela-consulta1

Respondendo à pergunta “Que tabela ou consulta deve fornecer os valores para a coluna de pesquisa?” Escolha a tabela de origem, no caso, Cliente. Avançar;

assistentedepesquisa-02-tabela-cliente

Em “Quais campos contêm os valores que serão incluídos em coluna de pesquisa?”, escolha o(s) campo(s), neste caso, CodCliente e, se quiser visualizar na pesquisa o respectivo nome do cliente de cada código, escolha também Cliente. Botão Avançar;

assistentedepesquisa-03-codcliente-cliente

Na próxima tela, escolha a classificação, se desejada. Avançar.

assistentedepesquisa-04-classificacao

Depois, faça o ajuste da largura do campo pesquisado. Em caso de mais de um campo, desmarque a opção de ocultar o campo chave (é importante deixar, neste caso, desmarcada). Botão Avançar;

assistentedepesquisa-05-larguracolunapesquisa

Desmarcada a opção de ocultar o campo chave, é necessário, neste caso, escolher o campo em que será tomado por base para armazenar a informação. Recomendado o campo chave, neste caso, CodCliente. Avançar;

assistentedepesquisa-06-campoarmazenado

Na última tela, confirme o rótulo que deseja para coluna de pesquisa. Mantenha o nome e clique em Concluir.

assistentedepesquisa-07-rotulo-concluir

Observe que o tipo de dado, voltando ao modo desing da tabela, neste caso, ficará número.

4a- VendasDetalhe – que conterá os detalhes de vendas, com campos como CodVenda (relacionado ao campo CodVenda correspondente na tabela Vendas); CodProduto (relacionado ao campo CodProduto correspondente na tabela Produto); Quant, etc..

Essa última tabela, sem chave primária, serve para detalhar dois ou mais produtos adquiridos na mesma venda, por isso, é fundamental essa tabela. Isso quer dizer que se houver mais de um produto vendido, essa tabela registrará várias linhas repetindo o mesmo código de venda com o código do produto. Caso fosse relacionar a venda a apenas um cliente e um produto, essa tabela não seria necessária, ou seja, os campos desta ficariam todos na tabela Vendas.

Observação:

Lembre-se de ter feito procedimentos análogos para os demais relacionamentos desta tabela.

No menu Ferramentas, opção Relacionamentos, deve ficar, ao final, com aparência semelhante ao exibido abaixo:

relacionamento-cliente-vendas-vendasdetalhes-produtos

Passos para criação do Formulário:

1) Depois de criadas as tabelas, inicie o modo assistente de criação de formulário, que, na primeira tela, de escolha dos campos de tabelas e/ou consultas, terá como base (siga os passos para que a ordem dos campos no formulário fique da melhor maneira desejada para este caso):

  • Inicialmente, da tabela Vendas – campos CodVenda, Data, CodCliente;

assistenteform-campos-01vendas-codvenda 

  • Depois, da tabela Cliente – campos Nome, Sexo, Endereço, ou quais quiser “chamar” dela. Não selecionar CodCliente desta tabela (pois já foi selecionado da tabela Vendas);

assistenteform-campos-02cliente-cliente

  • A seguir, da tabela VendasDetalhe – campo CodProduto. Não selecionar CodVenda desta tabela (já selecionado em Vendas);

assistenteform-campos-03vendasdetalhe-codproduto2 

  • Depois, da tabela Produto – campos Produto, Unidade, Preço, entre outros dados necessários. Não selecionar CodProduto desta tabela (já selecionado em VendasDetalhe);

assistenteform-campos-04produto-produto-unid-preco

  • Voltando, da tabela VendasDetalhe – campo Quant.

assistenteform-campos-05-vendasdetalhe-quant

  • Botão Avançar;

2) Avançando, no próximo passo, respondendo à pergunta: “Como você deseja exibir os seus dados?“, selecione “por Vendas”. Observe que está marcado em baixo a opção “Formulário com subformulários”. Botão Avançar;

assistenteform-exibirdadosporvendas1

3) Na próxima tela, respondendo à pergunta: “Que layout você deseja para o seu subformulário?“, escolha, preferencialmente, “Folha de dados” (já deve estar marcado). Avançar;

assistenteform-layoutsubformulario

4) A seguir, escolha nas telas seguintes o estilo e confirme os títulos dados aos formulários, selecionando o botão Concluir.

assistenteform-estilo

assistenteform-titulosformularios

Observação:

São dois formulários criados: um, o formulário principal, que se relaciona com o registro das vendas por clientes; e o outro, do subformulário, para registro do detalhamento das vendas, ou seja, o registro dos produtos vendidos em cada venda.

Eis o formulário. Faça os testes escolhendo o código do cliente (CodCliente), observando que os demais dados do cliente aparecem nas outras caixas de texto automaticamente.

formulariovendas-suformulariovendasdetalhes1 

formulariovendas-suformulariovendasdetalhes-escolhacodcliente1

A mesma coisa acontece ao se escolher o código do produto (CodProduto), dentro do subformulário deste formulário de Vendas.

formulariovendas-suformulariovendasdetalhes-escolhacodproduto

Observação Final:

No subformulário VendasDetalhe Subformulário, quando se escolhe o produto, através da caixa de listagem, aparecendo, logo a seguir, o Produto, Unidade e Preço, estes três campos, como se observará, não constam na tabela VendasDetalhe e, sim, da tabela Produto, portanto, neste momento, se for alterado o nome do produto, unidade e preço, ficará também modificado tais registros na tabela de origem (Produto) e, consequentemente, em todos os registros de vendas relacionados a este produto que teve seu cadastro alterado.

É possível, de outra forma, puxar, por exemplo, o preço, pesquisado inicialmente da tabela Produto (campo Preço), mas exportado (através de linguagem VB) para um campo específico criado, incialmente, na tabela VendasDetalhe e, assim, pode-se-á digitar um preço diferente, quando o registro da venda especificamente abordasse um novo valor, neste caso. Mas, desta forma, ao contrário de situação anterior, o novo preço digitado não modificará o valor original constante na tabela Produto, e, portanto, não alterará os outros registros de vendas dependentes do valor anteriormente cadastrado. Esse assunto será abordado futuramente.

Carpe diem.

1 Resposta para "Criando um formulário com campos relacionados de registros em tabelas diversas"

como fazer buscas em uma formulario usando o subformulario?

Deixe uma resposta

 

Dezembro 2008
D S T Q Q S S
« Out    
 123456
78910111213
14151617181920
21222324252627
28293031  

Estatísticas

  • 40,048 visitas