DataRelations - Relacionamentos de Tabelas no VB.NET

O objetivo deste TM é mostrar como você pode criar relacionamentos entre tabelas dentro do Visual Basic.NET, por código ou ferramenta visual. Com esse recurso podemos até mesmo criar relacionamentos entre tabelas que não possuem esse relacionamento definido no banco de dados, ou seja, ele terá efeito apenas para a aplicação desenvolvida ...

17/07/03h

Diminuir o tamanho das letras Aumentar o tamanho das letras
Microsoft .NET

O objetivo deste TM é mostrar como você pode criar relacionamentos entre tabelas dentro do Visual Basic.NET, por código ou ferramenta visual. Com esse recurso podemos até mesmo criar relacionamentos entre tabelas que não possuem esse relacionamento definido no banco de dados, ou seja, ele terá efeito apenas para a aplicação desenvolvida. Para que você entenda o desenvolvimento é recomendado que possua bons conhecimentos de programação, ADO.NET, Visual Basic e estrutura de Banco de Dados.

Software utilizado :

- Microsoft Visual Studio.NET 2003 Enterprise Architect (também conhecido como "Everett" ou versão 7.1) - Beta Final
- Microsoft SQL Server 2000 Personal Edition

Requisitos do sistema: (Para instalação completa, que contém todas as linguagens e recursos)

- Processador Intel Pentium II /AMD K6-2 a partir de 450 Mhz (Pentium III/AMD Duron a partir de 600 Mhz recomendados)

- Memória RAM: 96 Mb para Windows 2000 Pro (Recomendado 128 Mb), 192 Mb para Windows 2000 Server (Recomendado 256 Mb), 96 Mb para Windows XP Home (Recomendado 160 Mb) e 192 Mb para Windows XP Pro/Windows Server 2003 (Recomendado 256 Mb)

- 4.1 GB no drive da instalação e 900 Mb no drive do sistema

- Sistema Operacional: Windows 2000*, Windows XP ou Windows Server 2003 (é possível executar aplicações desenvolvidas com o VS.NET no Windows 98/Me/NT 4 mas não é possível desenvolver as aplicações nesses sistemas).  * o Windows 2000 Datacenter Server não é suportado.     

- Drive de CD-ROM ou DVD-ROM

- Internet Explorer 5 ou superior

- Placa de vídeo e monitor que suporte resolução de 800x600 e 256 cores (Recomendado High Color 16-Bit)

- Mouse

O objeto DataSet possui dentro de si uma coleção de objetos DataRelations. Estes objetos por sua vez são responsáveis por definir os relacionamentos entre tabelas pertencentes ao DataSet. Em nosso tutorial popularemos um DataGrid com tabelas do banco de dados de exemplo Northwind do SQL Server 2000. Primeiramente abra o Visual Studio.NET e crie um novo projeto "Windows Application" do VB.NET:


Novo Projeto

Dê o nome de Relations e clique em OK. Será criado o form padrão. Agora coloque no form um componente DataGrid (chamado "Grid") e dois componentes Button (chamados "btnSem" e "btnCom"), o botão "btnSem" deverá ter o texto "Sem relacionamento" e o botão "btnCom" o texto "Com relacionamento". Veja o layout do form:


Layout do Form

Após isso vamos criar os objetos para copmunicação com o banco de dados: selecione a aba "Data" da Toolbox e crie um objeto SqlConnection (chamado "Conexao"), dois objetos SqlDataAdapter (chamados "DaCustomers" e "DaOrders"), o objeto "DaCustomers" deve obter dados da tabela Customers através da query "SELECT CustomerID, CompanyName, ContactName FROM Customers" e o objeto "DaOrders" através da query "SELECT OrderID, CustomerID, OrderDate, ShipCity, ShipCountry FROM Orders".

Após configurar os DataAdapters, gere um Typed DataSet chamado "DsRelations1" que contenha as tabelas "Customers" e "Orders" (para aprender mais sobre ADO.NET e Typed Datasets consulte os tutoriais "Mudança do ADO para o ADO.NET" e "Usando Typed Datasets no Visual Basic.NET"). Veja a área de componentes invisíveis em tempo de execução já com os objetos criados:


Objetos criados

Vamos agora adicionar o código ao nosso programa. Digite a seguinte linha no topo do editor de código, antes de qualquer outro código:

   Imports System.Data.SqlClient

O código abaixo deve ser digitado no evento Form1_Load:

