Controle de Comissões - Parte II

Na janela Solution Explorer, clique com o botão direito em ctrComissao. Selecione Add / Windows Form.
No name, digite: frmVendedor e pressione a tecla Enter. Altere as seguintes propriedades:
Text: Cadastro de Vendedor
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

Coloque dentro do mesmo, os botões:

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

Deverá ficar de acordo com a figura abaixo:

ctrComissao14


Coloque outro GroupBox e altere as propriedades:

Componente Propriedade Text Propriedade Name
Label Código: lblCodigo
TextBox   txtCodigo
Label Nome do vendedor: lblVendedor
TextBox   txtVendedor
Label Cidade: lblCidade
TextBox   txtCidade
Label % Comissão lblPercentualComissao
TextBox   txtPercentualComissao
Label Data do Cadastro: lblDataCadastro
MaskTextBox   mskDataCadastro

O formulário deverá ficar com a aparência abaixo:

ctrComissao15

Codificando o formulário de Vendedor:

Na janela Solution Explorer, dê um clique no botão View Code para visualizar a codificação.

Digite antes da linha Public Class frmVendedor, o seguinte: Imports System.Data.SqlClient

Na janela Solution Explorer, clique com o botão direito em ctrComissao. Selecione Add / Module..
No name, digite: mdlComissao e enter para continuar. Digite o código abaixo, entre Module mdlComissao e End Module:

'string de conexão com o SQL Server 2005 Express local
Public strCon As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Diversos\VBNet\ctrComissao\ctrComissao.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

Public intCodigo As Integer 'Variável utilizada para armazenar a chave primária

Feche e salve.

No form frmVendedor após a linha Public Class frmVendedor, digite os códigos abaixo:

Private dtVendedor As DataTable
Private daVendedor As SqlDataAdapter
Private dsVendedor As DataSet
Private conBD As SqlConnection
Private registro As Integer

Na janela Solution Explorer, dê um clique no botão View Designer para visualizar o formulário. Dê um duplo clique dentro do formulário (fora da região dos groupbox) e entre Private Sub frmVendedor_Load e End Sub, digite o código abaixo:

'Serão selecionados todos os campos da tabela de vendedor, ordenado pelo campo Codigo
Dim sSQL As String = "Select * From Vendedor Order by Codigo"

Try 'Tentando realizar a conexão
conBD = New SqlConnection(strCon)
'Cria um novo dataset. Será armazenado em dsVendedor a tabela através do DataTable abaixo
dsVendedor = New DataSet
'O SqlDataAdapter preenche (popula) o DataSet, permitindo inserir, atualizar, excluir registros da tabela
'Através do método Fill, preenche ou exibe os registros por exemplo em um grid, listbox

daVendedor = New SqlDataAdapter(sSQL, conBD)
daVendedor.Fill(dsVendedor, "Vendedor")
dtVendedor = dsVendedor.Tables("Vendedor")
Call limpar() 'Chama o procedimento para limpar os TextBox e MaskedTextBox
'Senão conseguiu realizar as linhas abaixo do Try, exibe mensagem de erro
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Observação: Como o procedimento limpar ainda não foi criado, o Vb.Net grifa. Após a criação do mesmo, o grifo é retirado.

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

Clique no botão View Designer. Dê um duplo clique no formulário (ou vá até o código acima no Private Sub frmVendedor_Load) e selecione o evento FormClosed (quando o formulário é fechado). Veja figura abaixo.

ctrComissao16

Digite a instrução: Close()

Clique no botão View Designer e dê um duplo clique na caixa mskDataCadastro e selecione o evento GotFocus (quando a caixa ganha o foco) e digite a instrução: mskDataCadastro.Mask="##/##/##"

Abaixo do End Sub do procedimento acima, digite a instrução: Private sub Exibir_Dados e pressione Enter. O Vb.Net criará o procedimento já com o End Sub. Abaixo está todo o código desta procedure:
Private Sub Exibir_Dados(ByVal codigo As Integer)
Dim conBD As New SqlConnection(strCon)
'Cria uma nova instância da conexão e armazena na variável conBD
Dim cmdVendedor As New SqlCommand
'Cria o objeto SqlCommand
cmdVendedor.Connection = conBD '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

