VB 2008 - Criando uma aplicação completa com LINQ To SQL III
Na primeira parte do artigo - VB 2008 - Criando uma aplicação completa com LINQ To SQL - I - definimos nosso objetivo e preparamos todo o ambiente criando as stored procedures e efetuando o mapeamento objeto relacional via LINQ To SQL.
Na segunda parte do artigo - VB 2008 - Criando uma aplicação completa com LINQ To SQL - II - criamos a camada de negócio contendo os métodos que serão usados na aplicação para manter a tabela Shippers.
Agora só falta criar a camada de interface , que no nosso caso será uma aplicação Windows, que será responsável pela interação com o usuário.
Vou criar uma interface bem simples para que fique bem claro a utilização do mapeamento O/R feito pelo LINQ To SQL. A interface da nossa aplicação será composta de 5 relatórios conforme a seguir:
O formulário Principal
- Componentes usados no formulário - DataGridView1 - Button1(Add), Button2(Update), Button3(Delete), ..., Button6(Exit) |
Código do formulário - frmMain.vb
- declaração de variáveis que serão usadas para capturar os dados do DataGridView
Public
idShippers As Integer- Código do evento Load do formulário
Private Sub
Form1_Load_1(ByVal sender
As System.Object, ByVal e
As System.EventArgs)
Handles MyBase.Load showshippers() End Sub |
O evento Load chama a rotina showshippers() que é usada para exibir todos os dados da tabela Shippers. Veja a seguir o código desta rotina:
Private
Sub showshippers() DataGridView1.DataSource = BAL.ListShippers() End Sub |
A rotina showshippers() usa o método ListShippers() da nossa camada de negócios (BAL). Apenas para você lembrar veja abaixo o código usado para definir esta função:
Public Shared Function ListShippers() Dim db As New ShippersDataContext Dim shippers = From s In db.ListShippers Return shippers.ToList End Function |
Vejamos a seguir o código de cada um dos botões de comando do formulário:
Private
Sub Button1_Click(ByVal
sender As
System.Object, ByVal
e As System.EventArgs)
Handles
Button1.Click
My.Forms.frmAdd.ShowDialog() showshippers() End Sub |
|
||
Botão Add |
|||
Private
Sub Button2_Click(ByVal
sender As
System.Object, ByVal
e As System.EventArgs)
Handles
Button2.Click
If nameCompany =
String.Empty
And phoneCompany =
String.Empty
Then MsgBox("Select a Grid row to update") Else My.Forms.frmUpdate.ShowDialog() showshippers() End If End Sub |
|
||
Botão Update |
|||
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickIf nameCompany = String.Empty And phoneCompany = String.Empty Then MsgBox( "Select a grid row to delete.") ElseMy.Forms.frmDelete.ShowDialog() showshippers() End If End Sub
|
|
||
Botão Delete |
|
||
Private
Sub Button4_Click(ByVal
sender As
System.Object, ByVal
e As System.EventArgs)
Handles
Button4.Click
My.Forms.frmSearch.ShowDialog()
End
Sub
|
|
||
Botão Search |
|
||
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.ClickIf (MsgBox("Are your Sure ? ", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then Me.Close() End If End Sub
|
|
||
Botão Exit |
|
||
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Clickshowshippers() End Sub
|
|
||
Botão All |
Uma rotina muito importante usada no sistema é a que seleciona o nome da empresa (nameCompany) e fone da empresa (phoneCompany) quando o usuário seleciona uma linha do DataGridView.
A rotina ocorre quando uma célula do Grid é clicada, neste momento selecionamos os valores dos campos
Private
Sub
DataGridView1_CellClick(ByVal
sender As
Object,
ByVal e
As System.Windows.Forms.DataGridViewCellEventArgs)
Handles
DataGridView1.CellClick idShippers = Me.DataGridView1.Item(0, e.RowIndex).Value.ToString()nameCompany = Me.DataGridView1.Item(1, e.RowIndex).Value.ToString() phoneCompany = Me.DataGridView1.Item(2, e.RowIndex).Value.ToString() End Sub |
Como as variáveis nameCompany e phoneCompany foram declaradas no início do formulário são visíveis em todo o projeto. Os valores são então exibidos nos TextBox dos formulários frmUpdate e frmDelete conforme abaixo:
TextBox1.Text =
My.Forms.FrmMain.idShippersTextBox2.Text =
My.Forms.FrmMain.nameCompanyTextBox3.Text =
My.Forms.FrmMain.phoneCompanyVejamos a seguir o código de cada um dos formulários usados no sistema:
Public Class frmAdd Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickBAL.AddShippers(TextBox1.Text, TextBox2.Text) Me.Close() End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class
|
|
Public Class frmUpdatePrivate Sub frmUpdate_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Text = My.Forms.FrmMain.idShippersTextBox2.Text = My.Forms.FrmMain.nameCompanyTextBox3.Text = My.Forms.FrmMain.phoneCompany End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click BAL.UpdateShippers(TextBox2.Text, TextBox3.Text, TextBox1.Text) End Sub
|
|
Public Class frmDeletePrivate Sub frmDelete_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Text = My.Forms.FrmMain.idShippersTextBox2.Text = My.Forms.FrmMain.nameCompanyTextBox3.Text = My.Forms.FrmMain.phoneCompany End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (MsgBox("Are you sure ?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then BAL.DeleteShippers(TextBox1.Text) End If End SubEnd Class
|
|
Public Class frmSearchPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If txtCompanyName.Text <> String.Empty Then FrmMain.DataGridView1.DataSource = BAL.SearchShippers(txtCompanyName.Text) End If End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub End Class
|
Note que usamos os métodos criados na camada de negócio para realizar as operações :
A seguir apresento algumas telas obtidas com a execução do programa:
A tela apresentando todos os registros da tabela Shippers | |
A atualização de um registro, iniciando com a seleção do registro no Grid e atualização no formulário. | |
A tela para selecionar determinados registros. A letra M irá selecionar todos os nomes que iniciam por M. | |
A exibição dos registros selecionados e a exclusão de um registro após seleção no Grid. |
Como você pode acompanhar desenvolvermos uma pequena aplicação com acesso a dados contendo as funcionalidades básicas com LINQ To SQL de uma forma bem simples e rápida. Perceba que você não precisou se preocupar com strings de conexão , objetos connection , command , etc.
Sabes por quê ?
Porque tudo ficou transparente graças ao mapeamento objeto relacional feito pelo LINQ To SQL.
Eu não me preocupei em realizar um tratamento de erros , nem usar outros recursos visto que o objetivo era mostrar como usar LINQ to SQL para criar uma aplicação completa com acesso a dados.
O resto agora é com você : estude, aperfeiçoe e divirta-se...
Veja os Destaques e novidades do SUPER CD VB 2012 (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super CD .NET e no Super DVD .NET , confira... Quer aprender C# ?? Chegou o
Super DVD C# 2012
com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Até o próximo artigo sobre LINQ.