No SQL Server, crie o Banco de Dados e as tabelas abaixo:
CREATE TABLE tbVendedor ( codigo INT IDENTITY(1,1) NOT NULL,
nome_Vendedor VARCHAR(40) NOT NULL,
email VARCHAR(30) NOT NULL,
contato VARCHAR(15) NOT NULL,
percentual_Comissao DECIMAL(5,2) NOT NULL,
situacao CHAR(1) DEFAULT 'A',
PRIMARY KEY(codigo)
)
CREATE TABLE tbComissao (lancamento INT IDENTITY(1,1) NOT NULL,
codigo_Vendedor INT NOT NULL,
data DATE NOT NULL,
valor DECIMAL(10,2) NOT NULL,
PRIMARY KEY(lancamento),
FOREIGN KEY(codigo_Vendedor) REFERENCES tbVendedor(codigo)
)
No Visual Studio, crie uma nova solução.
Name: ctrComissao
Nome do formulário: frmPrincipal.cs
Text: Controle de Comissão
StartPosition: CenterScreen
MaximizeBox: False
FormBorderStyle: Fixed3D
Crie o menu com os seguintes itens:
| &Cadastro | &Controle |
| &Vendedor | &Comissão |
| Sai&r | |
Vá até o Menu Projects e clique em Add Class. Coloque o nome: Conexao
Deixe conforme exemplo abaixo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Observação: Caso o banco não possua usuário, a string de conexão, será essa:
private static string conexao = @"Data Source=.\SQLEXPRESS;Initial Catalog=bdComissao; Integrated Security=True";
Foi criado o atributo conexao como nulo, e private, pois seu alcance será somente para esta classe. A seguir criado o método público stringConexao, que é o que vai retornar para todas as classes, formulários e relatórios que for solicitada a conexão com o banco de dados. Assim é retornado através do get a instância do sql (.\SQLEXPRESS); o nome do banco (Initial Catalog).
Vá até o Menu Projects e clique em Add Class. Coloque o nome: clsVendedor. Abaixo, foram definidos os métodos: salvar, alterar, pesquisarNome e pesquisarCodigo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
public void editar(int codigo, string nomeVendedor, string email, string contato, decimal percentualComissao, string situacao)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
{
string sql = @"UPDATE tbVendedor
SET nome_Vendedor = @nome_Vendedor,
email = @email,
contato = @contato,
percentual_Comissao = @percentual_Comissao,
situacao = @situacao
WHERE codigo = @codigo";
using (SqlCommand cmd = new SqlCommand(sql, cn))
{
cmd.Parameters.AddWithValue("@codigo", codigo);
cmd.Parameters.AddWithValue("@nome_Vendedor", nomeVendedor);
cmd.Parameters.AddWithValue("@email", email);
cmd.Parameters.AddWithValue("@contato", contato);
cmd.Parameters.AddWithValue("@percentual_Comissao", percentualComissao);
cn.Open();
cmd.ExecuteNonQuery();
}
}
}
catch (Exception)
{
throw;
}
}
public DataTable pesquisaCodigo(int codigo)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
{
string sql = @"SELECT Codigo, Nome_Vendedor, Email, Contato, Percentual_Comissao, situacao FROM tbvendedor WHERE codigo = @codigo";
using (SqlCommand cmd = new SqlCommand(sql, cn))
{
cmd.Parameters.AddWithValue("@codigo", codigo);
cn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
}
}
}
catch (Exception)
{
throw;
}
public DataTable pesquisa_Vendedor(string nomeVendedor)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
{
string sql = @"SELECT Codigo, Nome_Vendedor, Email, Contato, Percentual_Comissao, situacao
FROM tbvendedor WHERE nome_Vendedor LIKE '%' + @nomeVendedor + '%'";
using (SqlCommand cmd = new SqlCommand(sql, cn))
{
cmd.Parameters.Add("@nomeVendedor", SqlDbType.VarChar).Value = nomeVendedor;
cn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
}
}
}
catch (Exception)
{
throw;
}
}
Crie o formulário de vendedor
Nome do formulário: frmVendedor.cs
Inserir o controle Panel
Name: pnlTituloInserir o controle ToolStrip
| Controle | Name | Text | Maxlength | Enabled |
| GroupBox | gbOpcoes | Opções | ||
| Button | tlbNovo | &Novo | btnNovo | |
| Button | tlbSalvar | &Salvar | ||
| Button | tlbCancelar | &Cancelar | btnCancelar | |
| Button | tlbSair | &Cancelar | btnCancelar | |
| GroupBox | gbDados | Dados | ||
| Label | lblCodigo | Código: | ||
| TextBox | txtCodigo | False | ||
| Label | lblnomeVendedor | Vendedor: | ||
| TextBox | txtnomeVendedor | 60 | ||
| Label | lblEmail | E-mail: | ||
| TextBox | txtEmail | 30 | ||
| Label | lblContato | Contato: | ||
| TextBox | txtContato | 15 | ||
| Label | lblpercentualComissao | % Comissão: | ||
| TextBox | txtpercentualComissao | 30 |
Codificação do botão cancelar:
Duplo clique no botão Cancelar e entre as { } deixe como abaixo o que está em negrito:
private void tlbCancelar_Click(object sender, EventArgs e)
{
tlbSalvar.Enabled = false;
tlbNovo.Enabled = true;
gpbDados.Enabled = false;
limpar();
}
Como a subrotina limpar não criada, observe que ficou sublinhado na cor vermelha, sendo apresentado erro. Logo abaixo da chave do fechamento do código que você inseriu do botão cancelar, digite o código abaixo:
private void limpar()
{
foreach (Control ctl in gpbDados.Controls)
{
if (ctl is TextBox) ctl.Text = "";
if (ctl is MaskedTextBox) ctl.Text = "";
if (ctl is ComboBox) ctl.Text = "";
if (ctl is CheckBox) (ctl as CheckBox).Checked = false;
}
}
Codificação do botão novo:
Duplo clique no botão
Novo e entre as { } deixe como abaixo, onde está em negrito:
private void tlbNovo_Click(object sender, EventArgs e)
{
tlbSalvar.Enabled = true;
tlbNovo.Enabled = false;
gpbDados.Enabled = true;
chkSituacao.Checked = true;
chkSituacao.Enabled = false;
tlbNovo.Tag = "Novo";
txtnomeVendedor.Focus();
}
}
Codificação do botão salvar:
Duplo clique no botão
Salvar e entre as { } deixe como abaixo:
private void tlbSalvar_Click(object sender, EventArgs e)
{
if (txtnomeVendedor.Text == "")
{
MessageBox.Show("Informe o Nome do vendedor!");
txtnomeVendedor.Focus();
return;
}
if (txtpercentualComissao.Text == "")
{
MessageBox.Show("Informe o % da comissão!");
txtpercentualComissao.Focus();
return;
}
if (MessageBox.Show("Deseja Salvar ?", "Salvar", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
try
{
clsVendedor classeVendedor = new clsVendedor();
if (tlbNovo.Tag.ToString() == "Editar") // Se clicou duas vezes datagrid, o status altera para editar
{
string situacao = "";
if (chkSituacao.Checked)
{
situacao = "A";
}
else
{
situacao = "I";
}
classeVendedor.editar(Convert.ToInt32(txtCodigo.Text), txtnomeVendedor.Text, txtEmail.Text, mskContato.Text, Convert.ToDecimal(txtpercentualComissao.Text), situacao);
}
else
{
classeVendedor.incluir(txtnomeVendedor.Text, txtEmail.Text, mskContato.Text, Convert.ToDecimal(txtpercentualComissao.Text));
}
MessageBox.Show("Vendedor Salvo com sucesso ?", "Salvar", MessageBoxButtons.OK);
tlbCancelar_Click(sender, e);
exibirGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void tlbCancelar_Click(object sender, EventArgs e)
{
tlbSalvar.Enabled = false;
tlbNovo.Enabled = true;
gpbDados.Enabled = false;
limpar();
}
A subrotina exibirGrid também apresenta o sublinhado em vermelho, pois ainda não foi criada. Faça a criação da mesma, conforme abaixo:
private void exibirGrid() {
clsvendedor classeVendedor = new clsvendedor();
dgvVendedor.DataSource = classeVendedor.pesquisarNome("");
cabecalho();
}
A subrotina cabecaho também apresenta o sublinhado em vermelho, pois ainda não foi criada. Faça a criação da mesma, conforme abaixo:
private void cabecalho()
{
dgvVendedor.Columns[0].HeaderText = "Código";
dgvVendedor.Columns[0].Width = 45;
dgvVendedor.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dgvVendedor.Columns[1].HeaderText = "Nome do vendedor";
dgvVendedor.Columns[1].Width = 160;
dgvVendedor.Columns[2].HeaderText = "E-mail";
dgvVendedor.Columns[2].Width = 130;
dgvVendedor.Columns[3].HeaderText = "Contato";
dgvVendedor.Columns[3].Width = 90;
dgvVendedor.Columns[4].HeaderText = "% Com.";
dgvVendedor.Columns[4].Width = 50;
dgvVendedor.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dgvVendedor.Columns[5].HeaderText = "Situação";
dgvVendedor.Columns[5].Width = 50;
}
A seguir, vamos utilizar o evento DoubleClick do controle DataGrid para exibir em cada caixa de textos do formulário, o conteúdo referente a caixa coluna da tabela de vendedor. Selecione o DataGridView e vá até o evento DoubleClick. Quando encontra-lo, duplo clique. Veja imagem abaixo:
private void dgvVendedor_DoubleClick(object sender, EventArgs
e)
{
txtCodigo.Text = dgvVendedor.CurrentRow.Cells[0].Value.ToString(); //
CurrentRow é a linha onde foi efetuado o duplo clique. Cells[0] refere-se
a primeira coluna do DataGrid - Value obtém o valor armazenado ali.
txtnomeVendedor.Text =
dgvVendedor.CurrentRow.Cells[1].Value.ToString();
txtpercentualComissao.Text =
dgvVendedor.CurrentRow.Cells[2].Value.ToString();
gpbDados.Enabled = true;
btnNovo.Enabled = false;
btnSalvar.Enabled = true;
btnNovo.Tag = "Editar";
txtnomeVendedor.Focus();
}
Codificação do botão Pesquisar, que está ao lado da caixa de textos pesquisar
private void btnPesquisar_Click(object sender, EventArgs e)
{
clsVendedor classeVendedor = new clsVendedor();
dgvVendedor.DataSource = classeVendedor.pesquisa_Vendedor(txtPesquisa.Text);
}
A seguir, selecione a caixa de textos txtpercentualComissao. No evento KeyPress, vamos inserir o código abaixo para só permitir a digitação de números e a vírgula:
private void txtpercentualComissao_KeyPress(object sender,
KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar)) //se não for número
{
if (e.KeyChar != ',') //se for vírgula
e.Handled = true;
else if (txtpercentualComissao.Text.IndexOf(',') > 0)
e.Handled = true;
}
}
Para finalizar, vamos inserir o código do evento load do formulário, ou seja: Quando o formulário de vendedor foi inicializado, será carregado o código do botão cancelar e os dados salvos na tabela no DataGridView. Selecione o formulário (de preferência na barra de título, para ter perigo de selecionar outro controle). Você também pode efetuar duplo clique na barra de título, pois o evento padrão do formulário é o Load.
private void frmVendedor_Load(object sender, EventArgs e)
{
btnCancelar_Click(sender, e); // Executa a codificação do botão
cancelar
exibirGrid();
}
Crie a classe de comissão: clsComissao.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ctrComissao
{
public class clsComissao
{
private string sqlBase = @"SELECT tbComissao.lancamento,
tbComissao.codigoVendedor,
tbVendedor.nome_vendedor,
tbComissao.data,
tbComissao.valor,
tbVendedor.percentual_Comissao,
(tbComissao.valor * tbVendedor.Percentual_Comissao) / 100 AS 'Total Comissão'
FROM tbComissao
INNER JOIN tbVendedor
ON tbComissao.codigoVendedor = tbVendedor.codigo";
A seguir, declare o método inserir, conforme abaixo
public void inserir(int codigo_vendedor, DateTime data, decimal valor)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
using (SqlCommand cmd = new SqlCommand())
{
cn.Open();
string sql = "INSERT INTO tbComissao (codigoVendedor, data, valor) VALUES (@codigoVendedor, @data, @valor)";
cmd.CommandText = sql;
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@codigoVendedor", codigo_vendedor);
cmd.Parameters.AddWithValue("@data", data);
cmd.Parameters.AddWithValue("@valor", valor);
cmd.ExecuteNonQuery();
}
}
catch (Exception)
{
throw;
}
}
Abaixo do método inserir, declare o método editar:
public void editar(int lancamento, int codigoVendedor, DateTime data, decimal valor)Abaixo do método editar, declare o método pesquisarLancamento:
public DataTable pesquisaLancamento(int lancamento)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
using (SqlCommand cmd = new SqlCommand())
{
cn.Open();
string sql = sqlBase + " WHERE tbComissao.lancamento = @lancamento ORDER BY tbComissao.lancamento";
cmd.CommandText = sql;
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@lancamento", lancamento);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
}
catch (Exception)
{
throw;
}
}
A seguir crie o método pesquisacodigoVendedor:
public DataTable pesquisacodigoVendedor(int codigoVendedor)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
using (SqlCommand cmd = new SqlCommand())
{
cn.Open();
string sql = sqlBase + " WHERE tbVendedor.codigo = @codigoVendedor ORDER BY tbComissao.data";
cmd.CommandText = sql;
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@codigoVendedor", codigoVendedor);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
}
catch (Exception)
{
throw;
}
}
A seguir crie o método pesquisacodigoData:
public DataTable pesquisaData(DateTime dataInicial, DateTime dataFinal)
{
try
{
using (SqlConnection cn = new SqlConnection(clsConexao.stringConexao))
using (SqlCommand cmd = new SqlCommand())
{
cn.Open();
string sql = sqlBase + " WHERE tbComissao.data BETWEEN @dataInicial AND @dataFinal ORDER BY tbComissao.data";
cmd.CommandText = sql;
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@dataInicial", dataInicial);
cmd.Parameters.AddWithValue("@dataFinal", dataFinal);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
}
catch (Exception)
{
throw;
}
}
A seguir crie o método pesquisaTodos:
public DataTable pesquisaTodos()Crie a variável estática abaixo:
public static int lancamento;Formulário de comissão:
Crie o formulário abaixo:
| Controle | Name | Text | Maxlength | Enabled |
| GroupBox | gbOpcoes | Opções | ||
| Button | btnNovo | &Novo | btnNovo | |
| Button | btnSalvar | &Salvar | ||
| Button | btnCancelar | &Cancelar | ||
| Button | btnPesquisar | &Pesquisar | ||
| GroupBox | gbDados | Dados | ||
| Label | lblLancamento | Lançamento: | ||
| TextBox | txtLancamento | False | ||
| Label | lblVendedor | Vendedor: | ||
| ComboBox | cmbVendedor | |||
| TextBox | txtcodigoVendedor | |||
| Label | lblData | Data: | ||
| MaskedTextBox | mskData | Mask: | 00/00/0000 | |
| Label | lblValor | Valor: | ||
| TextBox | txtValor | 10 | ||
| Label | lblpercentualComissao | % da Comissão: | ||
| TextBox | txtpercentualComissao | 5 | ||
| Label | lbltotalComissao | Total da Comissão: | ||
| TextBox | txttotalComissao | 10 |
Duplo clique no botão btnCancelar e insira o código conforme abaixo
private void tlbCancelar_Click(object sender, EventArgs e)Como a subrotina limpar não criada, observe que ficou sublinhado na cor vermelha, sendo apresentado erro. Logo abaixo da chave do fechamento do código que você inseriu do botão cancelar, digite o código abaixo:
private void limpar()
{
foreach (Control ctl in gpbDados.Controls)
{
if (ctl is TextBox) ctl.Text = "";
if (ctl is MaskedTextBox) ctl.Text = "";
if (ctl is ComboBox) ctl.Text = "";
if (ctl is CheckBox) (ctl as CheckBox).Checked = false;
}
lblMensagem.Text = "";
}
Volte ao Design do Form. Duplo clique na barra de título, para ter acesso ao evento Load e insira o código conforme abaixo:
private void frmComissao_Load(object sender, EventArgs e)
{
tlbCancelar_Click(sender, e);
}
Codificação do botão Novo:
private void tlbNovo_Click(object sender, EventArgs e)
{
tlbSalvar.Enabled = true;
tlbNovo.Enabled = false;
grbDados.Enabled = true;
tlbNovo.Tag = "Incluir";
mskData.Text = DateTime.Now.ToString("dd/MM/yyyy");
txtcodigoVendedor.Focus();
}
Codificação do botão Salvar:
private void tlbSalvar_Click(object sender, EventArgs e)
{
if (txtValor.Text.Length == 0)
{
MessageBox.Show("Informe o Valor da Venda!", "Valor", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtValor.Focus();
return;
}
if (txtpercentualComissao.Text.Length == 0)
{
MessageBox.Show("Você tem que Informar o Vendedor para obter o % de Comissão!", "% Comissão", MessageBoxButtons.OK, MessageBoxIcon.Error);
cmbVendedor.Focus();
return;
}
if (txtcodigoVendedor.Text.Length == 0)
{
MessageBox.Show("Informe o Código do Vendedor!", "Vendedor", MessageBoxButtons.OK, MessageBoxIcon.Error);
cmbVendedor.Focus();
return;
}
if (MessageBox.Show("Deseja Salvar ?", "Salvar", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
calcula_Comissao(); //Chama a rotina para calcular a comissão
var valorSemMascara = "";
mskData.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals; // Retira a máscara para efetuar a validação abaixo
valorSemMascara = mskData.Text;
if (valorSemMascara == "")
{
MessageBox.Show("Informe a Data!", "Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
mskData.Focus();
return;
}
mskData.TextMaskFormat = MaskFormat.IncludePromptAndLiterals; // Insere a máscara na data
DateTime dataVenda;
if (!DateTime.TryParse(mskData.Text, out dataVenda)) // Tenta (verifica) se a data informada não estiver correta. out dataVenda é a saída se é verdadeiro ou falso
{
MessageBox.Show("Data Inválida!", "Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
mskData.Focus();
return;
}
try
{
clsComissao classeComissao = new clsComissao();
if (tlbNovo.Tag.ToString() == "Incluir")
{
classeComissao.inserir(int.Parse(txtcodigoVendedor.Text), Convert.ToDateTime(mskData.Text), decimal.Parse(txtValor.Text));
MessageBox.Show("Comissão incluída com sucesso!", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
classeComissao.editar(Convert.ToInt32(txtLancamento.Text), int.Parse(txtcodigoVendedor.Text), Convert.ToDateTime(mskData.Text), decimal.Parse(txtValor.Text));
MessageBox.Show("Comissão editada com sucesso!", "Editar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception erro)
{
MessageBox.Show(erro.Message, "Erro:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
tlbCancelar_Click(sender, e);
tlbNovo.Tag = "";
}
}
}
Observe que a subrotina calcula_Comissao, precisa ser criada já que está sublinhada na cor vermelha. Logo abaixo do botão salvar, crie a mesma conforme abaixo:
private void calcula_Comissao()
{
try
{
decimal valor = Decimal.Parse(txtValor.Text); // Converte o valor da venda para decimal e armazena na variável valor
decimal PercentualComissao = decimal.Parse(txtpercentualComissao.Text); // Converte o percentual de comissão para decimal e armazena na variável percentualComissao
decimal totalComissao = (valor * PercentualComissao) / 100; // Multiplica o valor da venda pelo percentual da comissão dividindo por cem, para extrair o percentual armazenando o resultado na variável totalComissao
txttotalComissao.Text = totalComissao.ToString(); // Converte o totalComissao para string para que seja possível exibi-lo na caixa de textos txttotalComissao
}
catch (Exception erro)
{
MessageBox.Show(erro.Message);
}
}
Codificação da caixa de textos do código do vendedor txtcodigoVendedor e no evento KeyDown, insira o código abaixo:
private void txtcodigoVendedor_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F2)
{
e.SuppressKeyPress = true;
// Instancia o formulário usando o bloco 'using' para liberar memória após o uso
using (frmPVendedor formPesquisa = new frmPVendedor())
{
// Abre o formulário e espera o resultado
if (formPesquisa.ShowDialog() == DialogResult.OK)
{
// Recupera os dados diretamente das propriedades do formulário de pesquisa
txtcodigoVendedor.Text = formPesquisa.CodigoSelecionado.ToString();
cmbVendedor.Text = formPesquisa.NomeSelecionado;
txtpercentualComissao.Text = formPesquisa.ComissaoSelecionada.ToString();
mskData.Focus();
}
else
{
// Se o usuário fechou sem selecionar nada (ou clicou em cancelar)
tlbCancelar_Click(sender, e);
}
}
}
}
Crie o formulário para pesquisar a comissão dos vendedores, conforme abaixo:
| Controle | Name | Text | ||
| GroupBox | gbOpcoes | Opções | ||
| RadioButton | rbLancamento | Lançamento | ||
| RadioButton | rbVendedor | Vendedor | ||
| RadioButton | rbData | Data | ||
| RadioButton | rbTodos | Todos | ||
| Fora do groupbox opções: | ||||
| Label | lblLancamento | Informe o Lançamento: | ||
| TextBox | txtLancamento | |||
| Label | lblVendedor | Vendedor: | ||
| ComboBox | cmbVendedor | |||
| Label | lbldataInicial | Data Inicial: | ||
| MaskedTextBox | mskdataInicial | Mask: 00/00/0000 | ||
| Label | lbldataFinal | Data Final: | ||
| MaskedTextBox | mskdataFinal | Mask: 00/00/0000 | ||
| GroupBox | gbExibir | Exibir | ||
| Button | btnExibir | &Exibir | ||
| Button | btnSair | Sai&r | ||
Duplo clique na barra de título e insira o código abaixo:
private void frmPComissao_Load(object sender, EventArgs e)
{
clsVendedor classeVendedor = new clsVendedor();
cmbVendedor.DataSource = classeVendedor.pesquisa_Vendedor("");
cmbVendedor.DisplayMember = "nome_vendedor";
cmbVendedor.ValueMember = "codigo";
cmbVendedor.SelectedIndex = -1;
}
Codificação do botão Fechar:
private void btnFechar_Click(object sender, EventArgs e)
{
this.Close();
}
Codificação do botão Exibir:
private void btnExibir_Click(object sender, EventArgs e)
{
clsComissao classeComissao = new clsComissao();
if (rbtLancamento.Checked)
{
if (txtLancamento.Text.Length == 0)
{
MessageBox.Show("Informe o lançamento!", "Lançamento", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtLancamento.Focus();
return;
}
dgvComissao.DataSource = classeComissao.pesquisaLancamento(Convert.ToInt32(txtLancamento.Text));
}
if (rbtVendedor.Checked)
{
if (cmbVendedor.SelectedIndex == -1)
{
MessageBox.Show("Informe o Vendedor!", "Vendedor", MessageBoxButtons.OK, MessageBoxIcon.Error);
cmbVendedor.Focus();
return;
}
dgvComissao.DataSource = classeComissao.pesquisacodigoVendedor(Convert.ToInt32(cmbVendedor.SelectedValue));
}
if (rbtData.Checked)
{
var valorSemMascara = "";
mskdataInicial.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
valorSemMascara = mskdataInicial.Text;
if (valorSemMascara == "")
{
MessageBox.Show("Informe a Data Inicial!", "Data Inicial", MessageBoxButtons.OK, MessageBoxIcon.Error);
mskdataInicial.Focus();
return;
}
mskdataFinal.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
valorSemMascara = mskdataFinal.Text;
if (valorSemMascara == "")
{
MessageBox.Show("Informe a Data Final!", "Data Final", MessageBoxButtons.OK, MessageBoxIcon.Error);
mskdataFinal.Focus();
return;
}
mskdataInicial.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
mskdataFinal.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
dgvComissao.DataSource = classeComissao.pesquisaData(Convert.ToDateTime(mskdataInicial.Text), Convert.ToDateTime(mskdataFinal.Text));
}
if (rbtTodos.Checked)
{
dgvComissao.DataSource = classeComissao.pesquisaTodos();
}
cabecalho(); // Chama o método local para formatar o DataGrid
}
Crie a subrotina cabecalho:
private void cabecalho()
{
if (rbtLancamento.Checked == false && rbtVendedor.Checked == false && rbtData.Checked == false && rbtTodos.Checked == false)
{
MessageBox.Show("Selecione o campo para pesquisa!", "Pesquisa", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
dgvComissao.Columns[0].HeaderText = "Lancto";
dgvComissao.Columns[0].Width = 50;
dgvComissao.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dgvComissao.Columns[1].HeaderText = "CodVend";
dgvComissao.Columns[1].Width = 70;
dgvComissao.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dgvComissao.Columns[2].HeaderText = "Nome do Vendedor";
dgvComissao.Columns[2].Width = 180;
dgvComissao.Columns[3].HeaderText = "Data";
dgvComissao.Columns[3].Width = 70;
dgvComissao.Columns[4].HeaderText = "Valor";
dgvComissao.Columns[4].Width = 80;
dgvComissao.Columns["valor"].DefaultCellStyle.Format = "c2";
dgvComissao.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
dgvComissao.Columns[5].HeaderText = "% com.";
dgvComissao.Columns[5].Width = 30;
dgvComissao.Columns[6].HeaderText = "Total Com.";
dgvComissao.Columns[6].Width = 75;
dgvComissao.Columns["Total Comissão"].DefaultCellStyle.Format = "c2";
dgvComissao.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}
Codificação dos radiobutton:
limpar();
private void limpar()
{
txtLancamento.Text = "";
cmbVendedor.Text = "";
mskdataInicial.Text = "";
mskdataFinal.Text = "";
}
Selecione o DataGridView. No evento DoubleClick, insira o código conforme abaixo:
private void dgvComissao_DoubleClick(object sender, EventArgs e)
{
clsComissao.lancamento = Convert.ToInt32(dgvComissao[0, dgvComissao.CurrentRow.Index].Value.ToString());
this.Dispose();
}
Volte ao formulário de lançamento da comissão (frmComissao.cs).
No botão Pesquisar, insira o código conforme abaixo:
private void tlbPesquisar_Click(object sender, EventArgs e)
{
frmPComissao pesquisaComissao = new frmPComissao();
pesquisaComissao.ShowDialog();
if (clsComissao.lancamento != 0) // Se o conteúdo da variável lancamento não for zero
{
gpbDados.Enabled = true; // Habilita o groupbox
txtLancamento.Text = clsComissao.lancamento.ToString(); // Pega o conteúdo da variável lancamento (que como é estática, ela pode ser compartilhada em qualquer classe, form) e armazena na caixa de textos txtLancamento
clsComissao classeComissao = new clsComissao(); // Instancia a classe comissão
DataRow linha = classeComissao.pesquisaLancamento(Convert.ToInt32(txtLancamento.Text)).Rows[0]; // A classe DataRow permite localizar a linha, referente ao número neste caso do lançamento
txtcodigoVendedor.Text = Convert.ToString(linha["codigoVendedor"]);
cmbVendedor.Text = Convert.ToString(linha["nome_vendedor"]); // A variável linha mais a coluna nome_vendedor, pega o o conteúdo que está armazenada na mesma, e armazena no combobox do vendedor
mskData.Text = Convert.ToString(linha["data"]);
txtValor.Text = Convert.ToString(linha["valor"]);
txtpercentualComissao.Text = Convert.ToString(linha["percentual_Comissao"]);
txttotalComissao.Text = Convert.ToString(linha["Total Comissão"]);
calcula_Comissao(); //Chama a rotina para efetuar o cálculo da comissão
gpbDados.Enabled = true;
tlbNovo.Enabled = false;
tlbSalvar.Enabled = true;
tlbNovo.Tag = "Editar";
cmbVendedor.Focus();
}
else
{
tlbCancelar_Click(sender, e);
}
}