cmdVendedor.CommandText = "Select * From Vendedor Where Codigo=" & codigo
conBD.Open()
'Abre o banco
Dim drVendedor As SqlDataReader
'O DataReader permite ler um determinado dado em alta velocidade. Ele não é instanciado, pois é uma classe estática.
drVendedor = cmdVendedor.ExecuteReader
'Executa o comando
drVendedor.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 = drVendedor.Item("Codigo")
'Se o campo Nome não estiver em branco (nulo)
If Not IsDBNull(drVendedor.Item("Nome")) Then txtVendedor.Text = drVendedor.Item("Nome")
If Not IsDBNull(drVendedor.Item("Cidade")) Then txtCidade.Text = drVendedor.Item("Cidade")
If Not IsDBNull(drVendedor.Item("PercentualComissao")) Then txtPercentualComissao.Text = drVendedor.Item("PercentualComissao")
If Not IsDBNull(drVendedor.Item("DataCadastro")) Then mskDataCadastro.Text = drVendedor.Item("DataCadastro")
btnExcluir.Enabled = True
'Habilita (deixa disponível) o botão
btnEditar.Enabled = True
End Sub

Observação: ByVal codigo as integer, faz com que o conteúdo da variável não será alterado dentro do procedimento. Quando é chamada este procedimento ou subrotina, o conteúdo do campo código do vendedor selecionado ou pelo DataGridView, ListBox ou ComboBox, é passado para esta variável declarada na primeira linha da subrotina.

Volte a parte visual do formulário, através do botão View Designer. Dê um duplo clique no botão Novo e 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
mskDataCadastro.Text=DateTime.Today
'Armazena a data do sistema na caixa
txtVendedor.Focus()
'Envia o foco para a caixa txtVendedor
Else
'Caso contrário
'Se o conteúdo da caixa do nome do vendedor estiver em branco
If txtVendedor.Text = "" Then
MessageBox.Show("Informe o Vendedor!", "Vendedor", MessageBoxButtons.OK)
txtVendedor.Focus()
Exit Sub
'Não executa as linhas abaixo
End If
'Cria o objeto DataRow
Dim drowVendedor As DataRow = dtVendedor.NewRow
incluirRegistro(drowVendedor)
'Chama a subrotina para a inclusão das linhas (row) ou registro
End If

Observação: Selecione o TextBox do codigo, e na propriedade Enabled, deixe como False. Faça também no MaskedTextBox mskDataCadastro.

Fazendo o teste, incluindo registros na tabela de vendedor.
Na janela Solution Explorer, dê um duplo clique em frmMenu. No formulário, selecione o Menu Cadastro. Dê um duplo clique em Vendedor para chamar o formulário de vendedor. Digite o código: frmVendedor.ShowDialog()
Observação: O método ShowDialog é carregar o formulário de forma exclusiva.

Depois do End Sub, crie a rotina inserirRegistro de acordo com o código abaixo:
Private Sub incluirRegistro(ByVal drowVendedor As DataRow)
Dim sSQL As String
'Variável para receber a instrução SQL de inclusão de registro na tabela
Dim reg As Integer
'Esta variável verificará se o registro foi incluído
Dim sqlComando As SqlCommand
'Cria o objeto SqlComand

Dim datatmp As Date 'Declara a variável tipo Data
Dim dataCadastro As String
'Converte a data que está na caixa e armazena na variável datatmp
datatmp = Convert.ToDateTime(mskDataCadastro.Text)
'Armazena na variável o conteúdo como data
dataCadastro = datatmp.Year.ToString & "-" & datatmp.Month.ToString & "-" & datatmp.Day

