VB.NET - Exibindo registros selecionados com TabControl


Neste artigo vou mostrar mais um recurso que você pode usar para manutenção/apresentação de dados usando os controles DataGrid e  TabControl.

Vamos usar também o namespace System.Data.SqlClient que irá fornecer as classes para acesso a um banco de dados SQL Server.

Nosso objetivo é obter duas visões dos dados da tabela Customers do banco de dados Northwind presente no SQl Server.

Vamos então construir esta interface usando o controle TabControl e o controle DataGrid.

Inicie um novo projeto no VS.NET do tipo Windows Application usando a linguagem VB.NET ; dê ao projeto o nome de dgSelecionaRegistro.(ou qualquer outro nome que julgue pertinente)

Altere também a propriedade Name do formulário para frmClientes.

No formulário padrão inclua (arraste e solte) o controle TabControl a partir da caixa de ferramentas (ToolBox).

Vamos agora criar duas abas no controle TabControl. Para isto selecione o controle e na janela de propriedades localize a propriedade TagPages ; clique no botão com os três pontinhos para  criar e atribuir nomes para as duas abas que vamos criar. Veja a figura abaixo:

- Altere a propriedade Name do controle para tabSelecionaRegistro.

Vamos definir o namespace a ser usado e as variáveis de acesso aos dados. Abaixo temos estas declarações:

A declaração do namespace usados deve ser feita no início do projeto.

Imports System.Data.SqlClient

Definição das variáveis que deve ser feita no início do formulário.

Private Const strConexao As String = "server=(local);trusted_connection=true;database=Northwind;Integrated Security=SSPI"
Private
Const strSQL As String = "SELECT CustomerID, CompanyName, ContactName, Address, City, Region, Country, Phone from Customers"}
Private
posicaoRegistro As Integer = 0
Private
ds As DataSet

Acima estamos definindo a string de conexão com o banco de dados Northwind do SQL Server e a instrução SQL que será usada para selecionar os dados da tabela Customers.

Vamos selecionar a aba Relação de Clientes e incluir no controle TabControl o componente DataGrid, conforme a figura abaixo:

Nome dos controles :

DataGrid - dgClientes
 

 

A seguir clique na aba - Cliente Selecionado -  inclua os controles label e TextBox para cada campo que desejamos exibir, conforme abaixo:

Vamos incluir também uma controle Label com o nome de lblRegistros que irá exibir o registro atual e o número total de registros da tabela.

Vamos agora ao código do projeto:

1- No evento Load do formulário temos o código que irá preencher um dataset com os dados da tabela Customers e exibir todos os dados no datagrid.

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim da As SqlDataAdapter

        ' Cria o SqlDataAdapter.
        da = New SqlDataAdapter(strSQL, strConexao)

        ' Mapeia a tabela Customers
        da.TableMappings.Add("Table", "Customers")

        ' preenche o dataset
        ds = New DataSet
        Try
            da.Fill(ds)
        Catch ex As Exception
            MsgBox(ex.Message())
            Exit Sub
        End Try

        ' Vincula o controle DataGrid ao datatable Customers
        dgClientes.SetDataBinding(ds, "Customers")
    End Sub

Quando o usuário clicar em um determinado cliente do DataGrid iremos exibir os dados referente ao cliente na aba - Cliente Selecionado, para isto usamos o seguinte código no

Private Sub dgClientes_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgClientes.Click
        Me.posicaoRegistro = dgClientes.CurrentRowIndex
        carregaDados()
End Sub

 

Perceba que atribuímos a posição atual do registro á variável posicaoRegistro e chamamos a rotina carregaDados(). O código desta rotina é o seguinte:

 

Private Sub carregaDados()
        Dim campo As DataRow
     'sua a posição atual do registro criar uma linha de dados 
        campo = ds.Tables(0).Rows(posicaoRegistro)
        'preenche os controles TextBox com os dados
        Me.txtCodigo.Text = campo(0)
        Me.txtEmpresa.Text = campo(1)
        Me.txtContato.Text = campo(2)
        Me.txtEndereco.Text = campo(3)
        Me.txtCidade.Text = campo(4)
        'verificamos se o campo é null
        Me.txtRegiao.Text = IIf(campo(5) Is DBNull.Value, "Nulo", campo(5))
        Me.txtPais.Text = campo(6)
        Me.txtTelefone.Text = campo(7)

        'exibe o núemro do  registro atual e o total de registro
        Me.lblRegistros.Text = "Registro " & Me.posicaoRegistro + 1 & " de " & ds.Tables(0).Rows.Count

    End Sub

Executando o projeto temos na primeira visão , na aba Relação de clientes , todos os clientes sendo exibidos no datagrid. A clicar em um cliente e selecionarmos a aba - Cliente Selecionado - teremos os dados do cliente exibidos conforme a figura abaixo:

Pegue o código do projeto aqui : selecionaRegistro.zip

Eu sei , é apenas VB.NET , mas eu gosto...


José Carlos Macoratti