domingo, 22 de maio de 2011

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


Bom Dia Pessoal!
Estaremos desenvolvendo agora a Tela de Login e vai arrebentar.

Tela de Login

Clique no formulário frmLogin.cs e mude as propriedades a seguir:

Propriedade
Valores
Name
frmLogin
FormBorderStyle
FixedSingle
Icon
Selecione o icone
MaximizeBox
False
MinimizeBox
False
Size
458; 229
StartPosition
CenterScreen
Text
Tela de Login


Clique na Paleta ToolBox > Common Controls > PictureBox e mude as propriedades a seguir:

Propriedade
Valores
Name
bannerTelaLogin
Image
Selecione a imagem
Location
0;0
Size
458; 87


Devera ficar assim o bannerTelaLogin:

















Clique na paleta ToolBox > Containers> GroupBox e mude as propriedades:
Propriedade
Valor
Location
37; 93
Size
377; 160
Text
Insira o Login:


Devera ficar assim:
















Na Paleta Data Sources(SHIFT + Alt + D) clique no sinal +:

Observe que os campos estão com o tipo TextBox, precisamos mudar os campos usuário e nivelAcesso para ComboBox da seguinte forma:

Selecione o campo usuário clique na seta para baixo e selecione ComboBox, faça isso com o campo nivelAcesso:















Observe que mudou as imagens dos campos:














Arraste os campos (usuário, nivelAcesso e senha) para a GroupBox e adicione dois botões embaixo deles:













Observe que ele inseriu automaticamente uma barra e os componentes dela, remova todos.

Mude os names dos botões para  btnConectar e btnSair com os textos Conectar e Sair:

A ComboBox usuário (usuarioComboBox) fica responsável por mostrar todos os usuários cadastrados no sistema para fazer isso segue o passo a passo:

Clique apenas uma vez no campo > Clique na seta superior a direita que ira aparecer > Marque a opção “Use data bound items” como na imagem:
Em Data Source > Selecione a tabela tbUsuario. Como na imagem:


















No Display Member > Selecione o que será visto pelo Usuário que é a coluna usuário. Como na imagem:















No Value Display > Selecione a coluna que equivale ao Display Member. Como na imagem:
















Modifique as propriedades a seguir:
Propriedades
Valores
AutoCompleteSOurce
ListItems
DropDownStyle
DropDownList
Size
121; 21


Na ComboBox Nível de Acesso clique uma vez > Clique na seta > Edit Items >
Deixe a primeira Linha vazia e digite Administrador e Operador em cada linha. Como na imagem:





















Modifique as propriedades da ComBoBox nivelAcesso a seguir:

Propriedades
Valores
AutoCompleteSOurce
ListItems
DropDownStyle
DropDownList
Size
121; 21


Na TextBox Senha modifique as propriedades a seguir:
Propriedades
Valores
PasswordChar


Clique duas vezes no botão Sair e digite o código a seguir:
Application.Exit()  //Para Fechar Toda a Aplicação






No topo da pagina digite o namespace a seguir:
using System.Data.SqlClient; //Classe Responsável pela Conexão com o SQL Server

