SQL - Selecionando informações de Tabelas relacionadas e exibindo-as em um Grid.

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'

Mas você não se contentou somente em obter os relacionamentos entre as tabelas , você ainda descobriu que:

- Codaluno da tabela tblalunos é um campo que é uma chave primária , ou seja, cada aluno tem somente um código de identificação
- CodCurso da tabela tblcursos também é uma chave primária , e cada curso tem somente um código de identificação.(vamos simplificar , senão...)
- Na tabela tblnotas os campos codaluno,codcurso,ano,bimestre estão indexados e permitem a duplicação
- Existe um relacionamento de um-para-muitos entre as tabelas tblalunos - tblnotas e entre as tabelas tblcursos-tblnotas

E então, Eureka !! ai o formulário do projeto surgiu na sua mente e você tratou logo de desenhar a interface.(puxa você é bom mesmo !). Veja abaixo o seu formulário.

| 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.

E como vai funcionar o seu projeto ? Quer explicar , por favor ...e seja didático hein !

O projeto deverá funcionar como descrito abaixo :

1. Quando da execução do sistema haverá a carga do formulário acima , que será o único formulário do projeto.Iremos chamá-lo de frmprinc.
2. Ao carregar o formulário o sistema irá preencher as caixas de combinação com o nome dos alunos ( combo1), e com o nome dos cursos ( combo2 ) .
3. O usuário irá clicar na combo1 selecionando um aluno e na combo2 selecionando um curso
4. A seguir o usuário clica no botão de comando Processar e o sistema irá montar uma consulta SQL com os dados selecionados e irá exibir o resultado , as notas , no Grid .

E por hoje é só.bye...

retorna