Controle de Estoque sem assistentes - Parte II

Na janela Solution Explorer, clique com o botão direito em ctrEstoque. Selecione Add / Windows Form.
No name, digite: frmFornecedor e pressione a tecla Enter. Altere as seguintes propriedades:

Altere as seguintes propriedades:
Text: Cadastro de Fornecedor
StartPosition: ScreenCenter 'Centraliza o formulário
MinimizeBox: False
MaximizeBox: False

Na Caixa de Ferramentas (ToolBox), em Containers, selecione a ferramenta GroupBox e arraste-a para a parte superior do formulário. Altere as seguintes propriedades:
Name: gbOpcoes
Text: &Opções
Size: 322; 62
Location: 3; 3

Coloque dentro do mesmo, os botões:

Text Name
&Novo btnNovo
&Editar mnuEditar
&Excluir mnuExcluir
&Pesquisar mnuPesquisar
Sai&r mnuSair

Insira outro componente GroupBox logo abaixo, alterando as propriedades:
Name: gbDados
Text: &Dados
Size: 347; 204
Location: 6; 78

Dentro do gbDados, insira os componentes abaixo:

Componente Text Name Propriedade
Label Código: lblCodigo  
TextBox   txtCodigo Enabled=False
Label Nome: lblNome  
TextBox   txtNome  
Label Endereço: lblEndereco  
TextBox   txtEndereco  
Label Cidade: lblCidade  
TextBox   txtCidade  
Label Estado: lblEstado  
TextBox   txtEstado  
Label CEP: lblCEP  
MaskedTextBox   mskCEP  

Na janela Solution Explorer, clique com o botão direito em ctrEstoque. Selecione Add / Module.

Altere o nome para mdlEstoque e salve. Digite as linhas abaixo (entre Module mdlEstoque e End Module)
'caminho onde está o projeto
Public sCaminho As String = "C:\Diversos\VBNet\ctrEstoque\"
Public cn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.oleDB.4.0;Data Source=" & sCaminho & "\Estoque.mdb;")
Public intCodigo As Integer
'Armazena o campo que contém a chave primária

Dê um duplo clique no formulário. Antes da linha Public Class frmFornecedor, digite:
Imports System.Data.OleDb

Após a linha Public Class frmFornecedor, digite:
Private dtFornecedor As DataTable
Private daFornecedor As OleDbDataAdapter
Private dsFornecedor As DataSet
Private conBD As OleDbConnection
Private registro As Integer

Volte ao designer do formulário e dê um duplo clique na caixa mskCEP. Altere o evento para GotFocus, e digite o código abaixo:
mskCEP.Mask="#####-###"

Codificação do botão Novo:
Volte ao designer do formulário e dê um duplo clique no botão Novo. Digite o código abaixo:
'Se o texto do botão estiver como &Novo, então
If btnNovo.Text = "&Novo" Then
Call Limpar() 'Chama o procedimento Limpar
btnExcluir.Enabled = False 'Desabilita o botão
btnEditar.Enabled = False
btnNovo.Text = "&Incluir" 'Altera o texto do botão para &Incluir
txtNome.Focus() 'Envia o foco para a caixa txtNome
Else 'Caso contrário
'Se o conteúdo da caixa do nome do Nome estiver em branco
If txtNome.Text = "" Then
MessageBox.Show("Informe o Nome!", "Nome", MessageBoxButtons.OK)
txtNome.Focus()
Exit Sub 'Não executa as linhas abaixo
End If
incluirRegistro() 'Chama a subrotina para a inclusão das linhas (row) ou registro
End If
Observação: Os procedimentos Limpar e incluirRegistro, como não foram criados o VS Studio grifa as duas linhas.

Após o End Sub, digite o procedimento (subrotina) abaixo:
Private Sub incluirRegistro()
Try
Dim sSQL As String
'Variável para receber a instrução SQL de inclusão de registro na tabela
sSQL = "Insert Into Fornecedor (Nome, Endereco, Cidade, Estado, CEP)"
sSQL = sSQL & "Values (" & "'" & txtNome.Text & "'" & ","
sSQL = sSQL & "'" & txtEndereco.Text & "'" & ","
sSQL = sSQL & "'" & txtCidade.Text & "'" & ","
sSQL = sSQL & "'" & txtEstado.Text & "'" & ","
sSQL = sSQL & "'" & mskCEP.Text & "'" & ")"
Dim cmd As New OleDbCommand(sSQL, cn)
cn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
Call Limpar()
End Try
End Sub

