 VB 2005  - Passando dados entre formulários em 
aplicações Windows
 VB 2005  - Passando dados entre formulários em 
aplicações Windows
Se você usava as versões anteriores do Visual Basic provavelmente já realizou a tarefa de passar dados entre formulários diversas vezes. Em tempos de .NET bateu a dúvida . Como posso fazer a mesma coisa agora no VB 2005.
Neste artigo eu estou usando o Visual Basic 2005 Express Editon e o banco de dados Northwind.mdb (conhece?).
Para iniciar vamos desenhar o cenário no qual vamos atuar:
- Vamos usar as tabelas 
Customers e Orders do banco de dados Northwind.db;
- Em um formulário vamos exibir os dados da tabela Customers em um 
controle DataGridView;
- Em um segundo formulário vamos exibir os dados da tabela Orders;
Objetivo : Permitir que o usuário selecione um Cliente no primeiro formulário e exiba os dados do Pedido do cliente no segundo formulário.
Neste artigo você vai aprender a:
Criar um projeto Windows Forms;
Criar e configurar um dataset usando o assistente de configuração de fonte de dados;
Criar um controle de dados vinculado arrastando os itens da janela Data Sources para o formulário;
Criar uma consulta em um TableAdapter para selecionar os pedidos para um cliente específico
Criando um novo projeto WIndows Forms
1- Abra o Visual Basic 2005 Express Edition e a partir do menu File selecione a opção New Project ;
2- Na janela New Project selecione o template Windows Application dando ao projeto nome de : dadosEntreFormularios;
|  | 
3- No menu Data selecione a opção Show Data Sources (Shift+Alt+D);
4- Na janela Data Sources , selecione Add New Data Sources para iniciar o assistente de configuração;
5- Na página Choose a Data Source Type selecione DataBase e clique no botão Next>
6- Na janela Choose Your Data Connection , seleciona a conexão com o banco de dados Northwind.mdb e expanda a opção Connection String para ver a string de conexão usada;
Nota: Se ainda não existir uma conexão com o banco de dados clique no botão New Connection e na janela Add Connection selecione o banco de dados Microsoft Access e selecione o caminho e nome do banco de dados.
|  | 
7- Na próxima janela salve a string de conexão com o nome sugerido : NorthwindConnectionString e clique no botão Next>
8- Expanda o objeto Tables e selecione as tabelas Customers e Orders clicando a seguir no botão Finish.
|  | 
Ao final veremos criado na janela Solution Explorer o esquema NorthwindDataSet.xsd e na janela Data Sources as tabelas Customers Orders.
|  | 
Exibindo os dados da tabela Customers no primeiro formulário
Vamos exibir os dados da tabela Customers no formulário.
A partir da janela Data Source arraste e solte a tabela Customers no formulário:
|  | 
Será criado no formulário um DataGridView e um tool strip para navegação pelos registros. Serão criados também os seguintes objetos:
CustomersTableAdapter
CustomersBindingSource
CustomersBindingNavigator
Criando o segundo formulário para exibir os dados dos pedidos
A partir do menu Project selecione a opção Add Windows Forms e inclua um novo formulário ao projeto usando o nome padrão form2.vb
A partir da janela Data Sources arraste e solte a tabela Orders para formulário form2.vb e exclua o objeto OrdersBindingNavigator do formulário:
|  | 
Quando arrastamos a tabela Orders para o formulário se observamos a bandeja de componentes abaixo do formulário vemos que ele adicionou quatro componentes ao formulário. NorthwindDataSet, OrdersTableAdapter, OrdersTableAdapter que é usado para preencher a tabela OrdersDataTable do NorthwindDataSet com dados do banco de dados.
Até mesmo a única linha de código para executar esse Fill (preenchimento) já foi escrita e automaticamente adicionada ao manipulador de eventos Load de Form1. (Confira)
Incluindo uma consulta no TableAdapter
Vamos incluir uma consulta no objeto TableAdatper para carregar os pedidos a partir de um cliente selecionado no primeiro formulário.
Na janela Solution Explorer clique duas vezes sobre o dataset NorthwindDataSet.xsd; a seguir clique com o botão direito do mouse sobre OrdersTableAdapter e selecione Add -> Query;
|  | 
Na janela do assistente aceite a opção marcada - Use Select Statements - e clique no botão Next>
Na janela Choose a Query Type marque a opção - SELECT which returns rows - e clique em Next>
Na próxima tela do assistente inclua a cláusula WHERE para consultar os pedidos com base no código do cliente (CustomerID):
WHERE (CustomerID = ?) Nota: Se fosse um banco de dados SQL Server teríamos que usar a sintaxe: WHERE (CustomerID = @CustomerID)
|  | 
Na tela seguinte desmarque a opção - Return a DataTable e informe o nome do método Fill DataTable como: FillByCustomerID;
|  | 
Clique em Finish para encerrar.
Se você olhar no esquema NorthwindDataSet.xsd verá a nova consulta : FillByCustomerID(CustomerID) criada. Esta consulta recebe como parâmetro o código do cliente(CustomerID).
| Você usa o TableAdapter 
    para se conectar a um banco de dados e executar consultas (ou procedimentos 
    armazenados) nesse banco de dados, bem como para preencher com dados um 
    DataTable associado. Cada par DataTable-TableAdapter é indicado 
    simplesmente como um TableAdapter. O TableAdapter é essencialmente um invólucro ao redor de um DataAdapter padrão, que oferece vários benefícios: 
 Jackie Goldstein - Renaissance Computer Systems | 
Clique duas vezes no formulário form2.vb e substitua o método Form_Load pelo seguinte método:
| Friend
    Sub 
    carregaPedidos(ByVal 
    CustomerID As String) Me.OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID) End Sub | 
Com isso estamos executando a consulta FilByCustomerID na carga do formulário passando o código do cliente (CustomerID) para que somente os pedidos do respectivo cliente sejam selecionados.
Voltemos agora ao formulário form1.vb.
Inclua a seguinte rotina no evento DoubleClick do controle DataGridView:
| Private
    Sub 
    CustomersDataGridView_DoubleClick(ByVal 
    sender As
    Object,
    ByVal e
    As System.EventArgs) Handles 
    CustomersDataGridView.DoubleClick Dim linhaSelecionadaVisao As Data.DataRowView Dim linhaSelecionada As NorthwindDataSet.CustomersRow linhaSelecionadaVisao = CType(CustomersBindingSource.Current, 
    System.Data.DataRowView) Dim pedidos
    As
    New Form2 End Sub | 
Um DataRowView representa uma visão customizada de um DataRow; Um DataRow representa uma linha de um DataTable.
Ao executarmos o projeto, o formulário form1.vb será carregado exibindo os dados da tabela Customers. Clicando duas vezes sobre um cliente no DataGridView o formulário form2.vb será exibido com os pedidos do cliente selecionado conforme figura abaixo:
|  | 
Pegue o projeto completo aqui 
: 
Aguardo você no próximo artigo VB.NET... 
 
  
José Carlos Macoratti