terça-feira, 24 de maio de 2011

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


Bom dia Pessoal! Como vocês estão?
Tela de Usuário


Clique no formulário frmUsuario e modifique as propriedades a seguir:
Propriedades
Valores
Icon
Selecione o Ícone
Size
565; 492
StartPostion
CenterScreen
Text
Cadastro de Usuário

Insira uma GroupBox e mude as propriedades a seguir:
Propriedades
Valores
Location
12; 45
Size
533; 150
Text
Cadastrar Usuário

Em Data Sources > tbUsuario > Mude o tipo de campo de DataGrid para Details como na imagem:














Arraste o campo para dentro da GroupBox como na imagem:




















Renomei as Labels e coloque no canto esquerdo como na imagem:



















Renomeie o Text da Barra de Funcionalidade do formulário




Seguindo a ordem da esquerda para a direita:
Move first
para
Mover para o Primeiro
Move previous
Para
Mover para o Anterior
Current position
Para
Posição Atual
of {0}
Para
De {0} e ToolTip para  Total de Registro
Move next
Para
Mover para o Próximo
Move last
Para
Mover para o Último
Add new
Para
Adicionar Registro
Delete
Para
Excluir Registro
Save Data
para
Salvar Registro


Insira os componentes na GroupBox a seguir:
Label
Text = Filtrar Por
ComboBox
Edit Items: Código, usuário e name = cbmFiltrar
Label
Text = “=”
TextBox
Name = txtPesquisar
Botão
Name = btnPesquisar , Text = Pesquisar

Como na imagem:



















Adicione uma groupBox mude a propriedade Text para Usuário(s) e arraste da paleta Data Source a DataGridView da tabela tbUsuario. Como na imagem:




















Clique na DataGridView na seta e clique em Dock in parent container. Como na imagem:

Com isso a DataGridView ocupara o espaço inteiro da GroupBox.


Desabilite a Enable Adding, Enable Editing e Enable Deleting. Clique em Edit Column. Coloque os campos a seguir como Visible = false;
Senha e repita a senha.
Como na imagem:
























Nesta etapa modifique o HeaderText para mudar o Texto de exibição e Width para mudar a largura de cada coluna.

