quarta-feira, 18 de maio de 2011

Cadastro de Cliente II - Cadastrar, Alterar, Excluir e Consulta em C#



Conteúdo

1º Passo: Criação do Banco de Dados. 2
2ª Passo: Criar o Projeto. 3
3º Passo: Conectando  com o Banco de Dados. 4
4º Passo: Layout do Formulário. 9
5º Codificando o formulário. 15

Neste Tutorial iremos desenvolver um Cadastro de Cliente completo, onde o usuário pode filtrar a consulta em uma data grid e quando o usuário clicar em uma linha da Data Grid os resultados vão para os seus determinados Campos.

1º Passo: Criação do Banco de Dados


Entre no SQL Server e digite o código a seguir:
create database bdcliente
/*Apague a linha de cima e digite o trecho abaixo*/
Use bdCliente
Create table tbCliente
(
codCliente int not null primary key,
nome varchar(100),
cpf char(14),
telephone char(13)
);
Feche o SQL Server e entre no Visual Studio de sua Preferencia.

  

2ª Passo: Criar o Projeto

Crie um novo Projeto no menu File > New > C# > Windows > Windows Applications.































Dê o nome de SisCliente

3º Passo: Conectando  com o Banco de Dados

Clique no Menu Data > Add New Data Source > DataBase > New Connection.



































Escolha Change:





















Microsoft SQL Server Database File























Encontre a Pasta do Banco de Dados: Geralmente em C:\Arquivos de programas\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA





















Teste a Conexão:



Clique em Sim:


















Clique em Next:






















Selecione o Tables:






















Clique em Finish.

4º Passo: Layout do Formulário


Nesta Parte iremos inserir as mascara no CPF e Telefone.
Em Data Sources(SHIFT + ALT + D) > bdclienteDataSet > tbCliente> cpf
Clique com o botão Direito e selecione MaskedTextBox. Caso não esteja aparecendo clique em Customize e Selecione na lista a MaskedTexBox.
Faça isso com o campo Telephone.
Observe que mudou a figura do lado do nome.

Em Data Sources(SHIFT + ALT + D) > bdclienteDataSet > tbCliente
Clique com o botão Direito e Selecione Detais:
Em ToolBox arraste o componente Containers > GroupBox para o formulário. Feito isso arraste a tabela tbCliente para o formulário.
Agora faça o layout como você preferir.
Uma Sugestão:



















Nesta Parte iremos inserir a mascara clique na campo CPF, Ira aparecer uma seta para a direita clique nela e depois em Set Mask. Como na imagem:
Clique em <Custom> e digite a mascara do CPF. Observe que estou digitando virgula em vez de ponto. Porque o usuário irá vê o ponto
















Faça isso com o Telefone e digite a mascara a seguir: (00)0000-0000.
Seu Layout deverá ficar assim:






















Agora arraste os componente a seguir:
1 GroupBox;
Componentes
Name
Valores
1 GroupBox;

-
Text: Pesquisar
1 Label
-
Text: Filtrar por:
1 ComboBox:

cbmFilrar
Propriedade Items : Código, Nome e CPF
1 Label

-
Text : “=”
1 TextBox

txtPesquisar
-
1 Botão

btnPesquisar
Text: Pesquisar



No Event SelectedIndexChanged(Icone Raio ou duas vezes na combobox) Da Combobox Filtrar ‘cbmFiltrar’ digite o seguinte:
if (cbmFiltrar.Text == "Código")
            {
                txtPesquisar.Mask = "";
            }
            if (cbmFiltrar.Text == "Nome")
            {
                txtPesquisar.Mask = "";

            }
            if (cbmFiltrar.Text == "CPF")
            {
                txtPesquisar.Mask = "000,000,000-00";
            }
              if (cbmFiltrar.Text == "")
            {
                txtPesquisar.Mask = "";
            }

Como na imagem:

Nesta parte iremos mostrar todos os Dados em uma datagrid. Para isso arraste uma Data Grid e na table tbCliente mude o tipo de Dados que esta como Detais para Data Grid e Arraste para a GroupBox como na imagem:




















































Clique na seta no canto superior direita e clique na palavra Dock in parent container com isso o Data Grid selecionar o GroupBox inteiro. Clique em Edit Columns para mudar as palavras das Colunas.
Desmarque as opções a seguir:
Enable Adding;
Enable Editing e
Enable Deleting.
















