Por estes dias recebi um e-mail solicitando ajuda para um problema aparentemente simples envolvendo seleção de informações entre tabelas relacionadas usando SQL . Simples para quem já conhece , mas para quem está começando agora com o Visual Basic essa questão pode ser igual a ter que cruzar o mar vermelho.E ai ?
O problema era o seguinte: Temos um banco de dados com três tabelas relacionadas; eu quero criar um formulário que possua duas combos e um grid ; as combos terão as informaçoes de duas das minhas tabelas , bem , ao selecionar as informações nas combos eu quero que os dados da terceira tabela , relacionados a minha seleção , sejam exibidos no Grid . Todos entenderam o xis da questão ?
Vamos supor que você é o analista-programador de uma escola , esta escola tem um sistema que gerencia as informações sobre os alunos, cursos, notas, professores, etc... (O sistema foi feito em VB , claro ! e adivinhe por quem ???). Bem, neste sistema você tem um banco de dados chamado escola.mdb (que nome mais sem inspiração!) e no banco de dados você tem dezenas, centenas (nossa !!) de tabelas. Você recebeu a tarefa de criar um módulo para o sistema , e neste módulo você deverá ter a informação dos alunos da escola e dos cursos que cada aluno faz, de forma que ao selecionar um aluno e um curso os sistema exibirá as notas para o aluno/curso selecionado por ano/bimestre.
Você , como bom analista-programador , analisou o banco de dados
e descobriu que a tabela tblalunos contém as informações
sobre todos os alunos da escola , que a tabela tblcursos tem as
informações sobre os cursos e que a tabela tblnotas
tem as informações sobre a nota para cada aluno/curso em
cada ano/bimestre. Bem ai perdeu a graça , ficou fácil demais
, já que você não vai precisar nada mais do que selecionar
as informações existentes.Então você se animou
e verificou que os relacionamentos entre as tabelas era o seguinte:
![]() |
Essas tabelas estão contidas
no arquivo Escola.mdb
No relacionamento um-para-vários um campo comum relaciona registros em uma tabela 'um' (possui o campo chave primária), com uma tabela 'vários' (possui o campo chave externa). Isto irá impor o seguinte : -Todo o registro na tabela 'vários' terá que ter um registro na tabela 'um' - Nenhum registro poderá ser excluido da tabela 'um' se houver um registro relacionado na tabela 'vários' |
![]() |
Controles usados no
seu formulário:
- 2 controles Frames - Frame1 e Frame2 que conterão as caixas de combinação - 2 controles combobox - Combo1 e combo2 de onde iremos selecionar o nome do aluno e o nome do curso - 1 controle DBGrid - Grid , onde iremos exibir as notas do aluno/curso selecionado - 2 botões de comandos - command1(0) e command1(1) - Um para processar a Consulta outro para Encerrar o sistema. - 1 Controle Data Control - Data1 - onde iremos vincular a nossa fonte de dados resultante da consulta SQL. |
O projeto deverá funcionar como descrito abaixo :
E por hoje é só.bye...