Dim conBD As New SqlConnection(strCon)
Dim cmdVendedor As New SqlCommand 'Instancia o objeto SqlCommand
cmdVendedor.Connection = conBD
conBD.Open()
'Insere dentro da tabela vendedor nos campos
sSQL = "Insert Into Vendedor (Nome, Cidade, PercentualComissao, DataCadastro)"
'Os conteúdos de cada caixa
sSQL = sSQL & "Values (" & "'" & txtVendedor.Text & "'" & ","
sSQL = sSQL & "'" & txtCidade.Text & "'" & ","
sSQL = sSQL & "'" & Replace(txtPercentualComissao.Text, ",", ".") & "'" & ","
sSQL = sSQL & "'" & dataCadastro & "'" & ")"
conBD.Close()
conBD = New SqlConnection(strCon)
sqlComando = New SqlCommand(sSQL, conBD)
daVendedor.InsertCommand = sqlComando 'Ativa a inserção através da variável do objeto sqlComand

Try 'Tenta inserir
conBD.Open()
reg = sqlComando.ExecuteNonQuery
If reg > 0 Then
MessageBox.Show("Registro incluído com sucesso!", "Inclusão", MessageBoxButtons.OK)
daVendedor.Update(dsVendedor, "Vendedor")
dsVendedor.Tables("Vendedor").Reset()
daVendedor.Fill(dsVendedor, "Vendedor")
dtVendedor = dsVendedor.Tables("Vendedor")
Call Limpar()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conBD.Close()
End Try
End Sub

Codificação do botão Sair: Close() 'Fecha o formulário

Codificação do botão Editar:
If txtVendedor.Text = "" Then
MessageBox.Show("Informe o Nome do Vendedor!", "Vendedor", MessageBoxButtons.OK)
txtVendedor.Focus()
Exit Sub
End If
Dim sSQL As String
Dim reg As Integer
Dim sqlComando As SqlCommand

Dim conBD As New SqlConnection(strCon)
Dim cmdFornecedores As New SqlCommand
sSQL = "Update Fornecedores Set Nome='" & txtVendedor.Text
sSQL = sSQL & "',Cidade='" & txtCidade.Text
sSQL = sSQL & "',PercentualComissao='" & Replace(txtPercentualComissao.Text, ",", ".") & "'"
sSQL = sSQL & " Where Codigo=" & txtCodigo.Text
conBD = New SqlConnection(strCon)
sqlComando = New SqlCommand(sSQL, conBD)
daVendedor.UpdateCommand = sqlComando

Try
conBD.Open()
reg = sqlComando.ExecuteNonQuery
If reg > 0 Then
MessageBox.Show("Registro atualizado com sucesso!", "Atualização", MessageBoxButtons.OK)
daVendedor.Update(dsVendedor, "Vendedor")
daVendedor.Fill(dsVendedor, "Vendedor")
dtVendedor = dsVendedor.Tables("Vendedor")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conBD.Close()
End Try
End Sub

Codificação do botão Excluir:
If MessageBox.Show("Deseja Excluir ?", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
'Senão existir registros, não executa as linhas abaixo do Exit Sub
If registro < 0 OrElse registro < dtVendedor.Rows.Count = -1 Then
Exit Sub
Else
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
End If

Abaixo do End Sub, crie a subrotina abaixo:
Private Sub eliminarRegistro(ByVal codigo As Integer)
Dim sSQL As String
Dim reg As Integer
Dim sqlComando As SqlCommand

sSQL = "Delete From Vendedor Where Codigo=" & codigo
conBD = New SqlConnection(strCon)
sqlComando = New SqlCommand(sSQL, conBD)
daVendedor.DeleteCommand = sqlComando

Try
conBD.Open()
reg = sqlComando.ExecuteNonQuery
If reg > 0 Then
MsgBox("Registro Excluído com sucesso!")
Call Limpar()
daVendedor.Update(dsVendedor, "Vendedor")
dsVendedor.Tables("Vendedor").Reset()
daVendedor.Fill(dsVendedor, "Vendedor")
End If
Catch ex As Exception

End Try
End Sub

Controle de Comissões - Parte I

Controle de Comissões - Parte III

Controle de Comissões - Parte IV

Controle de Comissões - Parte V

Controle de Comissões - Parte VI

Hosted by www.Geocities.ws

1