Volte para o Design(F7) e clique duas vezes no botão Pesquisar e insira  Código a Seguir:
try
            {
                if (cbmFiltrar.Text == "Código")
                {
                    //Define a instrução Sql
                    string sql = "SELECT * FROM tbCliente WHERE codFuncionario =" + txtPesquisar.Text + "";
                    //Lê os dados da variavel sql e conectar no cn
                    cmd = new SqlCommand(sql, cn);
                    //Abre conexão
                    cn.Open();
                    //Define o valor da CommandType para cmd
                    cmd.CommandType = CommandType.Text;
                    /*Representa um conjunto de comandos de dados e uma conexão de banco de dados
                     * que são usados para preencher o DataSet e atualizar um banco de dados SQL Server.*/
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    //Representa uma tabela de dados na memória.
                    DataTable cliente = new DataTable();
                    /* Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de
                     * dados usando o DataTable.*/
                    da.Fill(cliente);
                    /*A tbClienteDataGridView recebe o DataTable cliente*/
                    tbClienteDataGridView.DataSource = cliente;
                    //Fechar a conexão
                }
                if (cbmFiltrar.Text == "Nome")
                {
                    //define a instrução SQL
                    string sql = "SELECT * FROM tbCliente WHERE cliente LIKE '%" + txtPesquisar.Text + "%'";
                    cmd = new SqlCommand(sql, cn);
                    cn.Open();
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable cliente = new DataTable();
                    da.Fill(cliente);
                    tbClienteDataGridView.DataSource = cliente;
                }
                if (cbmFiltrar.Text == "CPF")
                {
                    //define a instrução SQL
                    string sql = "SELECT * FROM tbCliente WHERE CPF ='" + txtPesquisar.Text + "'";
                    cmd = new SqlCommand(sql, cn);
                    cn.Open();
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable cliente = new DataTable();
                    da.Fill(cliente);
                    tbClienteDataGridView.DataSource = cliente;
                }
               if (cbmFiltrar.Text == "")
                {
                    //define a instrução SQL
                    string sql = "SELECT * FROM tbCliente";
                    cmd = new SqlCommand(sql, cn);
                    cn.Open();
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable cliente = new DataTable();
                    da.Fill(cliente);
                    tbClienteDataGridView.DataSource = cliente;

                }

            }
            catch (Exception ex)
            {
                //Caso haja uma exceção
                MessageBox.Show(ex.Message);
            }
            finally
            {
                //Fechar a conexão
                cn.Close();

            }

Nesta Parte quando o usuário clicar em uma linha da datagrid  os dados vão para os campos determinados.



Primeiro vamos criar um método que limpar todas as textbox e maskedTextBox como no trecho abaixo:
  private void LimparCampo()
        {
            foreach (Control c in Controls)
            {
                if (c is GroupBox)
                {
                    for (int i = 0; i < c.Controls.Count; i++)
                    {
                        if (c.Controls[i] is TextBox)
                        {
                            (c.Controls[i] as TextBox).Text = "";
                        }
                        if (c.Controls[i] is MaskedTextBox)
                        {
                            (c.Controls[i] as MaskedTextBox).Text = "";

                        }
                        if (c.Controls[i] is ComboBox)
                        {
                            (c.Controls[i] as ComboBox).Text = "";

                        }
                    }
                }
            }
        }

Nesta parte iremos acessar a evento da Data Grid que ficar responsável por mostrar os dados quando o usuário clicar uma vez.
Clique na data grid > Em Propriedade > Observer uma figura de uma Raio. Clique nela então clique duas vezes na propriedade Click e insira o código abaixo:
private void tbClienteDataGridView_Click(object sender, EventArgs e)
        {
            //Limpar a GroupBox
            LimparCampo();

            //O Campo codFuncionario recebe da datagrid tbCliente a celula número 0 e assim por diante
            codFuncionarioTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[0].Value.ToString();
            nomeTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[1].Value.ToString();
            cpfMaskedTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[2].Value.ToString();
            telephoneMaskedTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[3].Value.ToString();
        }


O Tutorial esta concluído. Foi um Prazer pode ajudar vocês.

Vídeo.

Até Logo,
By: Natanael.