Clique duas vezes no botão Pesquisar e insira o código:
            try
            {
                if (cbmFiltrar.Text == "Código")
                {
                    //Define a instrução Sql
                    string sql = "SELECT * FROM tbUsuario WHERE idUsuario =" + 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 usuario = new DataTable();

                    /* Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de
                     * dados usando o DataTable.*/
                    da.Fill(usuario);

                    /*A tbUsuarioDataGridView recebe o DataTable usuario*/
                    tbUsuarioDataGridView.DataSource = usuario;

                    //Fechar a conexão
                  

                }
                if (cbmFiltrar.Text == "Usuário")
                {                                   
                    //define a instrução SQL
                    string sql = "SELECT * FROM tbUsuario WHERE usuario LIKE '%" + txtPesquisar.Text + "%'";
                    cmd = new SqlCommand(sql, cn);
                    cn.Open();
                    cmd.CommandType = CommandType.Text;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable usuario = new DataTable();
                    da.Fill(usuario);
                    tbUsuarioDataGridView.DataSource = usuario;
                   
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                cn.Close();
            }

Feito isso o layout do formulário deve ficar assim:


























Mude a propriedade da TextBox Senha e Repita a Senha para:
Campo
Propriedade
Para
Valor
Senha
PasswordChar
Para
Repita a Senha
PasswordChar
Para





Insira no ComboBox Nível de Acesso os componentes a Seguir(Edit Items):
Administrador e Operador. Lembrando que a primeira linha é vazia e cada palavra em uma linha.
Mude a propriedade DropDownStyle para DropDownList;

Desabilite o campo Código, Data  do Cadastro e Cadastrado por, pela propriedade Enable = false;
  
Clique duas vezes no botão Salvar.
Observe que ele esta preenchido, então iremos trabalhar com ele as regras de negocio. 







Quais?
Os campos que são obrigatório
Nível de Acesso e as mensagem de cadastro com sucesso, não foi possível o cadastro.

Copie o Código a Seguir:
            try
            {
                //Se os campos estiver preenchido faça
                if ((usuarioTextBox.Text != "") && (nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != "") && (repitaSenhaTextBox.Text != ""))
                {
                    //Se as senhas forem igual faça
                    if (senhaTextBox.Text == repitaSenhaTextBox.Text)
                    {
                        //Mostrar a Data do Cadastro na Hora
                        if (dataDiaTextBox.Text == "")
                        {
                            dataDiaTextBox.Text = DateTime.Now.ToString();
                        }
                        //Mostrar quem Cadastrou o usuario
                        if (cadastradorPorTextBox.Text == "")
                        {
                            cadastradorPorTextBox.Text = frmLogin.usuarioConectado;
                        }
                        //Executar a aplicação
                        this.Validate();
                        this.tbUsuarioBindingSource.EndEdit();
                        MessageBox.show("Cadastrado realizado com sucesso") this.tbUsuarioTableAdapter.Update(this.servicoDataSet.tbUsuario);
                    }
                    else
                    {
                        //Caso as senhas são diferentes
                        MessageBox.Show("As senhas estão diferentes");
                    }
                }
                else
                {
                    //Ser os campos não estiverem preenchido
                    MessageBox.Show("Todos os campos não podem ficar vazio");
                }
            }
            catch (Exception ex)
            {
                //Caso haja uma exceção será tratada neste código
                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()
        {
            idUsuarioTextBox.Clear();
            usuarioTextBox.Clear();
            senhaTextBox.Clear();
            repitaSenhaTextBox.Clear();
            nivelAcessoComboBox.SelectedIndex = -1;
            dataDiaTextBox.Clear();
            cadastradorPorTextBox.Clear();
        }

Clique uma vez no DataGrid Usuario em Events > MouseDoubleClick
LimparCampo();
                idUsuarioTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[0].Value.ToString();
                usuarioTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[1].Value.ToString();
                senhaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[2].Value.ToString();
                repitaSenhaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[3].Value.ToString();
                nivelAcessoComboBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[4].Value.ToString();
                dataDiaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[5].Value.ToString();
                cadastradorPorTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[6].Value.ToString();

No Próximo Post estaremos desenvolvendo a Tela de Serviço
By: Natanael

7 comentários:

  1. Porque no código fica dando error na parte cmd = new SqlCommand(sql, cn); da certo mas o cn já da error o que é para eu fazer.

    ResponderExcluir
  2. É Necessário declarar as variáveis a seguir, para que o programa possar ser conectar com o banco de dados.
    vamos declarar a variável
    SqlConnection = Responsável pela conexão com o banco de dados
    SqlCommand = Responsável pela código em sql.

    Declare no inicio do formulário assim:

    SqlConnection cn = new SqlConnection(Properties.Settings.Default.ServicoConnectionString);
    //ServicoConnection nome que se deu a String de Conexão)


    SqlCommand cmd = null;

    ResponderExcluir
  3. Esta tudo correto mas faço um cadastro no banco de dados e o login da certo mas se eu fechar o programa e abrir novamente ele exclui os cadastros o que eu faço agora.

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

    ResponderExcluir
  5. Boa tarde Natanael, parabéns pelo tutorial. Sou inciante na linguagem C# e estou precisando entregar pro cliente um programa de ordem de serviço, já fiz todos os seus passos, mas no form do usuário está dando erro no: CMD e no CN, já fiz o passo logo acima, mas mesmo assim continua dando erro. Por favor pode me ajudar ou me adicionar no seu msn, para conversarmos te mandei um convite. thiagorodrigues320@hotmail.com ou thiago.cnpq@gmail.com. Vlw parabéns mais uma vez ótimo tutorial.

    ResponderExcluir
  6. Muito bom!

    Mesmo um iniciante é capaz de aprender com seus tutoriais, digito tudo sem copiar e leio e releio os codigos, aprendi a identificar cada função e como achar um erro, estou seguindo até aqui sem problemas! parabéns mesmo pelo programa, muito bem construido!

    Att. Paulo Orsuli

    ResponderExcluir
    Respostas
    1. Muito obrigado Paulo!

      Precisando de algum help tô na área.

      Excluir