Desenvolvimento - Visual Basic .NET
Pequeno projeto de controle de pedidos de uma pizzaria em Visual Basic .Net - Parte 2
Segundo artigo. Ao final, teremos um pequeno, porém importante projeto que servirá como base para o desenvolvimento de projetos maiores. É importante que você acompanhe as explicações de todas as partes do código. O objetivo desse material é ser uma referência básica para seus futuros projetos. O modelo de programação está bem baseado no VB6. Existem outros orientados a objeto. Não foi o intuito neste artigo explorá-lo.
por Marcos Roberto de MoraesNa artigo 1, iniciamos um projeto chamado pizzaria, foi criada uma estrutura de Banco de Dados chamada de Pizza. Criou-se 04 tabelas relacionadas chamadas: Clientes, Produtos, Pedidos e PedidosItens. Também foram criados os formulário FrmSplash, o formulário MDIPrincipal e o formulário de clientes.
Nesse artigo iremos codificar nosso primeiro exemplo CRUDE (Create, Update e Delete) [ J ].
Formulário de Clientes
Na artigo anterior você criou o formulário abaixo para a sua aplicação, hoje será implementado os respectivos códigos operacionais para o cadastro. Interface projetada:
1) Dê um duplo clique no formulário e na seção geral de declarações, digite o código abaixo:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text
è As 2 primeiras linhas de código, já conhecemos, a terceira é para trabalhar com métodos da biblioteca de Classes System.Text, especificamente o objeto StringBuilder. Comentaremos em aula.
A aplicação deverá funcionar desta forma:
Assim que o formulário for carregado o usuário deverá digitar o código do cliente, caso exista o cliente já cadastrado, será exibido os seus dados no formulário, e os botões: alterar, excluir e o pesquisar deverão ficar habilitados, já os botões: incluir e cancelar deverão ficar desabilitados, caso não exista, o campo receberá a palavra <AUT> e os botões: incluir, cancelar ficarão habilitados e os demais desabilitados.
1.1) Antes, declare a variável conexão conforme orientações do professor.
Dim conexao as string = “C:\Pizza\Pizza.mdf” ‘ è aqui você deve colocar o caminho para o seu Banco no meu caso C:\Pizza\Pizza.mdf.
2) Para fazer isso iremos digitar o código abaixo no evento lostfocus da caixa de texto “txtcodigo”. Dê um duplo clique no txtcodigo e mude o evento para lostfocus.
O Código já está comentado. No entanto na aula tiraremos as dúvidas.
Private Sub TxtCodigo_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCodigo.LostFocus
"Primeiramente vamos buscar pelo código do cliente.
"Declare a variável de conexão
Dim cn As New SqlConnection(conexao)
"Procurando o Cliente pelo Código
Dim codigo As Integer
codigo = Val(TxtCodigo.Text)
Dim csql As String
csql = "Select * From Clientes where idcliente=" & codigo
Dim cm As New SqlCommand(csql, cn)
Try
cn.Open()
Dim dr As SqlDataReader
dr = cm.ExecuteReader
"Caso haja o cliente, a propriedade read do datareader
"é igual a true. Assim mostramos os dados na tela.
If dr.Read() = True Then
TxtNome.Text = dr("nomerazao")
TxtEndereco.Text = dr("endereco")
TxtBairro.Text = dr("bairro")
TxtCep.Text = dr("cep")
TxtTelefone.Text = dr("telefone")
TxtCidade.Text = dr("cidade")
ComboEstado.Text = dr("estado")
TxtObservacoes.Text = dr("observacoes")
TxtCodigo.Enabled = False
"Liberamos os botões (alterar, excluir e pesquisar)
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnPesquisar.Enabled = True
"Desabilitamos os botões (incluir e cancelar)
btnIncluir.Enabled = False
btnCancelar.Enabled = False
Else
"Caso não exista o cliente cujo código foi digitado
"aparecerá o texto <AUT> de automático na caixa de
"texto "txtcodigo"
TxtCodigo.Text = "<AUT>"
TxtCodigo.Enabled = False
"Agora os botões esão invertidos em relação a opção
"anterior
"Desabilitamos os botões (alterar, excluir e pesquisar)
btnAlterar.Enabled = False
btnExcluir.Enabled = False
btnPesquisar.Enabled = False
"Liberamos os botões (incluir e cancelar)
btnIncluir.Enabled = True
btnCancelar.Enabled = True
End If
Catch ex As Exception
MsgBox("Ocorreu o erro: " & ex.Message,MsgBoxStyle.Critical)
cn.Close()
End Try
cn.Close()
End Sub
OBS: Nesse momento, caso você tenha digitado alguns clientes. Já dá para rodar e testar.
3) Agora vamos escrever o código para a inclusão de novos clientes.
"Declara a conexão e se não estiver aberta abra.
Dim cn As New SqlConnection(conexao)
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
"agora vamos abrir a tabela num data reader
"ordenado pelo código em ordem decrescente
"a idéia aqui é pegar o código (último e somar 1)
Dim csql As String
csql = "Select * From Clientes order by idcliente desc"
Dim cm As New SqlCommand(csql, cn)
Dim dr As SqlDataReader
dr = cm.ExecuteReader
If dr.Read() = True Then
TxtCodigo.Text = dr("IdCliente") + 1
End If
dr.Close()
"gravando dados do formulário clientes
"aqui usamos um novo objeto da classe
"StringBuilder
Dim comando As New StringBuilder
comando.Append("INSERT INTO CLIENTES(")
comando.Append("Idcliente,")
comando.Append("NomeRazao,")
comando.Append("Endereco,")
comando.Append("Bairro,")
comando.Append("Cep,")
comando.Append("Telefone,")
comando.Append("cidade,")
comando.Append("estado,")
comando.Append("Observacoes)")
comando.Append(" Values(")
comando.Append(TxtCodigo.Text & ",")
comando.Append(""" & TxtNome.Text & "",")
comando.Append(""" & TxtEndereco.Text & "",")
comando.Append(""" & TxtBairro.Text & "",")
comando.Append(""" & TxtCep.Text & "",")
comando.Append(""" & TxtTelefone.Text & "",")
comando.Append(""" & TxtCidade.Text & "",")
comando.Append(""" & ComboEstado.Text & "",")
comando.Append(""" & TxtObservacoes.Text & "")")
Try
cm.CommandText = comando.ToString
cm.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Ocorreu o erro: " & ex.Message, MsgBoxStyle.Critical)
cn.Close()
End Try
MsgBox("Cliente " & TxtNome.Text & ", cadastrado com cod: " & TxtCodigo.Text)
"Liberamos os botões.
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnPesquisar.Enabled = True
btnIncluir.Enabled = True
btnCancelar.Enabled = True
TxtCodigo.Enabled = True
"LIMPAR AS CAIXAS DE TEXTO
"Agora vou mostrar um jeito mais simples
For Each ctl As Control In GroupBox1.Controls
If TypeOf ctl Is TextBox Then ctl.Text = ""
Next ctl
cn.Close()
"colocar o foco na caixa txtcodigo
TxtCodigo.Focus()
4) Agora vamos escrever o código do botão alterar.
Dim cn As New SqlConnection(conexao)
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
"gravando dados do formulário clientes
Dim comando As New StringBuilder
comando.Append("UPDATE CLIENTES ")
comando.Append("SET NomeRazao=")
comando.Append(""" & TxtNome.Text & "",")
comando.Append(" Endereco=")
comando.Append(""" & TxtEndereco.Text & "",")
comando.Append(" Bairro=")
comando.Append(""" & TxtBairro.Text & "",")
comando.Append(" Cep=")
comando.Append(""" & TxtCep.Text & "",")
comando.Append(" Telefone=")
comando.Append(""" & TxtTelefone.Text & "",")
comando.Append(" Cidade=")
comando.Append(""" & TxtCidade.Text & "",")
comando.Append(" Estado=")
comando.Append(""" & ComboEstado.Text & "",")
comando.Append(" Observacoes=")
comando.Append(""" & TxtObservacoes.Text & """)
comando.Append(" WHERE IdCliente=" & Val(TxtCodigo.Text))
Dim cm As New SqlCommand
Try
cm.Connection = cn
cm.CommandText = comando.ToString
cm.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Ocorreu o erro: " & ex.Message, MsgBoxStyle.Critical)
cn.Close()
End Try
MsgBox("Cliente " & TxtNome.Text & ", alterado com sucesso", 64, "Aviso")
"Liberamos os botões.
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnPesquisar.Enabled = True
btnIncluir.Enabled = True
btnCancelar.Enabled = True
TxtCodigo.Enabled = True
"LIMPAR AS CAIXAS DE TEXTO
"Agora vou mostrar um jeito mais simples
For Each ctl As Control In GroupBox1.Controls
If TypeOf ctl Is TextBox Then ctl.Text = ""
Next ctl
cn.Close()
"colocar o foco na caixa txtcodigo
TxtCodigo.Focus()
Para finalizar o artigo de hoje, vamos ao código dos botão excluir e em seguida cancelar.
5) Digite o código abaixo:
Dim cn As New SqlConnection(conexao)
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
"string para exclusão do cliente
Dim csql As String
csql = "DELETE FROM CLIENTES WHERE IDCLIENTE=" & Val(TxtCodigo.Text)
"pede confirmação ao usuário
Dim ret As Integer
ret = MsgBox("Deseja excluir o cliente: " & TxtNome.Text & " ? ", 36, "Pergunta")
Dim cm As New SqlCommand
If ret = vbYes Then
Try
cm.Connection = cn
cm.CommandText = csql.ToString
cm.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Ocorreu o erro: " & ex.Message, MsgBoxStyle.Critical)
cn.Close()
End Try
Else
MsgBox("Operação cancelada, registro NÃO excluído", 64, "Aviso")
End If
"Liberamos os botões.
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnPesquisar.Enabled = True
btnIncluir.Enabled = True
btnCancelar.Enabled = True
TxtCodigo.Enabled = True
"LIMPAR AS CAIXAS DE TEXTO
"Agora vou mostrar um jeito mais simples
For Each ctl As Control In GroupBox1.Controls
If TypeOf ctl Is TextBox Then ctl.Text = ""
Next ctl
ComboEstado.Text = ""
cn.Close()
"colocar o foco na caixa txtcodigo
TxtCodigo.Focus()
6) Já no botão cancelar:
"Liberamos os botões.
btnAlterar.Enabled = True
btnExcluir.Enabled = True
btnPesquisar.Enabled = True
btnIncluir.Enabled = True
btnCancelar.Enabled = True
TxtCodigo.Enabled = True
"LIMPAR AS CAIXAS DE TEXTO
"Agora vou mostrar um jeito mais simples
For Each ctl As Control In GroupBox1.Controls
If TypeOf ctl Is TextBox Then ctl.Text = ""
Next ctl
ComboEstado.Text = ""
cn.Close()
"colocar o foco na caixa txtcodigo
TxtCodigo.Focus()
Pronto. No próximo artigo, criaremos um formulário para pesquisa geral e o nosso primeiro relatório. Você deverá criar as funcionalidades necessárias para o formulário de produtos. Fica aqui como atividade.
Nota do Maromo: Esses dois artigos foram escritos com o objetivo de demonstrar formas de inclusão, alteração, consulta e exclusão de dados em objeto tabela (clientes). Existem outras técnicas de melhores práticas de programação divididas em N camadas, que nesse momento não é nossa prioridade.
Na medida em que você começar a avançar na programação você sentirá necessidade de utilizar técnicas mais alinhadas com a ES (Engenharia de Software) especialmente a UML (Linguagem unificada de modelagem).
Um abraço,
E até a próxima
Maromo
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET