quinta-feira, 26 de maio de 2011

Sistema de Ordem de Serviço em C# - SQL Server e Crystal Reports Parte IX

8.  Tela de Cliente
Mude as propriedades a Seguir:
Propriedades
Valores
Icon
Selecione o Ícone
Size
959; 597
StartPosition
CenterScreen
Text
Cadastro de Cliente

Arraste uma GroupBox e adicione os valores nas propriedades:
Propriedades
Valores
Location
12; 35
Size
422; 235
Text
Dados Pessoais

Na Data Source mude os tipos de Dados(Ex. TextBox, ComboBox) do campo CPF e telefone para MaskTextBox e Estado para ComboBox. Arraste para a GroupBox.

Adicione uma groupBox para Pesquisar o Cliente e mude as propriedades a seguir:
Propriedades
Valores
Location
440; 35
Size
496; 69
Text
Pesquisar Cliente

Adicione os seguintes componentes para dentro da GroupBox:
Label
Text = Filtrar Por
ComboBox
Edit Items: Código, Nome e name = cbmFiltrar
Label
Text = “=”
MaskTextBox
Name = txtPesquisar
Botão
Name = btnPesquisar , Text = Pesquisar

Arraste uma GroupBox e adicione os valores nas propriedades:
Propriedades
Valores
Location
440; 110
Size
499; 441
Text
Cliente(s)

Desabilite o Código, Data de Cadastro, Cadastrado por pela propriedade Enable; 

Na Paleta Data Sources > Arraste a tabela tbCliente para dentro da GroupBox, clique na seta ao lado, clique Dock in parent container. Desabilite a Enable Adding, Enable Editing e Enable Deleting e por fim clique em Edit Columns. Mude os nomes de acordo com a figura a seguir:





















Arraste uma GroupBox e adicione os valores nas propriedades:
Propriedades
Valores
Location
12; 276
Size
422; 272
Text
Serviço(s) Prestados:

 Na Paleta Data Sources > Arraste a tabela tbOrdemServico para dentro da GroupBox, clique na seta ao lado, clique Dock in parent container e por fim Edit Columns. Exclua a coluna idCliente. Mude os nomes das colunas de acordo com a figura a seguir:



















O Layout deverá ficar assim:




















Volte para o Design(F7) e adicione o namespace e duas variáveis a seguir.










Volte para o Design(F7) e clique duas vezes no botão Pesquisar. Adicione o código a seguir:
            try
            {
                if (cbmFiltrar.Text == "Código")
                {
                    //Define a instrução Sql
                    string sql = "SELECT * FROM tbCliente WHERE idCliente =" + 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 tbUsuarioDataGridView recebe o DataTable usuario*/
                    tbClienteDataGridView.DataSource = cliente;

                    //Fechar a conexão


                }
                if (cbmFiltrar.Text == "Nome")
                {
                    //define a instrução SQL
                    string sql = "SELECT * FROM tbCliente WHERE nome 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;

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                cn.Close();
            }

Volte para o Design(F7) clique uma vez no comboBox Filtrar entre no event e clique duas vezes na propriedade SelectedIndexChanged e insira o código a seguir:
            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 = "";
            }









Arraste o Componente Timer para o formulário e nas propriedades mude o seguinte:
Enable para True
Interval para 32

No event,Clique Duas vezes no Tick e insira o código abaixo:
            try
            {
                //define a instrução SQL
                string sql = "SELECT * FROM tbOrdemServico WHERE idCliente ='" + idClienteTextBox.Text + "'";
                cmd = new SqlCommand(sql, cn);
                cn.Open();
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable os = new DataTable();
                da.Fill(os);
                tbOrdemServicoDataGridView.DataSource = os;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                cn.Close();
            }

Clique Duas vezes no botão Adicionar Registro e insira o código abaixo:
                //Desabilita o botão excluir para quem tiver nivel de acesso Operador
                if (frmLogin.NivelAcesso == "Operador")
                {
                    bindingNavigatorDeleteItem.Enabled = false;
                }



