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

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.

3 comentários sobre “Criando um formulário com campos relacionados de registros em tabelas diversas

  1. Renato Gamoeda disse:

    prof. bom dia.
    sou um corretor de imóvel recem formado e estou tentando aplicar alguns controles no dia a dia de meu trabalho para simplificar ou melhor controlar as atividades.
    Fazemos cadastros de clientes pelo sistema da imobiliária para novos lançamentos. posteriormente vendemos os imóveis. existe um corretor responsável pelo cadastro mas não necessariamente ele será o vendedor do mesmo. preciso saber (1) se quem cadastrou vendeu. (2) se o comprador já havia sido cadastrado anteriormente ou não.
    criei tabelas onde estão os cadastros e outra de vendas. cruzo as mesmas e se houver cadastro consigo saber quem cadastrou e quem vendeu mas não aparece o registro se não houver cadastro anterior.
    Ex. eu cadastrei e outro vendeu para o meu cadastrado. Ok
    eu vendi mas o cliente não estava cadastrado. eu gostaria de ter o registro que indicasse a ausência do cadastro anterior. Isto vai ajudar a avaliar a eficiência do processo de cadastros anteriores ao lançamento.
    agradeço a sua atenção e paciência

  2. fellipe_campos@outlook.com disse:

    Boa tarde, estou com uma duvida que a principio acredito ser simples de resolver mas como sou novato em access, complicou um pouco, tenho uma tabela com os indices IGPM e INCC, e mês a mes são atualizados este indice, em uma outra tabela possuo valores a serem corrigidos ou pelo igpm ou pelo INCC, como faço para que depois de escolher um mês /ano e o indice ( igpm ou incc) o respectivo percentual de correção fique disponivel?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s