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