Controle de Comissões - Parte IV - Formulário de Controle das Comissões
Na janela Solution Explorer, clique com o botão direito em ctrComissao. Selecione Add / Windows Form.
No name, digite: frmComissao e pressione a tecla Enter. Altere as seguintes propriedades:
Text: Controle de Comissões
StartPosition: ScreenCenter 'Centraliza o formulário
MinimizeBox: False
MaximizeBox: False
Copie o groupbox gbOpcoes do form frmVendedor.
| Componente | Text | Name | Propriedade |
|---|---|---|---|
| Label | Id | lblId | |
| TextBox | txtId | Enabled=False | |
| Label | Vendedor: | lblVendedor | |
| ComboBox | cmbVendedor | ||
| Label | Data: | lblData | |
| DateTimePicker | dtpData | Format=Short | |
| Label | Valor da Venda: | lblValorVenda | |
| MaskedTextBox | mskValorVenda | ||
| Label | % de Comissão | lblPercentualComissao | |
| TextBox | txtPercentualComissao | ||
| Label | Valor da Comissão: | lblValorComissao | |
| MaskedTextBox | mskValorComissao |
Dê um duplo clique no formulário. Insira uma linha antes de Public Class frmComissao e digite:
Imports System.Data.SqlClient
após a linha Public Class frmComissao e digite:
'Referente a tabela de comissão
Private dtComissao As DataTable
Private daComissao As SqlDataAdapter
Private dsComissao As DataSet
'Referente a tabela de vendedor
Private dtVendedor As DataTable
Private daVendedor As SqlDataAdapter
Private dsVendedor As DataSet
Private conBD As SqlConnection
Private registro As Integer
Após a linha Private Sub frmComissao_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, digite o código abaixo:
Dim sSQL As String = "Select * From Vendedor Order by Codigo"
Try
conBD = New SqlConnection(strCon)
dsVendedor = New DataSet
daVendedor = New SqlDataAdapter(sSQL, conBD)
daVendedor.Fill(dsVendedor, "Vendedor")
dtVendedor = dsVendedor.Tables("Vendedor")
Call limpar()
Dim dtVendedor As DataTable
Dim drowVendedor As DataRow
Dim dsVendedor As New DataSet
Dim dadpt As New SqlDataAdapter("Select Codigo, Nome From Vendedor Order By Nome", strCon)
dadpt.Fill(dsVendedor, "Vendedor")
dtVendedor = dsVendedor.Tables(0)
'Preenche o nome dos vendedores no combobox
For Each drowVendedor In dtVendedor.Rows
cmbVendedor.Items.Add(drowVendedor.Item("Nome"))
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Logo após o End Sub, digite o código abaixo:
Private Sub Limpar()
For Each c As Control In Me.gbDados.Controls
If TypeOf c Is TextBox Or TypeOf c Is ComboBox Or TypeOf c Is MaskedTextBox Then
c.Text = ""
End If
Next
Codificação do botão Novo:
If btnNovo.Text = "&Novo" Then
Call Limpar()
btnExcluir.Enabled = False
btnEditar.Enabled = False
btnNovo.Text = "&Incluir"
cmbVendedor.Focus() 'Envia o foco para a descrição
ElseIf btnNovo.Text = "&Incluir" Then
Dim drowComissao As DataRow = dtComissao.NewRow
incluirRegistro(drowComissao)
btnNovo.Text = "&Novo"
End If
Codificação do botão Editar:
Dim sSQL As String
Dim reg As Integer
Dim sqlComando As SqlCommand
Dim datatmp As Date
Dim data As String
datatmp = Convert.ToDateTime(dtpData.Value)
data = datatmp.Year.ToString & "-" & datatmp.Month.ToString & "-" & datatmp.Day.ToString
'Localiza o vendedor na tabela
Dim conBD As New SqlConnection(strCon)
Dim cmd As New SqlCommand
cmd.Connection = conBD
cmd.CommandText = "Select Codigo, Nome From Vendedor Where Nome='" & cmbVendedor.Text & "'"
conBD.Open()
Dim drowVendedor As SqlDataReader
drowVendedor = cmd.ExecuteReader
drowVendedor.Read()
sSQL = "Update Comissao Set CodigoVendedor='" & drowVendedor.Item("Codigo")
sSQL = sSQL & ", Data=" & data
sSQL = sSQL & ", ValorVenda='" & mskValorVenda.Text
sSQL = sSQL & ", PercentualComissao=" & Replace(txtPercentualComissao.Text, ",", ".")
sSQL = sSQL & ", ValorComissao=" & Replace(mskValorComissao.Text, ",", ".")
sSQL = sSQL & " Where Id=" & Val(txtId.Text)
conBD.Close()
conBD = New SqlConnection(strCon)
sqlComando = New SqlCommand(sSQL, conBD)
daComissao.UpdateCommand = sqlComando
Try
conBD.Open()
reg = sqlComando.ExecuteNonQuery
If reg > 0 Then
daComissao.Update(dsComissao, "Comissao")
daComissao.Fill(dsComissao, "Comissao")
dtComissao = dsComissao.Tables("Comissao")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
btnEditar.Enabled = False
Codificação do botão Excluir:
If MessageBox.Show("Deseja Excluir ?", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
If Val(txtId.Text) = 0 Then
MessageBox.Show("Informe o Id!", "Id", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Dim codigo As Integer
codigo = CType(txtId.Text, Integer)
eliminarRegistro(codigo)
End If
Logo após o End Sub, digite o código abaixo:
Private Sub eliminarRegistro(ByVal codigo As Integer)
Dim sSQL As String
Dim reg As Integer
Dim sqlComando As SqlCommand
sSQL = "Delete From Comissao Where Id=" & codigo
conBD = New SqlConnection(strCon)
sqlComando = New SqlCommand(sSQL, conBD)
daComissao.DeleteCommand = sqlComando
Try
conBD.Open()
reg = sqlComando.ExecuteNonQuery
If reg > 0 Then
MsgBox("Registro Excluído com sucesso!")
Call Limpar()
daComissao.Update(dsComissao, "Comissao")
dsComissao.Tables("Comissao").Reset()
daComissao.Fill(dsComissao, "Comissao")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Codificação do botão Pesquisar:
frmPComissao.ShowDialog()
Call ExibirDados(intCodigo)
Codificação do botão Sair:
Close()
Permitir somente números e a vírgula:
Dê um duplo clique na caixa mskValorVenda e digite o código abaixo:
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "," Then
e.Handled = True
End If
Faça o mesmo com as caixas: txtPercentualComissao e mskValorVenda.
Controle de Comissões - Parte I
Controle de Comissões - Parte II
Controle de Comissões - Parte III - Pesquisa de Vendedor