VB.NET 2005 - Conectando com objetos de dados


Este artigo apresenta como criar objetos para gerenciar informações de negócios e em seguida mostra como criar um objeto como fonte de dados para estes objetos. Mostra também como usar TableAdapters para obter dados a partir de um banco de dados e preencher os objetos de dados.

O objeto da  fonte de dados é criado pela execução do assistente de configuração de fonte de dados selecionando como tipo de dados a opção Object. Depois de completar o assistente as propriedades públicas do objeto estarão disponíveis na janela Data Source para que você possa efetuar a vinculação dos objetos com controles em formulário Windows.

As tarefas a serem realizadas neste artigo são as seguintes:

Desenhando o cenário para a nossa aplicação:

Você possui um banco de dados que contém uma tabela chamada Clientes e deseja criar uma aplicação Windows, usando o VB 2005, para gerenciar os seus dados através da criação de objetos de negócio que representam os Clientes. Deseja também poder exibir em um formulário os dados desta tabela e também preencher os seus objetos de dados com os dados do banco de dados.

Nota: Não importa qual seja o seu banco de dados desde que haja um provedor através do qual possamos efetuar uma conexão com ele. Neste artigo eu vou usar o banco de dados Microsoft Access.

Na figura abaixo temos a estrutura da tabela Clientes do banco de dados Vendas.mdb :

Obs: A tabela foi criada com apenas 3 campos para facilitar o entendimento.

1- Criando um o projeto Windows

Abra o Visual Basic 2005 Express Edition e crie um novo projeto do tipo Windows Application  chamado vendasNetObjetos;

2- Criando os objetos de Negócio : Clientes e Pedidos

Vamos criar agora os objetos de negócio que irão representar as informações da tabela Clientes

No menu Project selecione a opção Add Class;

Na janela Add New Item selecione o template Class e informe o nome Clientes.vb clicando a seguir no botão Add;

A seguir inclua o seguinte código na classe Clientes:

Public Class Clientes


Public
Sub New()

End Sub

Public Sub New(ByVal clienteID As Integer, _

                       ByVal nome As String, _

                       ByVal endereco As String)


                clienteID_ = clienteID

                nome_ = nome

                endereco_ = endereco

End Sub
 

Private clienteID_ As Integer


Public
Property clienteID() As Integer

Get

     Return clienteID_

End Get

Set(ByVal value As Integer)

     clienteID_ = value

End Set

End Property
 

Private nome_ As String


Public
Property nome() As String

Get

    Return nome_

End Get

Set(ByVal Value As String)

    nome_ = Value

End Set

End Property
 

Private endereco_ As String


Public
Property endereco() As String

Get

     Return endereco_

End Get

Set(ByVal Value As String)

    endereco_ = Value

End Set

End Property

Public Overrides Function ToString() As String

    Return Me.nome & " (" & Me.clienteID & ")"

End Function
 

End Class

A classe Clientes possui como membros os campos definidos na tabela Clientes. Além disso estamos sobrescrevendo a função ToString para poder exibir o nome do cliente seguido do seu código.

Neste ponto já temos a classe Clientes.vb pronta. Ela representa os dados da tabela Clientes.

Criando um objeto de fonte de dados

Podemos criar uma fonte de dados baseada nos objetos criados previamente através do assistente de configuração de Data Source. Vejamos como fazer isso:

Criando o formulário para vinculação dos dados

Os controles que serão vinculados ao ao objeto Clientes podem ser criados arrastando os items da janela Data Sources no formulário. Desta forma para criar um formulário com controles vinculados as propriedades do objeto Clientes devemos fazer o seguinte:

Ao final do processo você verá os controles serem criados no formulário bem com o objeto ClientesBindingNavigator para navegação e o objeto ClientesBindingSource para vinculação dos controles com a fonte de dados.

Criando um TableAdapter para carregar os dados da tabela no objeto

Para mover os dados entre os objetos e o banco de dados vamos usar o recurso TableAdapters. Para criar um TableAdapter para a tabela Clientes vamos usar o assistente de configuração de Data Source;

Neste momento será criado o dataset VendasDataSet e exibido na janela Data Sources contendo a tabela Clientes;

Vamos agora incluir instâncias dos objetos ClientsTableAdapters e VendasDataSet ao formulário arrastando e soltando estes objetos a partir da ToolBox para o formulário form1.vb conforme a figura abaixo:

Se executarmos o projeto neste momento qual será o resultado ? Veja abaixo o resultado obtido:

Como você pode notar embora tenhamos os objetos criados e as instâncias do dataset e do tableAdapter também criados falta mover os dados da tabela clientes para os controles vinculados no formulário. Para isso teremos que criar uma rotina em nosso projeto para carregar os dados nos objetos usando o TableAdapter.

Inclua o código abaixo no formulário form1.vb:

Private Sub carregaClientes()

Dim clientesDados As VendasDataSet.ClientesDataTable = ClientesTableAdapter1.GetData
Dim clientesLinha As VendasDataSet.ClientesRow

For Each clientesLinha In clientesDados
   Dim clienteAtual As New Clientes()

   With clienteAtual
       .clienteID = clientesLinha.clienteID
       .nome = clientesLinha.Nome
        If Not clientesLinha.IsEnderecoNull Then
             .endereco = clientesLinha.Endereco
         End If
    End With
    ClientesBindingSource.Add(clienteAtual)
Next

End Sub

No código da rotina carregaClientes() criamos um DataTable chamado ClientesDados onde obtemos os dados da tabela Clientes através do método GetData do TableAdapter. Em seguida percorremos o DataTable e atribuímos os valores de cada linha (clientesLinha) ao objeto clienteAtual que é uma instância da classe Clientes. Para finalizar efetuamos a vinculação do objeto via BindingSource para exibir os dados no formulário.

Para chamar a rotina criada inclua uma chamada à mesma no evento Load do formulário form1:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    carregaClientes()
End Sub

Agora ao executar o projeto o formulário irá exibir os dados permitindo a navegação pelos registros:

Eu removi os botões para incluir, excluir e alterar os dados visto que não implementei estas funcionalidades no projeto. Isso fica como um melhoramento que você pode fazer e que em artigos futuros estarei abordando.

Pegue o projeto completo aqui: vendasNetObjetos (sem o banco de dados)

E até o próximo artigo VB.NET ...