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.
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;
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;
Na próxima tela, escolha a classificação, se desejada. Avançar.
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;
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;
Na última tela, confirme o rótulo que deseja para coluna de pesquisa. Mantenha o nome e clique em 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:
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):



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;

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;

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


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.

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

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.
8 Dezembro 2009 às 11:51
como fazer buscas em uma formulario usando o subformulario?