Abaixo do End Sub, crie a rotina Limpar:
Private Sub Limpar()
'A instrução For, verificará dentro do groupbox gbDados,
'Todos os componentes TextBox e MaskedTextBox e através da variável c
'Serão limpos os conteúdos dos componentes

For Each c As Control In gbDados.Controls
If TypeOf c Is TextBox Or TypeOf c Is MaskedTextBox Then
c.Text = ""
End If
Next
End Sub

Codificação do botão Editar:
Try
If txtNome.Text = "" Then
MessageBox.Show("Informe o Nome do Fornecedor!", "Nome", MessageBoxButtons.OK)
txtNome.Focus()
Exit Sub
End If

Dim sSQL As String
sSQL = "Update Fornecedor Set Nome='" & txtNome.Text
sSQL = sSQL & "',Endereco='" & txtEndereco.Text
sSQL = sSQL & "',Cidade='" & txtCidade.Text
sSQL = sSQL & "',Estado='" & txtEstado.Text
sSQL = sSQL & "',CEP='" & mskCEP.Text & "'"
sSQL = sSQL & " Where Codigo=" & txtCodigo.Text
Dim cmd As New OleDbCommand(sSQL, cn)
cn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
Call Limpar()
End Try

Após o End Sub, crie a subrotina a seguir:
Private Sub Exibir_Dados(ByVal codigo As Integer)
If intCodigo = 0 Then Exit Sub 'Senão foi selecionado nenhum registro
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.oleDB.4.0;Data Source=" & sCaminho & "\Estoque.mdb;"
Dim cmdFornecedor As New OleDb.OleDbCommand 'Cria o objeto OleDBCommand
cmdFornecedor.Connection = cn
'Ativa a conexão
'O método CommandText, recebe a seleção de todos os campos da tabela de vendedor
'onde no campo Codigo será procurado o Código do vendedor informado quando for realizada a pesquisa
cmdFornecedor.CommandText = "Select * From Fornecedor Where Codigo=" & codigo
cn.Open()
'Abre o banco
Dim drFornecedor As OleDb.OleDbDataReader
'O DataReader permite ler um determinado dado em alta velocidade. Ele não é instanciado, pois é uma classe estática.
drFornecedor = cmdFornecedor.ExecuteReader
'Executa o comando
drFornecedor.Read()
'O método Read posiciona o cursor no referido registro retornando True ou False senão encontrar
'O campo é Codigo é armazenado no TextBox txtCodigo e exibido no formulário
txtCodigo.Text = drFornecedor.Item("Codigo")
'Se o campo Nome não estiver em branco (nulo)
If Not IsDBNull(drFornecedor.Item("Nome")) Then txtNome.Text = drFornecedor.Item("Nome")
If Not IsDBNull(drFornecedor.Item("Endereco")) Then txtEndereco.Text = drFornecedor.Item("Endereco")
If Not IsDBNull(drFornecedor.Item("Cidade")) Then txtCidade.Text = drFornecedor.Item("Cidade")
If Not IsDBNull(drFornecedor.Item("Estado")) Then txtEstado.Text = drFornecedor.Item("Estado")
If Not IsDBNull(drFornecedor.Item("CEP")) Then mskCEP.Text = drFornecedor.Item("CEP")
btnExcluir.Enabled = True 'Habilita (deixa disponível) o botão
btnEditar.Enabled = True
cn.Close()
End Sub

Codificação do botão Excluir:
If MessageBox.Show("Deseja Excluir ?", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
If Val(txtCodigo.Text) = 0 Then
MessageBox.Show("Informe o Código!", "Código", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Dim codigo As Integer
codigo = CType(txtCodigo.Text, Integer)
eliminarRegistro(codigo)
End If

Após o End Sub, crie a subrotina abaixo:
Private Sub eliminarRegistro(ByVal codigo As Integer)
Try
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.oleDB.4.0;Data Source=" & sCaminho & "\Estoque.mdb;"
Dim sSQL As String = "Delete * From Fornecedor Where Codigo=" & codigo
Dim cmdFornecedor As New OleDbCommand(sSQL, cn) 'Cria o objeto OleDBCommand

cn.Open() 'Abre o banco
cmdFornecedor.ExecuteNonQuery()
Call Limpar()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
End Try
End Sub

Codificação do botão Pesquisar:
frmPFornecedor.ShowDialog()
Call Exibir_Dados(intCodigo)

Codificação do botão Sair:
Close()

Controle de Estoque - Parte I

Controle de Estoque - Parte III

Controle de Estoque - Parte IV

Controle de Estoque - Parte V

Controle de Estoque - Parte VI

Controle de Estoque - Parte VII

Hosted by www.Geocities.ws

1