Declare duas variáveis depois do public partial class frmLogin : Form
    {

              //Responsavel pelo Nivel de Acesso
        public static string NivelAcesso;

        //Responsavel por mostrar quem esta conectado no sistema
        public static string usuarioConectado;



Como na imagem:















Volte para o Desing(F7), clique duas vezes no botão Conectar e digite o código:
try
  {
                //Verificar ser os campos estão preenchidos
                if ((usuarioComboBox.Text != "") && (nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != ""))
                {
                    //Responsavel pelo Comando Sql
                SqlCommand comm = new SqlCommand("Select * From tbUsuario Where usuario = @usuario and " +
                    "senha = @senha and nivelAcesso=@nivel", conn);

                //Parametizar os codigos
                comm.Parameters.Add("@usuario", SqlDbType.VarChar).Value = usuarioComboBox.Text;
                comm.Parameters.Add("@senha", SqlDbType.VarChar).Value = senhaTextBox.Text;
                comm.Parameters.Add("@nivel", SqlDbType.VarChar).Value = nivelAcessoComboBox.Text;

                //Abre a conexão
                conn.Open();

                SqlDataReader reader = null;
                //lê as linhas de uma base de dados SQL Server
                reader = comm.ExecuteReader();

                //Se tiver coisa pra lê faça:
                if (reader.Read())
                {
                    //Variaveil usuarioConectado recebe campo usuarioComboBox.Text
                    usuarioConectado = usuarioComboBox.Text;

                    //Variavei nivelAcesso recebe o campo nivelAcessoComboBox.Text
                    NivelAcesso = nivelAcessoComboBox.Text;

                    //Declara a variavel que recebe o formulario frmTelaPrinciapal
                    frmTelaPrincipal p = new frmTelaPrincipal();
                    //Esconde o formulario Tela de Login
                    this.Hide();
                    //Mostrar o formulario frmTelaPrinciapl
                    p.Show();

                }
                else
                {
                  MessageBox.Show("Usuário e/ou senha incorretas",
                  "Aviso de Segurança",
                  MessageBoxButtons.OK,
                  MessageBoxIcon.Information);

                }
                }
                else
                {
                     MessageBox.Show("Todos os Campos são obrigatórios",
                    "Aviso de Segurança",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
                }
              
            }
            catch (Exception ex)
            {
                //Gerar a exceção
                MessageBox.Show(ex.Message);
            }
            finally
            {
                //Finalizar tarefa
                conn.Close();
            }


Insira no evento Load do Fomulario frmLogin o código a seguir:
//Limpar a ComboBox
            usuarioComboBox.SelectedIndex = -1;


Entre no event (Ícone do Raio) do Formulario Tela de Login e clique na propriedade FormClosed e adicione o código a seguir:
Application.Exit();



No Próximo Post estaremos desenvolvendo a Tela de Splash.


By: Natanael

45 comentários:

  1. conn.Open(); e conn.Close(); está dando erro no visual studio 2010

    ResponderExcluir
  2. Boa Tarde,
    quando eu inicialiso o programa, o campo usuarioComboBox não aparece o Usuario Cadastrados, já fiz o procedimento que foi descrito acima.?

    ResponderExcluir
  3. Tem algum usuário cadastrado no sistema?
    By Natanael.

    ResponderExcluir
  4. sim eu entrei no banco de dados e add manualmente.

    ResponderExcluir
  5. vc falou para para a combobox user para ela recebe os nomes no banco de dados?
    By Natanael.

    ResponderExcluir
  6. tenho quase certesa que não.
    mais como faço?
    por gentileza.

    ResponderExcluir
  7. Hey natan ótimo tutorial... mas velho só uma duvida: na parte do login, quando eu escolho o usuario e digito a senha ta funfando beleza. Porém para se logar eu tenho que clicar no botão. Como eu faria para ao digitar a senha e apertar enter ele já entrar direto? abraço!

    ResponderExcluir
  8. No evento(icone do raio) da textbox(senha) clique na proprieade KeyDown e insira o código a seguir>

    if(e.KeyCode == Keys.Enter)
    {
    //Nesta parte insira o evento do botao
    exemplo

    btnconectar.Click(sender,e);

    }


    By: Natanael

    ResponderExcluir
  9. hmm rapaz eu fiz desta forma:

    No evento "click" do textBox senha eu adicionei:

    this.AcceptButton = nomeDoBotao;

    Funfou legal. Fica a dica pro pessoal.

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

    ResponderExcluir
  11. Ei Natanael estou fazendo este formulario de Ordem de Serviço.

    Mas da um error assim:

    conn.Open(); e conn.Close(); está dando erro no visual studio 2010

    Eu sei que tenho que delarar o SqlConnection mas como é esse codigo.

    Me ajude.

    ResponderExcluir
  12. Não precisa mais eu já aprendi.

    ResponderExcluir
  13. Bom dia natanael

    Estou com problemas ao inserir o código

    frmTelaPrincipal p = new frmTelaPrincipal();

    Eu criei o frmTelaPrincipal com este nome dentro da pasta formularios, mais quando começo a digitar o comando pra chamada do formulario ele não aparece na lista.

    Por favor de uma força ai.

    ResponderExcluir
  14. frmTelaPrincipal p = new formularios.frmTelaPrincipal();

    ve se isso resolve

    ResponderExcluir
  15. Assim

    formularios.frmTelaPrincipal p = new formularios.frmTelaPrincipal();

    ResponderExcluir
  16. Bom dia Natanael,

    como faço para delarar o SqlConnection?

    grata

    ResponderExcluir
  17. Primeiro declara o namespace
    using System.Data.SqlClient

    depois como ser fosse uma variavel

    SqlConnection nomeConexao = new SqlConnection(String de Conexao);

    exemplo

    SqlConnection cnn = new SqlConnection(Properties.Settings.DBConexao);

    Espero ter ajudador

    ResponderExcluir
  18. Respostas
    1. Boa tarde consegue me passar o codigo fonte do programa ou o programa em si?

      Excluir
  19. Boa tarde, cara muito legal sua iniciativa, sou iniciante, fiz todo o tutorial, o sistema executa a tela de login mas não aparece os usuários que estão cadastros (add manualmente sql) no combo box, se tiver alguma idéia, me informa ae, vlw. Reuben.

    ResponderExcluir
  20. Boa Reuben, Seja bem vindo ao blog ns tutoriais. Os dados que voce cadastrou não apareceu pq vc esta no ambiente de desenvolvimento ou seja, esta desenvolvendo, para vc ir ao ambiente de produção, ou seja, o ambiente real, clique no executavel do sistema que vc criou, geralmente ficar na pasta debug/nomeSistema.exe

    ResponderExcluir
  21. Boa tarde,
    estou fazendo o tutorial com a unica diferença é que estou usando Oralce 11g. Acontece que quando coloco o login e senha aparece o erro: ORA-000936: expressão não encontrada.
    Abaixo segue trechos do código de conexão e comando SQL...

    // String de conexão
    OracleConnection conn = new OracleConnection (Properties.Settings.Default.ConnectionStringOrdemServico);

    // responsavel pelo comando SQL
    OracleCommand comm = new OracleCommand("select * from tbusuario where usuario = :usuario and,"+" senha = :senha and"+" nivelAcesso = :nivel", conn);

    // parametrizar os codigos
    comm.Parameters.Add("usuario", OracleType.VarChar).Value = uSUARIOComboBox.Text;
    comm.Parameters.Add("senha", OracleType.VarChar).Value = sENHATextBox.Text;
    comm.Parameters.Add("nivel", OracleType.VarChar).Value = nIVELACESSOComboBox.Text;

    this.tBUSUARIOTableAdapter.Fill(this.dataSetOrdemServico.TBUSUARIO);

    poderia me ajudar a entender o que está ocorrendo?

    ResponderExcluir
  22. Bom dia Natanael !

    Não consigo achar este caminho descrito abaico

    Entre no event (Ícone do Raio) do Formulario Tela de Login e clique na propriedade FormClosed e adicione o código a seguir:

    Application.Exit();

    ResponderExcluir
  23. Clique no form principal, no lado inferior clique no evento(uma imagem de raio) clique duas vezes na propriedade FormClosed e insira o codigo a seguir:

    Application.Exit();

    ResponderExcluir
    Respostas
    1. Da erro ao inserir esse comando!

      Excluir
  24. Natanael, declarei o SqlConnection mas o conn e o tableAdapterManager
    estão dando erro

    ResponderExcluir
  25. Boa tarde Natael, gostaria de agradecer pela força no desenvolvimento deste tutorial, estou acompanhando so que não tenho imagens e icones na minha maquina para adicionar a aplicação, você poderia me indicar um site, onde posso baixa-las?

    ResponderExcluir
  26. Muito obrigado Cesar! olha eu geralmente pesquiso no google imagens. Faço da seguinte forma quero uma imagem que representa um cliente então pesquiso cliente.png e logo embaixo no lado esquerdo dimensiono em 16x16, dependo do que eu quero. A segunda coisa que faço e baixar em pacote de formato png, nesse site tem vários pacotes: http://www.iconspedia.com/

    Espero ter ajudado.
    Boa Noite Cesar!

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

    ResponderExcluir
  28. Para resolver o problema do conn

    insira

    SqlConnection conn = new SqlConnection(Properties.Settings.Default.ServicoConnectionString);

    ResponderExcluir
  29. E ai natanael

    estou com um problema, qdo executo a aplicação, aparece um erro no seguiinte trecho
    private void frmLogin_Load(object sender, EventArgs e)
    {

    //Limpar a ComboBox
    usuarioComboBox.SelectedIndex = -1;

    // TODO: This line of code loads data into the 'servicosDataSet.tbUsuario' table. You can move, or remove it, as needed.
    this.tbUsuarioTableAdapter.Fill(this.servicosDataSet.tbUsuario);
    }

    mais precisamente na linha this.tbUsuarioTableAdapter.Fill(this.servicosDataSet.tbUsuario);

    meu banco chama servicos e o DataSet ServicosDataSet
    como resolvo este problema

    Att,

    ResponderExcluir
  30. Natanael, descartei este projeto, troquei o banco de dados, e estou modificando nos formularios, ai vou ver se continua dando erro nesta linha.

    o erro falava que nao poderia ter um valor nulo no banco de dados.

    Desde ja Grato pela atenção.

    ResponderExcluir
  31. Boa tarde Natanael!
    Sou iniciante em SQL e C# porem estou com uma certa dificuldade na conexão, o que esta ocorrendo com o a tela de login é que ela não esta entrando no IF do READER que chama o Formulario principal, alem disso quando dou START na Aplicação na tela de login os campos ComboBox ja vem preenchido com o nome do usuario, nivel de serviço e senha e não dá a opção de escolher os outros usuarios cadastrados com login e senha, como posso solucionar esse problema?

    ResponderExcluir
  32. estou enroscado na tela de login, fiz tudo certinho como mostra o tutorial, e tambem adicionei um usuario manualmente no sql server 2008 porem quando eu debugo o app não me trás nenhum usuario na combobox usuario, o que mais devo fazer ?

    ResponderExcluir
  33. Krystian Ludwing, também estou com esse mesmo problema, alguem sabe como resolver? :(

    ResponderExcluir
  34. Boa tarde Natanael!
    Sou iniciante em programação e gostei muito do seu trabalho !!
    Nesse sistema de controle de usuário fico muito legal
    e gostaria de sua ajuda se for possível, gostaria de fazer o login com o email do usuário e na tela de principal mostrar o nome do usuário, porem estou com essa dificuldade para fazer, poderia me ajudar!?
    Gostaria de fazer também para mostar qual foi a ultimo login feito pelo usuário.

    Desde ja agradeço.
    meu email é claudio.petez@terra.com.br

    ResponderExcluir
  35. Boa Noite, Natanael!

    Estou com um erro nesse código da tela de login:
    private void tbUsuarioBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
    this.Validate();
    this.tbUsuarioBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.servicoDataSet); (está linha está com erro.)

    }

    Apresenta a seguinte mensagem: Erro 1 'SISistema.frmLogin' não contém uma definição para 'tableAdapterManager' e nenhum método de extensão 'tableAdapterManager' aceita que um primeiro argumento de tipo 'SISistema.frmLogin' seja encontrado (você não está usando uma diretriz ou referência de assembly?)

    Se eu comentar a linha o sistema é executado normalmente,
    Eu gostaria de saber como solucionar esse erro.

    Desde já agradeço!

    ResponderExcluir
  36. Bom dia,

    Estou tendo problemas com o ComboBox do Usuário, fiz insert no BD manualmente, dei as devidas permissões de acesso, porem ele não está listando nem na plataforma de desenvolvedor e nem na plataforma de produção (.exe).

    Pode dar uma ajuda ?

    No aguardo,

    Obrigado.

    ResponderExcluir
  37. to fazendo esse tutorial só que fica dando erro na parte this.tableAdapterManager.UpdateAll(this.servicoDataSet);

    logo no inicio do form login e não sei como corrigi-lo gostaria de sua ajuda.

    ResponderExcluir
  38. Olá,

    Parabéns pelo tutorial e pelo blog Natanael, realmente com bom conteúdo,
    estou com o mesmo problema comentado pelo amigo acima"this.tableAdapterManager.UpdateAll(this.servicoDataSet);", nesta linha é apresentado um erro de conexão, poderia me ajudar?

    ResponderExcluir
  39. Boa tarde o sistema parecer ser bom mas seguimos o seu tutorial e encontramos muitos erros e estranho que copiamos e colamos de acordo com que você auxilia, e quando perguntamos sobre o erro as vezes não nos respondem seria ideal fazer tutorial em (videos) de cada passo do que em pdf amigo...Abraços

    ResponderExcluir