Clique duas vezes no botão Salvar e insira o código abaixo:
    try
            {
                //Desabilita o botão excluir para quem tiver nivel de acesso Operador
                if (frmLogin.NivelAcesso == "Operador")
                {
                    bindingNavigatorDeleteItem.Enabled = false;
                }

                if ((nomeTextBox.Text != "") && (cpfMaskedTextBox.Text != ""))
                {
                    //Insere a Data
                    if (dataDiaTextBox.Text == "")
                    {
                        dataDiaTextBox.Text = DateTime.Now.ToString();
                    }
                    //Mostrar o usuário que cadastrou
                    if (cadastradoPorTextBox.Text == "")
                    {
                        cadastradoPorTextBox.Text = frmLogin.usuarioConectado;
                    }

                        this.Validate();
                        this.tbClienteBindingSource.EndEdit();
                        this.tbClienteTableAdapter.Update(this.servicoDataSet.tbCliente);
                    
                    else
                    {
                        MessageBox.Show("CPF incorreto",
                            "Aviso",
                                MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("O Campo 'Nome' e 'CPF não podem ficar vazio",
                            "Aviso",
                                MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Não foi possível salvar pelo seguinte motivo: " + ex.Message);
            }

Adicione este método para limpar o formulário:
private void LimparCampo()
        {
            idClienteTextBox.Clear();
            nomeTextBox.Clear();
            cpfMaskedTextBox.Clear();
            telefoneMaskedTextBox.Clear();
            enderecoTextBox.Clear();
            bairroTextBox.Clear();
            cidadeTextBox.Clear();
            estadoComboBox.SelectedIndex = -1;
            dataDiaTextBox.Clear();
            cadastradoPorTextBox.Clear();
        }

Clique uma vez no DataGrid do Cliente > Events> MouseDoubleClick  e adicione o código a seguir: Para preenche um formulário através do DataGrid
            LimparCampo();
            idClienteTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[0].Value.ToString();
            nomeTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[1].Value.ToString();
            cpfMaskedTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[2].Value.ToString();
            telefoneMaskedTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[3].Value.ToString();
            enderecoTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[4].Value.ToString();
            bairroTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[5].Value.ToString();
            cidadeTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[6].Value.ToString();
            estadoComboBox.Text = tbClienteDataGridView.CurrentRow.Cells[7].Value.ToString();
            dataDiaTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[8].Value.ToString();
            cadastradoPorTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[9].Value.ToString();
              
               

Pronto a Tela de Cliente esta pronta.
No Próximo Tutorial estaremos desenvolvendo a Tela de Ordem de Serviço




5 comentários:

  1. Amigo Quando Vc vai postar o resto?

    ResponderExcluir
  2. Já foram postado os Tutoriais.
    By: Natanael

    ResponderExcluir
    Respostas
    1. a conexão não foi fechada.O estado atual da conexão e aberta.na tela do cliente, mas o código do formulário está igual do PDF.

      Excluir
  3. amigo

    está td certo bonitinho, porem nao reconhece o formulario no frmTelaPrincipal:
    onde estou errando?
    rivate void usuárioToolStripMenuItem_Click(object sender, EventArgs e)
    {
    try
    {
    formulario.frmUsuario usuario = null; // form a ser aberto

    //procura form na relação de forms filhos
    foreach (Form frm in this.MdiChildren)
    {
    //se encontrou inicializa instancia de frmUsuario com o form ja aberto
    if (frm is formulario.frmUsuario)

    ResponderExcluir
  4. ola nataniel
    muito bom o projeto.
    me tira uma duvida.
    no caso do filtro é possivel alterar uma coisinha?
    hj tem 1 combobox para filtrar.
    queria fazer o seguinte:
    aciono o primeiro combobox como cidade e coloco determinada cidade no pesquisar e executo preenchendo o datagridview.
    estes dados que apareceram é possivel filtrar novamente atraves do outro combobox e txtPesquisar?
    a ideia seria filtrar a cidade e depois os clientes q comecem com nome pedro, por exemplo.
    agradeço se puderes me ajudar.

    ResponderExcluir