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
Public
nameCompany As String
Public
phoneCompany As String

- 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

 
  • Abre o formulário frmAdd ;
  • Chama a rotina ShowShippers()

 

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

  • Verifica se o nome e o fone da empresa foram informados no GridView;
  • Abre o formulário frmUpdate;
  • Chama a rotina ShowShippers()
  •  

Botão Update

 

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click


If
nameCompany = String.Empty And phoneCompany = String.Empty
Then

    MsgBox("Select a grid row to delete.")

Else

    My.Forms.frmDelete.ShowDialog()

showshippers()

End If

End Sub

 

  • Verifica se o nome e o fone da empresa foram selecionados no GridView;
  • Abre o formulário frmDelete;
  • Chama a rotina ShowShippers()

 

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

 

  • Abre o formulário frmSearch

Botão Search

 

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click


If
(MsgBox("Are your Sure ? ", MsgBoxStyle.YesNo) = MsgBoxResult.Yes)
Then

    Me.Close()

End If

End Sub

 

  • Encerra o sistema;

Botão Exit

 

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

   showshippers()

End Sub

 

  • A rotina showshippers() exibe todos os registros da tabela Shippers.

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.idShippers

TextBox2.Text = My.Forms.FrmMain.nameCompany

TextBox3.Text = My.Forms.FrmMain.phoneCompany

Vejamos 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.Click

   BAL.AddShippers(TextBox1.Text, TextBox2.Text)

Me.Close()

End Sub
 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

   Me.Close()

End Sub

End Class

 

Public Class frmUpdate


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

TextBox1.Text = My.Forms.FrmMain.idShippers

TextBox2.Text = My.Forms.FrmMain.nameCompany

TextBox3.Text = My.Forms.FrmMain.phoneCompany

End Sub


Private
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


End
Class

 

Public Class frmDelete

 

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

TextBox1.Text = My.Forms.FrmMain.idShippers

TextBox2.Text = My.Forms.FrmMain.nameCompany

TextBox3.Text = My.Forms.FrmMain.phoneCompany

End Sub


Private
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 Sub

End Class

 

Public Class frmSearch


Private
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 Sub


Private
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.


José Carlos Macoratti