Conexao.Open()
DaCustomers.Fill(DsRelations1, "Customers")
DaOrders.Fill(DsRelations1, "Orders")
Conexao.Close()

Agora colocaremos o código para os botões. Primeiro para o botão "btnSem":

DsRelations1.Relations.Clear() 'apaga qualquer relacionamento existente
Grid.DataSource = DsRelations1
Grid.DataMember = "Customers"

Agora para o botão "btnCom":

DsRelations1.Relations.Add("CusOrd",DsRelations1.Customers.CustomerIDColumn, DsRelations1.Orders.CustomerIDColumn)
Grid.DataSource = DsRelations1
Grid.DataMember = "Customers"

Vejamos a sintaxe do comando que adiciona o relacionamento à tabela:

   DataSet.Relations.Add("Nome", Coluna Pai, Coluna Filha)

Para que não reste qualquer dúvida, veja a janela de código logo abaixo:


Janela de código

Agora basta executar o programa, pressione F5. Vejamos as situações que podem occorer:


Resultado obtido pressionando o botão "Sem relacionamento"




 

Resultado obtido pressionando o botão "Com relacionamento"

Note que ao clicarmos no pequeno sinal de adição "+", exibido ao lado de cada registro, será mostrado o nome do relacionamento que criamos como um link. Ao clicar nesse link serão exibidos todos os registros da tabela "Orders" que tenham o mesmo "CustomerID" da tabela "Customers", veja como ficará o grid após clicarmos no link:


Registros relacionados com o registro selecionado

Podemos criar os relacionamentos via ferramenta visual: para isso selecione a janela "Solution Explorer" e clique duas vezes sobre o arquivo "DsRelations.xsd". Será mostrado o diagrama das tabelas do DataSet "DsRelations1":


Arquivo "DsRelations.xsd"



Diagrama das tabelas (clique para ver a imagem inteira)

Após isso selecione um objeto "Relation" na Toolbox e arraste para um espaço vazio no diagrama, isso irá criar um relacionamento. Veja o objeto na toolbox:


Objeto Relation
 

Devemos configurar a tabela-pai e a tabela-filha e os campos relacionadas: para isso usaremos a janela "Edit Relation" que é exibida quando arrastamos o objeto para o digrama, veja como devem ficar as opções:


Criando objeto Relation

Em Name digite "CustomersOrders", em Parent Element selecione a tabela Customers e em Child Element selecione a tabela Orders. Em Fields tanto Key Fields quanto Foreign Key Fields dever ser o campo "CustomerID". Clique em OK e o relacionamento estará criado. Veja o diagrama:


Relacionamento criado

Note que após criar o relacionamento visualmente, você não precisa inserir o método "DsRelations1.Relations.Add" para relacionar as tabelas pois elas já serão inicializadas assim. Note também que executar o método "DsRelations1.Relations.Clear" apagará qualquer relacionamento existente - porém somente durante a execução do programa, que ao ser reiniciado conterá todos os relacionamentos já estabelecidos via diagrama.

Conclusão

A utilização do relacionamento entre tabelas é uma prática muito boa e contribui para a criação de bancos de dados mais consistentes e seguros. Com a inclusão da possibilidade da criação de relacionamentos entre as tabelas de um DataSet mesmo que não exista relacionamento algum no banco de dados, expande-se o leque de recursos disponíveis ao desenvolvedor que pode trabalhar com as tabelas e componentes de acesso a banco de dados como um banco de dados relacional à parte, armazenado em memória e manipulá-los como quiser.

Marcas Registradas
Visual Basic.NET, Visual Studio.NET, Windows, SQL Server são marcas registradas da Microsoft Corporation.
Todos os demais nomes registrados, marcas registradas ou direitos de uso citados neste TM pertencem a seus respectivos proprietários.

 

Autor original:  ClawHammer
Direitos Autorais:  BABOO




imprima este artigo
envie este artigo via e-mail

 

Artigos relacionados


Mais Notícias desta Área

Últimas Notícias
 
 Software  |  Hardware  |  Segurança  |  Tecnologia  |  Tutoriais  |  Download  |  Web  | Desenvolvimento  |  Fórum 
 Mundo Corporativo  |  Carreira  |  Mercado  |  Telecom  |  Servidores  |  Tecnologia 
    BABOO é um site brasileiro de TI focado em informática, tecnologia, software,hardware, tutoriais e downloads, e soluções de dúvidas através do nosso fórum.

 

Artigos do BABOO