79 comentários:

  1. Olá

    Sou novo por aqui.
    Gostaria da ajuda de vcs, na linguagem C#.
    Tenho um pequeno projeto, com um Form inicial. Este Form tem uma barra de progresso.
    Gostaria de um código, pra chamar o próximo Formm depois de um determinado momento. Ou chamar o próximo Form quando a barra de progresso atingir o máximo.
    Já tentei várias formas: usando contadores, timers, etc.Todos sem sucesso.

    Se puderem ajudar, ficarei agradecido.

    Bruno.

    ResponderExcluir
    Respostas
    1. oi bruno é fácil use o timer e coloque no program.cs o projeto que vc que que inicie (Application.Run(new o seu form());) ai coloca o timer como true e o intervalo 50 ai dentro do timer ou a linha do evento dele vc coloca
      if (pbcarrega.value < 100){

      pbcarrega.value =pbcarrega.value+1;
      ai aqui vc chama o form
      form frm = new form
      frm.showdialog();

      }
      espero ter ajudado

      Excluir
  2. Segue o Tutorial Criando uma Tela de Splash que segue o mesmo lógica que você está querendo:

    http://nstutoriais.blogspot.com/2010/12/tela-de-splash-em-c.html

    ResponderExcluir
  3. Olá

    Consegui fazer a Tela de Splash. Muito Obrigado!

    Continuei fazendo o tutorial desta página, porém me deparei com erros no código do botão pesquisar.

    Alguns comandos como:
    " cmd = new SqlCommand(sql, cn);"
    " cn.Open();"
    " cmd.CommandType = CommandType.Text;"
    " SqlDataAdapter da = new SqlDataAdapter(cmd);"
    Não foram reconhecidos pelo Visual Studio 2010.

    Sublinhado vermelho nas palavras: "cn", "cmd", "SqlDataAdapter" e "SqlCommand".

    Será a falta de algum namespace?

    O que posso fazer para resolver isso?

    Se puder me adicionar no msn( bruno_bgr08@hotmail.com ) ou skype ( brunobgr08 ) ficarei agradecido.

    Bruno.

    ResponderExcluir
  4. Este comandos são para ter acesso ao Banco de Dados e precisando no namespace(Biblioteca ou Classe) a seguir:
    using System.Data.SqlCliente

    A palavra cn representa uma conexão com o SQL Server exemplo:

    //Biblioteca para ter acesso ao Banco de Dados SQL Server
    using System.Data.SqlClient;

    //Representa uma conexão com o SQL Server
    SqlConnection cn = new SqlConnection(Properties.Settings.Default.dbPomposoCS);

    //Representa um comando SQL
    SqlCommand cmd = null;

    //Exemplo
    cmd = new SqlCommand("SELECT * FROM tabela1",cn);


    SqlDataAdapter adapter = new SqlDataAdapter(cmd, cn);

    ResponderExcluir
  5. ola natanael da um help ai cara esto iniciando nessa area de desenvolvedor agr e começando pelo C# , enfim pra min chamar o metodo MASK eu devo cria-lo ?

    ResponderExcluir
  6. Primeiro use o componente de interface do usuário MaskedTextBox assim poderá usa.
    Exemplo
    tenho um componente MaskedTextBox chamado mtbcpf e gostaria de inserir uma mascara para o CPF:

    Exemplo:

    mtbcnpj.Mask = "000,000,000-00";

    ResponderExcluir
  7. me refiro a essa parte do tuto:

    No Event SelectedIndexChanged(Icone Raio ou duas vezes na combobox) Da Combobox Filtrar ‘cbmFiltrar’ digite o seguinte:
    if (cbmFiltrar.Text == "Código")
    {
    txtPesquisar.Mask = "";
    }

    ResponderExcluir
  8. Para acessar a Propriedade Mask e indispensável o componente MaskedTextbox(arrastar e soltar).

    ResponderExcluir
  9. então e adicionei as MaskedTextbox e as mascaras mas quando eu digito esse comando no combox filtrar ele naum reconhece ...

    ResponderExcluir
  10. ola desculpe o inconveniente eu consegui da seguinte maneira

    if (cmbFiltrar.Text == "CPF")
    {
    cpfMaskedTextBox.Mask = "000,000,000-00";
    }
    Poren como eu posso usar a propriedade Mask para filtrar a textBox nome ?

    ResponderExcluir
  11. 1. Pela Textbox eu não sei usando mascara. Porque a Propriedade Mask e exclusiva para o componente MaskedTextBox. Quem souber usar mascara na TextBox por Favor poste um comentário.

    Para Filtrar a MaskedTextbox Nome faça:

    2. Primeiro você limpa a mascara usando o if e a propriedade Mask vazia. Então vai poder filtrar pelo nome.

    ResponderExcluir
  12. if (cmbFiltrar.Text == "Nome")
    {
    cpfMaskedTextBox.Mask = "";
    }

    Agora sim pode filtra pelo nome

    ResponderExcluir
  13. estou muito grato pela atenção como eu disse sou iniciante e estou aprendendo a entender a logida do C#...

    Me diz uma coisa amigo nesse caso acima eu estaria limpando a caixa cpfMaskedBox, porém resta a MaskedBoxtelafone isso não iria gerar um erro ?
    eu teria q chamar um else ?
    ...

    ResponderExcluir
  14. não aconteceria nenhum erro. Pois quando a propriedade Mask esta vazia ela aceita qualquer caractere.

    ResponderExcluir
  15. E ae natanael blz então veio infelismente naum consegui fzr seu tuto, naum sei se foi prq usei sql2008 e vs2010 e criei o bd de forma diferente da sua mas naum consegui usar os comandos cn e cmd do sql mesmo adcionando o namespace vou tentar finalizar o projeto usando o bindingSource em vez de maskaras .qndo eu estiver mais familiarizado com o C# volto a tentar denovo
    obrigado otimo blog ...

    ResponderExcluir
  16. ok. Qualquer coisa estou aqui.
    flw

    ResponderExcluir
  17. Natanael, bom dia!
    Cara suas vídeos aulas são muito boas e o material aqui do site também.
    Apenas sinto falta do projeto criado por você, por que você não disponibiliza para nós? Seria de grande ajuda.

    Valeu,
    Júnior

    ResponderExcluir
  18. Vlw Júnior.
    Nos próximos tutoriais irei fazer isso.
    Flw

    ResponderExcluir
  19. Olá amigo gostei do seu tutorial mas no meu deu um erro, tem como ver se consegue me ajudar?
    private void btnPesquisar_Click(object sender, EventArgs e)
    {
    try
    {
    if (txtPesquisaFuncionario.Text != "" && txtPesquisaMesAno.Text != "")
    {
    string sql = "SELECT * FROM tbBercario WHERE Funcionario LIKE '%" + txtPesquisaFuncionario + "%' AND MesAno=" + txtPesquisaMesAno + "";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable tbBbercario = new DataTable();
    da.Fill(tbBbercario);
    tdBercarioDataGridView.DataSource = tbBbercario;
    }
    else if (txtPesquisaFuncionario.Text != "" && txtPesquisaMesAno.Text == "")
    {
    string sql = "SELECT * FROM tbBercario WHERE Funcionario LIKE '%" + txtPesquisaFuncionario + "%'";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable tbBbercario = new DataTable();
    da.Fill(tbBbercario);
    tdBercarioDataGridView.DataSource = tbBbercario;
    }
    else
    {
    MessageBox.Show("Preencha os campos!");
    }

    }
    catch (Exception ex)
    {
    //Caso haja uma exceção
    MessageBox.Show(ex.Message);
    }
    finally
    {
    //Fechar a conexão
    cn.Close();
    }

    ResponderExcluir
  20. Vê agora.
    private void btnPesquisar_Click(object sender, EventArgs e)
    {
    try
    {
    if ((txtPesquisaFuncionario.Text != "") && (txtPesquisaMesAno.Text != ""))
    {
    string sql = "SELECT * FROM tbBercario WHERE Funcionario LIKE '%" + txtPesquisaFuncionario.Text + "%' AND MesAno=" + txtPesquisaMesAno.Text + "";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable tbBbercario = new DataTable();
    da.Fill(tbBbercario);
    tdBercarioDataGridView.DataSource = tbBbercario;
    }
    else if ((txtPesquisaFuncionario.Text != "") && (txtPesquisaMesAno.Text == ""))
    {
    string sql = "SELECT * FROM tbBercario WHERE Funcionario LIKE '%" + txtPesquisaFuncionario.Text + "%'";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable tbBbercario = new DataTable();
    da.Fill(tbBbercario);
    tdBercarioDataGridView.DataSource = tbBbercario;
    }
    else
    {
    MessageBox.Show("Preencha os campos!");
    }

    }
    catch (Exception ex)
    {
    //Caso haja uma exceção
    MessageBox.Show(ex.Message);
    }
    finally
    {
    //Fechar a conexão
    cn.Close();
    }

    ResponderExcluir
  21. Pq vc nao postou todas as video aula cara ?
    abraços

    ResponderExcluir
  22. Neste tutorial é apenas mostrado o video do sistema final. Infelizmente não tenho ele em video aula apresentando o código.

    ResponderExcluir
  23. Olá, Preciso da sua ajuda. Estou desenvolvendo um TCC e vou desenvolver um sistema para cantina na lingua c# e gostaria que me ajudasse. Se você responde esta mensagem eu te mando o meu e-mail para nos falar melhor, enfim Beijos.

    ResponderExcluir
  24. tem como sim! Em que posso te ajudar?

    ResponderExcluir
    Respostas
    1. Natanael ótimo vídeo... tem algum tutorial que ensine a fazer sistema simples para um oficina em c# ... ?

      Excluir
  25. Olá Natanael, ótimo blog cara!
    Parabéns pelos acessos merecidos, percebi sua grande atenção com o pessoal
    e tbm não poderia passar sem deixar uma perguntinha.. heheh
    então é o seguinte:
    criei uma tabela de clientes e tudo certinho
    o programa salva no banco de dados e tudo OK
    Porém, quando ele salva.. ele não atualiza o banco de dados na mesma hora. É necessário fechar o programa e abrir novamente pra poder ver o último item registrado.

    o VB não tá reconhecendo o comando então ele tá dando erro exatamente na linha que faria atualizar a lista dos itens.. estou usando DataGridView e a linha que dá erro é a seguinte:

    ...
    Grid.DataBind();
    ...

    ResponderExcluir
  26. Nataniel, seu novo em desenvolvimento voce teria algum modelo de cadastro mas utilizando 2 tabelas com o relacionamento entre PK e FK? cara gostei muito do seu tuto sobre o cadastro com uma tabela me ajudaou d+++, mas agora quero ir um pouco alem>>>

    ResponderExcluir
  27. Ola Como faço para Adquirir esse Aplicativo ?

    ResponderExcluir
  28. atraves do meu email 259.natanael@gmail.com

    ResponderExcluir
  29. Este comentário foi removido pelo autor.

    ResponderExcluir
  30. amigo
    está td mt bonito e tal.... ja fiz essa pergunta em outra oportunidade e vc nao me respondeu.
    vc fala em editar e excluir.
    veja bem!
    no momento da pesquisa do usuario, cpf ou ID atualiza a tbClienteDataGridView:

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    tbClienteDataGridView.DataSource = cliente;

    neste momento entra o editar e surge o problema.
    um duplo clic no DataGridView e preenche os textBox acima com as informaços e assim por diante.... funcionando OK.
    se for editar diretamento no texbox nao vai atualizar o BD atraves do TableAdapter.Update (que está no botão save) gerando conflito com a chave primaria.
    detalhe disso td, se editar diretamente no DataGridView ele permite a edição.
    gosto dos teus tutorias, estou sempre por aqui "espiando" e creio que vc consiga me ajudar nessa.
    forte abraço

    ResponderExcluir
  31. Natanael boa tarde,

    Estou com um sistema de gerenciamento de um clínica de biomedicina, estou fazendo a parte de cadastro de exames, porém é um trabalho de conclusão de curso, e meu grupo decidiu usar entity, como faço esse mesmo processo de cadastro - exclusão - alteração. Já adicionei você no meu msn é robinholink@hotmail.com
    Está assim, tenho um form de cadastro de exames, onde tem campo código com o botão de gerar código e um campo nome do exame, seguindo dos botões continuar - alterar - excluir - cancelar - sair, ao clicar em continuar abre um form onde temos o cadastro das analises do exame, onde tenho campos para preenchimento do nome das analises, referencias dos exames e unidade de medida da analise, seguindo de botões cadastrar - cancelar - voltar, clicando em cadastrar salva no banco de dados. Cadastro efetuado com sucesso e sai do cadastro.
    em seguida temos o preenchimento dos resultados dos exames, neste form tem campo CPF tendo um botão pesquisa - trazendo todas as informações do paciente cadastrado no sistema, um campo solicitante, tendo um campo pesquisa para pesquisar os médico que pediu o exame, seguindo de um campo de método, material e um combobox selecione o exame, sendo que todos os exames cadastro no sistema ele tem q aparecer neste combobox, ao selecionar este combobox e clicar no botão continuar abrira um form com resultados, onde tem labels que receberão as analises cadastradas neste exame selecionado, tendo os campos para o preenchimento do resultado, em seguida um textArea para observações, e botões gerar laudo - cancelar - voltar, clicando em gerar laudo segue um relatório com as informações dos pacientes e os resultados preenchidos.

    Se você puder me ajudar eu agradeço muito, já te add no msn e tenho o sistema aqui se você quiser que eu te mande para fácil entendimento, fico no aguardo.

    Desde já agradeço
    atenciosamente,
    Robson.

    ResponderExcluir
  32. Bom Dia Natanael

    Excelente trabalho de pesquisa. Sou professor e trabalhei no NTE(Núcelo de TEcnologia Educacional), de Campo GRande MS. Hoje moro em Itapema, SC. mas mesmo aposentado ainda curto a programação. Gostaria muito que vc mostrase como fazer o "Cadastro de Cliente", exatamente como está en C#. Só que uso WebMatrix e gostaria que fosse feito em ASPNet usando a linguagem C#.
    Certo de Ser Atendido, antecipo meus agradecimentos
    PRof. Edmilson Rodrigues de Oliveira

    ResponderExcluir
  33. Boa noite eu refiz o projeto deste tutorial e quando coloco para debugar ele entra na excecao com a mensagem "object reference not set to an instance of AN OBJECT"...

    ResponderExcluir
  34. segue o trecho do codigo ..sem o mask
    private void cmbFiltrar_SelectedIndexChanged(object sender, EventArgs e)
    {
    if (cmbFiltrar.Text == "Código")
    {
    textPesquisar.Text = "";
    }
    if (cmbFiltrar.Text == "Nome")
    {
    textPesquisar.Text = "";
    }
    if (cmbFiltrar.Text == "CPF")
    {
    textPesquisar.Text = "000.000.000-00";
    }
    if (cmbFiltrar.Text == "")
    {
    textPesquisar.Text = "";
    }
    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
    }

    private void btnPesquisar_Click(object sender, EventArgs e)
    {
    try
    {
    if (cmbFiltrar.Text == "Código")
    {
    string sql = "SELECT * FROM Cliente WHERE codigo =" + textPesquisar.Text;
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    ClienteDataGridView.DataSource = cliente;
    }
    if (cmbFiltrar.Text == "Nome")
    {
    string sql = "SELECT * FROM Cliente WHERE cliente LIKE '%" + textPesquisar.Text + "%'";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    ClienteDataGridView.DataSource = cliente;
    }
    if (cmbFiltrar.Text == "CPF")
    {
    string sql = "SELECT * FROM Cliente WHERE CPF ='" + textPesquisar.Text + "'";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    ClienteDataGridView.DataSource = cliente;
    }
    if (cmbFiltrar.Text == "")
    {
    string sql = "SELECT * FROM Cliente";
    cmd = new SqlCommand(sql, cn);
    cn.Open();
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    ClienteDataGridView.DataSource = cliente;
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    cn.Close();
    }
    }

    public SqlConnection cn { get; set; }
    public SqlCommand cmd { get; set; }

    private void groupBox1_Enter(object sender, EventArgs e)
    {

    }
    }
    }

    ResponderExcluir
  35. Boa Tarde Guerreiro, eu tentei instalar o visual studio 2005 no windows seven mas não rolou, eu tenho uma empresa de motoboy aqui em são paulo e gostaria de criar o meu próprio sistema, coisa basica - cadastro de clientes, motoboys, serviços,ordem de serviço e relatórios dos mesmo.

    Pergunta - voce é da iurd

    Sem mais,

    Abraço

    ResponderExcluir
  36. Instalar o Visual Studio 2010.
    Eu sou da iurd-df

    ResponderExcluir
  37. Natanael tipo quando eu chego no terceiro passo faço tudo certinho quando vo seleciona banco de dados la em C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

    diz assim :Você não tem permissão para abrir o arquivo

    oque eu faço ?

    ResponderExcluir
  38. Srs. Bom dia!
    Meu nome é Corte sou iniciante em programação C Sharp e estou com algumas duvidas referente ao codigo, percebi que voces estao conversando acima sobre o botao pesquisa e mesmo assi estou com algumas duvidas. Como faço para excluir um registro do banco.

    Se alguem usar skype me adicionei Skype: andre.corte4 e meu email: andre@cortecobol.om.br

    ResponderExcluir
  39. Boa Tarde!

    Qual a linha de comando, que ao intruduzir algum texto na textobox ele fique em letras maiusculas e sem acentos?

    no aguardo.

    ResponderExcluir
  40. Ola amigo é bem simples veja:

    using System;

    public class OlaAmigo
    {
    public static void Main(String[] args)
    {
    string frase = "esta frase esta em minuscula";

    Console.WriteLine(frase.ToUpper());

    //O metodo ToUpper converte qualquer string em //maiuscula.


    }


    }

    ResponderExcluir
  41. ESTAR DANDO ERRO! SEGUE O CODIGO ABAIXO:

    namespace SiSolucao
    {
    public partial class FrmCadContrato : Form
    {
    public FrmCadContrato()
    {
    InitializeComponent();
    }
    public class OlaAmigo
    {
    public static void Main(string[] args)
    {
    string frase = "esta frase esta em minuscula";
    Console.WriteLine(frase.ToUpper());
    //O metodo ToUpper converte quaquer string em //maiusculo.
    }
    }
    private void cadContratoBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {

    .
    .
    ESTAR DANDO ERRO NO
    public static void Main(string[] args) "Main"

    E NA LISTA DE ERRO:

    namespace SiSolucao
    {
    static class Program
    {
    ///
    /// The main entry point for the application.
    ///
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    }
    }

    NO MAIN TBM.
    O QUE PODE SER?

    ResponderExcluir
  42. MAIS OUTRA PERGUNTA.
    ANTES DE EXECUTAR O PROGRAMA TIPO QUANDO CLICA NO BUTAO SALVAR EXECUTA SE OS CAMPOS ESTAR PREENCHIDOS.

    EX. PARA TxtBox.
    //Verifica se os Campos Estão Preenchidos
    if (TextBox.Text != "")
    {
    "o comando a ser salvo"
    }
    else
    {
    messagebox......
    }

    A minha pergunta é qual o teste para o "MaskedTextBox" verificar se foi preenchido sendo que ele vai conter formatação ex: ___/____/___.

    ResponderExcluir
  43. vo pode entra no meu pc?
    ID do TeamViewer
    580 699 746

    senha
    fjm719

    ResponderExcluir
  44. Natanael... cade o "Cadastro de Cliente I"?
    procurei mas nao encontrei...

    ResponderExcluir
  45. esse código vc utiliza C# 2008

    ResponderExcluir
  46. Desenvolvi na versão 2.0 C# , VS 2005, mas é possível usar em versões atuais.

    ResponderExcluir
  47. eu uso o visual studio 2010 e n na parte de pesquisa ~ta dando erro no cmd exemplo: cmd = new SqlCommand(sql, cn); e em todos os cmd

    ResponderExcluir
  48. //Criar uma variavel de Conexão
    string connection = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\bdClientes.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
    //Representa uma conexão aberta para um banco de dados SQL Server.
    SqlConnection cn = new SqlConnection(connection);
    //Testar a Conexão
    {
    try


    if (cbmFiltrar.Text == "Código")
    {

    //Define a instrução Sql

    string sql = "SELECT * FROM dbCliente WHERE Código =" + txtPesquisar.Text + "";

    //Lê os dados da variavel sql e conectar no cn

    cmd = new SqlCommand(sql, cn);

    //Abre conexão

    cn.Open();

    //Define o valor da CommandType para cmd

    cmd.CommandType = CommandType.Text;

    /*Representa um conjunto de comandos de dados e uma conexão de banco de dados

    * que são usados para preencher o DataSet e atualizar um banco de dados SQL Server.*/

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    //Representa uma tabela de dados na memória.

    DataTable cliente = new DataTable();

    /* Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de

    * dados usando o DataTable.*/

    da.Fill(cliente);

    /*A tbClienteDataGridView recebe o DataTable cliente*/

    dbClienteDataGridView.DataSource = cliente;

    //Fechar a conexão

    }

    if (cbmFiltrar.Text == "Nome")
    {

    //define a instrução SQL

    string sql = "SELECT * FROM dbCliente WHERE cliente LIKE '%" + txtPesquisar.Text + "%'";

    cmd = new SqlCommand(sql, cn);

    cn.Open();

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataTable cliente = new DataTable();

    da.Fill(cliente);

    dbClienteDataGridView.DataSource = cliente;

    }

    if (cbmFiltrar.Text == "CPF")
    {

    //define a instrução SQL

    string sql = "SELECT * FROM dbCliente WHERE CPF ='" + txtPesquisar.Text + "'";

    cmd = new SqlCommand(sql, cn);

    cn.Open();

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataTable cliente = new DataTable();

    da.Fill(cliente);

    dbClienteDataGridView.DataSource = cliente;

    }

    if (cbmFiltrar.Text == "")
    {

    //define a instrução SQL

    string sql = "SELECT * FROM tbCliente";

    cmd = new SqlCommand(sql, cn);

    cn.Open();

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataTable cliente = new DataTable();

    da.Fill(cliente);

    dbClienteDataGridView.DataSource = cliente;




    }




    }

    catch (Exception ex)
    {

    //Caso haja uma exceção

    MessageBox.Show(ex.Message);

    }

    finally
    {

    //Fechar a conexão

    cn.Close();

    ResponderExcluir
  49. Bom dia Natael !

    Meu nome é Diego venho pedir uma ajuda ao amigo, estudo linguagens de programação e estou desenvolvendo um sistema de oficina mecânica como projeto do meu treinamento. Já fiz alguns forms o sistema ta começando a ficar legal.

    Quando faço cadastro do cliente eu salvo os dados em txt, porque comecei aprender agora banco de dados.
    Na minha segunda tela eu tenho um textbox onde vai a Placa do veículo e um botão consultar Placa onde ele já chama o form de cadastro de cliente. Só que quero colocar um código no botão consultar Placa, que quando for inserida a Placa do veículo ao clicar no botão o sistema faça uma verificação no diretório onde o arquivo está salvo e me retorne, se já está cadastrado algum nome de cliente com aquela Placa ou a própria Placa que foi inserida no textbox esteje salva, caso já tenha cadastrado no sistema, ai eu chamo esse cadastro e preenchendo o form de cadastro de cliente em branco com esses dados, caso não tenha cadastro de cliente ou da própria Placa mesmo, me retorna uma mensagem dizendo que não existe, ai chamo form cadastro de cliente e cadastro ele, fazendo isso evito de correr o risco de cadastrar mais de uma vez o mesmo cliente que já esteje cadastrado.

    Agradeço desde já.

    Se puder me ajudar melhor ainda, assim aprimoro mais o meu trabalho e aprendo junto com você.

    valeu até mais.

    abraço

    ResponderExcluir
  50. olá to precisando de um help!!! n sei pq mas dá exception quando eu clico no código e deixo o txt sozinho, funciona somente quando digito algo...pode me ajudar por favor?



    public void consultar()
    {
    SqlConnection sqlconn = Conexao.abrirConexao();



    try
    {
    if (cbConsulta.Text == "Código")
    {


    string sql = "SELECT * FROM CLIENTE WHERE CodCli =" + txtConsulta.Text + "";

    SqlCommand cmd = new SqlCommand(sql, sqlconn);


    cmd.CommandType = CommandType.Text;

    SqlDataAdapter de = new SqlDataAdapter(cmd);

    DataTable cliente = new DataTable();
    de.Fill(cliente);
    dGConsulta.DataSource = cliente;

    }
    if (cbConsulta.Text == "Nome")
    {
    //define a instrução SQL
    string sql = "SELECT * FROM CLIENTE WHERE NomeCli LIKE '%" + txtConsulta.Text + "%'";
    SqlCommand cmd = new SqlCommand(sql, sqlconn);

    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    dGConsulta.DataSource = cliente;
    }
    if (cbConsulta.Text == "CPF")
    {
    //define a instrução SQL
    string sql = "SELECT * FROM CLIENTE WHERE CPFCli ='" + txtConsulta.Text + "'";
    SqlCommand cmd = new SqlCommand(sql, sqlconn);

    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    dGConsulta.DataSource = cliente;
    }
    if (cbConsulta.Text == "")
    {
    //define a instrução SQL
    string sql = "SELECT * FROM CLIENTE";
    SqlCommand cmd = new SqlCommand(sql, sqlconn);

    cmd.CommandType = CommandType.Text;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable cliente = new DataTable();
    da.Fill(cliente);
    dGConsulta.DataSource = cliente;

    }
    else
    {
    MessageBox.Show(" Dados não cadastrados");
    }
    }
    catch (Exception errro)
    {
    //Caso haja uma exceção
    MessageBox.Show(errro.Message +" no banco");
    }
    finally
    {
    Conexao.fecharConexao();

    }
    }

    ResponderExcluir
  51. Cara, sensacional seu sisteminha. Ajudou muito, eu que sou estudante na área. Se possível, poderia me enviar a solution? lucasbuim@hotmail.com

    ResponderExcluir
  52. meu nome é pedro
    como faço a programação usandi linguagem em c++....... estou começando agora e presiso de ajuda

    ResponderExcluir
  53. Muito bom seu blog e seus tutoriais, dar pra aprender muitas coisas, o ruim é que dar erro e não roda... Verifica antes de postar... Braço...Obg.

    ResponderExcluir
  54. Bom dia.
    Parabéns pelo site.
    Sou estudante de programação pelo curso adv, www.cursoadv.com.br.
    Gostei muitos dos seus tutoriais, muito obrigado pela ajuda.

    ResponderExcluir
  55. Natanael, boa tarde....estou seguindo o seu tutorial, mas quando acesso C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA para pegar o banco de dados, ele dá acesso negado. Sabe me dizer o porque? Eu uso o win 8.1

    ResponderExcluir
    Respostas
    1. Mesmo problema aqui.

      Excluir
  56. Ola Natanael. qual codigo coloco para que não aceite dados duplicados...tipo cliente com mesmo cpf?

    ResponderExcluir
  57. Opa! A lógica é o seguinte
    1º Verificar se o CPF existe na base de dados
    2º Se existir, avisar para o usuário. Se não, insere os dados.


    Abraços

    ResponderExcluir
  58. No sql coloque o cpf como primary key logo o cpf ja cadastrado nunca se repetirá pois sera chave primaria, no C# deve se tratar a forma como o sql responde a esta tentativa de cadastro de um cpf ja cadastrado, Ex: se tentar inserir via codigo direto no sql ele alertara que o dado é um pk( primary key) e nao pode ser duplicado. ja o C# tem que intender este alerta do sql quando ele disse que o dado nao pode ser alterado... criando a condiçao if... eu costumo programar abilitando os objetos no VS. EX; se o dado que vou cadastrar ja estiver cadastrado o botao cadastrar nao abilita e em um dialogshow eu mostro o detalhe do cadastro dizendo.... o cpf xxxx pertence ao cliente xxx... ai ja estamos em LP.

    ResponderExcluir
  59. qual comando eu uso q mostra erro quando um campo de um cadastro esta vazio ou incompleto

    ResponderExcluir
  60. qual comando eu uso q mostra erro quando um campo de um cadastro esta vazio ou incompleto

    ResponderExcluir
    Respostas
    1. Precisa programar um messagebox
      If(condição){
      Messagebox ("mensagem");
      Else
      Messagebox ("mensagem");
      }

      Excluir
    2. Programa no button de cadastro mesmo

      Excluir
  61. Bom dia preciso fazer uma implementação em C# cadastro de funcionarios e veiculos, quem poder ajudar ficarei grato.

    ResponderExcluir
  62. Olá, para assessoria em trabalho entre em contato através do email: natanaelsantos@outlook.com

    ResponderExcluir
  63. Muito obrigado cara por salvar a minha pele, precisava de um modo de fazer uma pesquisa por código no meu trabalho para APRESENTAR cara kk, e por fim uma luz no fim do túnel graças a DEUS me levou ao seu vídeo !!!!, muita satisfação quando deu certo aqui, Natanael pode deixar que os crédito serão dados a você obrigado meu brother !!

    ResponderExcluir
  64. No meu caso a chave primária é o CPF, coloquei o codigo como label no frmCliente (desta maneira o usuario não consegue altera-lo). Como faço para aparecer uma mensagem de "CPF já cadastrado" se tentarem entrar com um CPF já cadastrado:?

    ResponderExcluir
  65. Preciso de ajuda., estou desenvolvendo o TCC e gostaria de saber como faço pra fazer uma pesquisa interativa, eu insiro ás informações no textbox e enquanto vou digitando o datagrid vai automaticamente atuálizando e mostrando os cadastros correspondendo cada letra que eu digitar,, e outra como faço pra inserir fotos no banco de dados pelo c#, em um sistema de cadastro que necessita de foto., obrigado, meu email é douglasdgs1234@gmail,, espero que possam me ajudar

    ResponderExcluir
  66. ola estou com uma dificuldade, e preciso de ajuda;
    a minha questão é a seguinte:
    Quero criar um pequeno programa que ao carregar no botão, executa uma stored procedure e se a Stored não existir na base de dados o sistema cria essa stored

    ResponderExcluir
  67. Olá, parabéns pelo trabalho, estou tendo dificuldades em alterar os dados do cliente depois que é feito a pesquisa.
    Consigo cadastrar, clicando na gridviewer as txtbox preenchem com as informações e se eu as altero e clico no botão salvar funciona legal.
    Mas se vc pesquisa o cliente e clica na gridviewer para preencher as txtbox e altera as informações quando vc clica no botão salvar ele sobrescreve o primeiro cliente. Pode me ajudar ?

    ResponderExcluir
  68. Pessoal, como seria a questão de não ter que colocar o ID sendo ele pego e exibido do banco de dados ?

    ResponderExcluir