Ns Tutorial So

Embed Size (px)

Citation preview

  • NS TUTORIAIS

    Desenvolvendo Sistema de Ordem de Servio em C# utilizando o Banco de

    Dados SQL Server Tutorial

    Natanael Santos

    9/2/2011

    Sistema desenvolvido para o Tutorial Desenvolvendo um Sistema de Ordem de Servio com Tela de Login, Tela de Splash, Cadastro de Cliente, Cadastro de Servio, Controle de Acesso, Ordem de Servio e Relatrios.

  • Sumrio Introduo ......................................................................................................................... 2

    1.Criao do Banco de Dados........................................................................................... 3

    2. Criando o Projeto .......................................................................................................... 5

    3. Conexo com o Banco .................................................................................................. 6

    4. Tela de Login .............................................................................................................. 13

    5. Tela de Splash ............................................................................................................ 21

    6. Tela de Usurio .......................................................................................................... 24

    7. Tela de Servio .......................................................................................................... 32

    8. Tela de Cliente ........................................................................................................... 40

    9. Tela Ordem de Servio ............................................................................................... 48

    10. Tela Principal ............................................................................................................ 53

    11. Relatrio Cliente ....................................................................................................... 62

    12. Relatrio Servio ...................................................................................................... 67

    13. Relatrio Ordem de Servio ..................................................................................... 67

  • nstutoriais.blogspot.com Pgina 2

    Introduo

    O Sistema de Ordem de Servio foi desenvolvido pelo blog

    nstutoriais.blogspot.com para aprendizagem. O Sistema conta com uma Tela de Splash,

    Tela de Login, Tela Principal, Cadastro de Usurio, Cadastro de Cliente, Cadastro de

    Servio, Ordem de Servio, Relatrio de Cliente,Servio e Ordem de Servio.

    O Sistema esta dividido em doze partes que seguem uma lgica.

    1 Parte: Criao do Banco de Dados usando o SQL Server: Neste 1 Parte

    desenvolvido o banco de dados contendo trs tabelas.

    2 Parte: Criando o Projeto: Utilizando o Visual Studio para desenvolver o

    Sistema.

    3 Parte: Conexo com o Banco de Dados: Nesta parte e feita conexo com o

    banco de dados para o Sistema.

    4 Parte: Tela de Login: Responsvel por fazer o controle de usurio no

    formulrio

    5 Parte: Tela de Splash: Responsvel por carregar o sistema

    6 Parte: Tela de Usurio: Responsvel por inserir, excluir e atualizar os

    usurios do sistema.

    7 Parte: Tela de Servio: Responsvel pelo Cadastro de Servio.

    8 Parte: Tela de Cliente: Responsvel pelo Cadastro de Cliente.

    9 Parte: Tela Ordem de Servio: Responsvel por Emitir a Ordem de Servio.

    10 Parte: Tela de Principal: Responsvel por fazer a juno dos formulrios.

    11 Parte: Relatrio Cliente: Responsvel por mostrar todos os Clientes

    cadastrados no sistema

    12 Parte: Relatrio Servio: Responsvel por mostrar todos os Servios

    cadastrados no sistema

    13 Parte: Relatrio Ordem de Servio: Responsvel por mostrar todas as

    Ordens de Servio cadastradas no sistema

  • nstutoriais.blogspot.com Pgina 3

    1.Criao do Banco de Dados

    Entre no SQL Server e clique em New Query e adicione o cdigo a Seguir:

    /*Cria o banco de dados*/

    create database Servico

    /*Limpe a Query ou Instruo */

    /*Coloca em uso o banco de dados Servico*/

    use Servico

    /*Cria a tabela tbCliente*/

    create table tbCliente

    (

    idCliente int primary key not null,

    nome varchar(80) not null,

    cpf char(14) not null,

    telefone char(13),

    endereco varchar(max),

    bairro varchar(100),

    cidade varchar(100),

    estado varchar(100),

    dataDia varchar(50),

    cadastradoPor varchar(50)

    )

  • nstutoriais.blogspot.com Pgina 4

    /*Cria a tabela tbServico*/

    create table tbServico

    (

    idServico int primary key not null,

    nome varchar(80) not null,

    descricao varchar(max),

    observacao varchar(max),

    valor decimal(10,2),

    dataDia varchar(50),

    cadastradoPor varchar(50)

    )

    /*Cria a tabela tbOrdemServico*/

    create table tbOrdemServico

    (

    idOrdem int primary key not null,

    idCliente int not null,

    idServico int not null,

    dataDia varchar(50),

    cadastradorPor varchar(50),

    /*Chave estrangeira idCliente*/

    CONSTRAINT FK_tbOrdemServico_tbCliente_idCliente FOREIGN

    KEY(idCliente) REFERENCES tbCliente(idCliente),

    /*Chave estrangeira idServico*/

    CONSTRAINT FK_tbOrdemServico_tbServico_idServico FOREIGN

    KEY(idServico) REFERENCES tbServico(idServico)

    )

    /*Cria a tabela tbUsuario*/

    create table tbUsuario(

    idUsuario int primary key not null,

    usuario varchar(50) not null,

    senha varchar(50) not null,

    repitaSenha varchar(50) not null,

    nivelAcesso varchar(50) not null,

    dataDia varchar(50),

    cadastradorPor varchar(50)

    )

  • nstutoriais.blogspot.com Pgina 5

    2. Criando o Projeto Crie o novo Projeto:

    Selecione o Visual C#> Windows > Windows Applications:

    D o nome de SISistema:

  • nstutoriais.blogspot.com Pgina 6

    3. Conexo com o Banco

    Selecione no menu Data > Add New Data Sources:

    Selecione Database:

  • nstutoriais.blogspot.com Pgina 7

    Selecione o boto Next:

    Clique no boto New Connection:

    Selecione Microsoft SQL Server Database File e depois Continue:

  • nstutoriais.blogspot.com Pgina 8

    Clique no boto Browse e Selecione o Banco de Dados e clique em Test Connection

    depois clique OK para sair da caixa de Dilogo e OK do Formulrio Add Connection

    para ir ao prximo formulrio:

    Ateno (Geralmente o endereo da pasta dos bancos de dados desenvolvido no SQL

    Server para Window XP :

    C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\)

    Clique em Next novamente e ir aparecer a caixa de Dialogo clique em Sim: Para

    guardar o banco de dados no projeto.

  • nstutoriais.blogspot.com Pgina 9

    Marque a Tables para selecionar todas as tabelas e clique em Finish.

    A princpio no aconteceu nada. Clique no menu Data > Show Data Sources para

    aparecer as tabelas do Banco de Dados.

    Como na imagem:

  • nstutoriais.blogspot.com Pgina 10

    Precisamos colocar os campos cdigo de cada tabela como auto incremento. Na Paleta Data Sources > pelo cone Edit DataSet with Designer.

    Clique na tabela tbOrdemServico > idOrdem. Na propriedade mude os campos a seguir:

    Propriedades Valores

    AutoIncrement True

    AutoIncrementSeed 1

    Clique na tabela tbServico > idServico. Na propriedade mude os campos a seguir:

    Propriedades Valores

    AutoIncrement True

    AutoIncrementSeed 1

    Clique na tabela tbCliente > idCliente. Na propriedade mude os campos a seguir:

    Propriedades Valores

    AutoIncrement True

    AutoIncrementSeed 1

    Clique na tabela tbUsuario > idUsuario. Na propriedade mude os campos a seguir:

    Propriedades Valores

    AutoIncrement True

    AutoIncrementSeed 1

    Salve e volte para o form1.cs;

    Renomei o formulrio form1.cs para frmLogin.cs;

  • nstutoriais.blogspot.com Pgina 11

    Neste momento crie os formulrios que iremos usar e depois volte para a Tela de Login;

    Formulrios

    Clique no Solution Explorer > SiServico > boto direito > Add > New Folder > d o

    nome de Formulario:

    Clique no Solution Explorer > Formulrio > boto direito > Add > Windows Form > d

    o nome para cada formulrio da seguinte forma:

  • nstutoriais.blogspot.com Pgina 12

    frmSplash.cs

    frmTelaPrincipal.cs

    frmCliente.cs

    frmServico.cs

    frmOS.cs

    frmUsuario.cs

    frmRelCliente.cs

    frmRelServico.cs

    frmRelOS.cs

    Feito isso a Solution Explorer devera ficar assim:

  • nstutoriais.blogspot.com Pgina 13

    4. Tela de Login

    Clique no formulrio 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:

  • nstutoriais.blogspot.com Pgina 14

    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 esto com o tipo TextBox, precisamos mudar os campos

    usurio e nivelAcesso para ComboBox da seguinte forma:

    Selecione o campo usurio clique na seta para baixo e selecione ComboBox, faa isso

    com o campo nivelAcesso:

  • nstutoriais.blogspot.com Pgina 15

    Observe que mudou as imagens dos campos:

    Arraste os campos (usurio, nivelAcesso e senha) para a GroupBox e adicione dois

    botes embaixo deles:

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

    todos.

    Mude os names dos botes para btnConectar e btnSair com os textos Conectar e Sair:

    A ComboBox usurio (usuarioComboBox) fica responsvel por mostrar todos os

    usurios cadastrados no sistema para fazer isso segue o passo a passo:

  • nstutoriais.blogspot.com Pgina 16

    Clique apenas uma vez no campo > Clique na seta superior a direita que ira aparecer >

    Marque a opo Use data bound items como na imagem:

    Em Data Source > Selecione a tabela tbUsuario. Como na imagem:

  • nstutoriais.blogspot.com Pgina 17

    No Display Member > Selecione o que ser visto pelo Usurio que a coluna usurio.

    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

  • nstutoriais.blogspot.com Pgina 18

    Na ComboBox Nvel 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 boto Sair e digite o cdigo a seguir:

    Close(); //Para sair da aplicao

  • nstutoriais.blogspot.com Pgina 19

    No topo da pagina digite o namespace a seguir:

    using System.Data.SqlClient; //Classe Responsvel pela Conexo com o SQL Server

    Declare duas variveis 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 boto Conectar e digite o cdigo: try

    {

    //Verificar ser os campos esto 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 conexo

    conn.Open();

    SqlDataReader reader = null;

    //l as linhas de uma base de dados SQL Server

    reader = comm.ExecuteReader();

  • nstutoriais.blogspot.com Pgina 20

    //Se tiver coisa pra l faa:

    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("Usurio e/ou senha incorretas",

    "Aviso de Segurana",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    }

    else

    {

    MessageBox.Show("Todos os Campos so

    obrigatrios",

    "Aviso de Segurana",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    }

    catch (Exception ex)

    {

    //Gerar a exceo

    MessageBox.Show(ex.Message);

    }

    finally

    {

    //Finalizar tarefa

    conn.Close();

    }

    Insira no evento Load do Fomulario frmLogin o cdigo a seguir: //Limpar a ComboBox

    usuarioComboBox.SelectedIndex = -1;

    Entre no event do Formulario Tela de Login e clique na propriedade FormClosed e

    adicione o cdigo a seguir: Application.Exit();

  • nstutoriais.blogspot.com Pgina 21

    5. Tela de Splash

    Clique na Tela de Splash e mude as propriedades a seguir:

    Propriedades Valores

    Size 380; 251

    BackgroundImage Selecione a imagem de Fundo

    BackgroundImageLayout None ControlBox False

    FormBorderStyle None Icon Selecione o cone do formulrio

    MaximizeBox False MinimizeBox False

    ShowIcon False

    ShowInTaskbar False StartPostion CenterScreen

    Text Iniciando...

    Adicione uma ProgressBar faa isso Paleta ToolBox > Common Controls > ProgressBar

    Mude as propriedades a seguir:

    Propriedades Valores

    Location 69; 216

    MarqueeAnimationSpeed 1000 Size 251;23

    Style Continuous

    Adicone um Timer faa isso Paleta ToolBox > Components > Timer

    Mude as propriedades a seguir:

    Propriedades Valores

    Enable True

    Interval 32

    Clique no cone Event > Tick e duas vezes no TextBox corresponde a ele:

  • nstutoriais.blogspot.com Pgina 22

    Digite o cdigo a seguir:

    //Incrementa 1

    progressBar1.Increment(1);

    //Ser a progrresBar 1 for igual a 100

    if (progressBar1.Value == 100)

    {

    //Pare

    timer1.Stop();

    }

    Volte para o Design (F7) e clique duas vezes no formulrio insira o cdigo a seguir: //Cdigo responsavel pela opacidade do formulario

    this.Opacity = 0;

    for (double cont = 0; cont

  • nstutoriais.blogspot.com Pgina 23

    Insira a biblioteca a seguir using System.Threading;

    Dentro do Form1() adicione o seguinte: Thread t = new Thread(new ThreadStart(SplashScreen));

    t.Start();

    Thread.Sleep(5000);

    t.Abort();

    Crie o mtodo a seguir depois da chave de fechamento do Form1(): public void SplashScreen()

    {

    //Executar a Tela de Splash

    Application.Run(new frmSplash());

    }

    O Cdigo dever fica assim (Esta em Azul o cdigo):

  • nstutoriais.blogspot.com Pgina 24

    6. Tela de Usurio

    Clique no formulrio frmUsuario e modifique as propriedades a seguir:

    Propriedades Valores

    Icon Selecione o cone

    Size 565; 492

    StartPostion CenterScreen

    Text Cadastro de Usurio

    Insira uma GroupBox e mude as propriedades a seguir:

    Propriedades Valores

    Location 12; 45

    Size 533; 150

    Text Cadastrar Usurio

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

    na imagem:

  • nstutoriais.blogspot.com Pgina 25

    Arraste o campo para dentro da GroupBox como na imagem:

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

  • nstutoriais.blogspot.com Pgina 26

    Renomeie o Text da Barra de Funcionalidade do formulrio

    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 Posio Atual

    of {0} Para De {0} e ToolTip para Total de Registro Move next Para Mover para o Prximo

    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: Cdigo, usurio e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar

    Boto Name = btnPesquisar , Text = Pesquisar

    Como na imagem:

  • nstutoriais.blogspot.com Pgina 27

    Adicione uma groupBox mude a propriedade Text para Usurio(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 espao inteiro da GroupBox.

  • nstutoriais.blogspot.com Pgina 28

    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:

  • nstutoriais.blogspot.com Pgina 29

    Nesta etapa modifique o HeaderText para mudar o Texto de exibio e Width para

    mudar a largura de cada coluna.

    Clique duas vezes no boto Pesquisar e insira o cdigo: try

    {

    if (cbmFiltrar.Text == "Cdigo")

    {

    //Define a instruo 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 conexo

    cn.Open();

    //Define o valor da CommandType para cmd

    cmd.CommandType = CommandType.Text;

    /*Representa um conjunto de comandos de dados e

    uma conexo de banco de dados

    que so usados para preencher o DataSet e

    atualizar um banco de dados SQL Server.*/

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    //Representa uma tabela de dados na memria.

    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 conexo

    }

    if (cbmFiltrar.Text == "Usurio")

    {

    //define a instruo 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);

  • nstutoriais.blogspot.com Pgina 30

    }

    finally

    {

    cn.Close();

    }

    Feito isso o layout do formulrio 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 Nvel 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 Cdigo, Data do Cadastro e Cadastrado por, pela propriedade

    Enable = false;

  • nstutoriais.blogspot.com Pgina 31

    Clique duas vezes no boto Salvar.

    Observe que ele esta preenchido, ento iremos trabalhar com ele as regras de negocio.

    Quais?

    Os campos que so obrigatrio

    Nvel de Acesso e as mensagem de cadastro com sucesso, no foi possvel o cadastro.

    Copie o Cdigo a Seguir: try

    {

    //Se os campos estiver preenchido faa

    if ((usuarioTextBox.Text != "") &&

    (nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != "") &&

    (repitaSenhaTextBox.Text != ""))

    {

    //Se as senhas forem igual faa

    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 aplicao

    this.Validate();

    this.tbUsuarioBindingSource.EndEdit();

    MessageBox.show("Cadastrado realizado com

    sucesso")

    this.tbUsuarioTableAdapter.Update(this.servicoDataSet.tbUsuario);

    }

    else

    {

    //Caso as senhas so diferentes

    MessageBox.Show("As senhas esto diferentes");

    }

    }

    else

    {

    //Ser os campos no estiverem preenchido

    MessageBox.Show("Todos os campos no podem ficar

    vazio");

    }

    }

    catch (Exception ex)

    {

    //Caso haja uma exceo ser tratada neste cdigo

    MessageBox.Show("No foi possvel salvar pelo seguinte

  • nstutoriais.blogspot.com Pgina 32

    motivo: " + ex.Message);

    }

    Adicione este mtodo para limpar o formulrio: 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();

    Termina o Cadastro de Usurio

    7. Tela de Servio

    Mude as propriedades do formulrio a seguir:

    Propriedades Valores

    Icon Selecione o cone da Aplicao

    Size 732; 633 StartPosition CenterScreen

    Text Cadastro de Servio

    Arraste uma GroupBox d o nome de Cadastro de Servio.

    Mude as propriedades a seguir:

    Propriedades Valores

    Archor Top, Left, Right

    Size 600; 633 Text Dados do Servio

    Location 27; 23

  • nstutoriais.blogspot.com Pgina 33

    Arraste as colunas da tabela para dentro da GroupBox e organize da sua forma.

    Selecione um Campo de cada vez:

    Descrio e Observao mudem as propriedades a seguir

    Propriedades Valores

    Location Descrio: 16; 71 | Observao: 16; 155

    MultiLine True ScrollBars Vertical

    Size 523; 65

    Cdigo, Data do Cadastro e Cadastrado Por, desabilite a propriedade Enable.

    O layout ficou assim:

    Arraste uma GroupBox e adicione os campos a seguir:

    Label Text = Filtrar Por

    ComboBox Edit Items: Cdigo, Nome e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar

    Boto Name = btnPesquisar , Text = Pesquisar

  • nstutoriais.blogspot.com Pgina 34

    O Layout ficou assim:

    Adicione uma groupBox(Text = Servio) e arraste da paleta Data Sources a tabela

    tbServico. Faa como a imagem solicitar.

  • nstutoriais.blogspot.com Pgina 35

    Desabilite a Enable Adding, Enable Editing e Enable Deleting. Clique em Edit Columns

    renomei a propriedade HeaderText de cada campo como preferir. Segue uma sugesto:

  • nstutoriais.blogspot.com Pgina 36

    O Layout ficou assim:

    Volte para o cdigo e insira o namespace a seguir: using System.Data.SqlClient;

    Embaixo do trecho de cdigo public frmServico() adicione o cdigo a seguir SqlConnection cn = new

    SqlConnection(Properties.Settings.Default.ServicoConnectionString);

    SqlCommand cmd = null;

  • nstutoriais.blogspot.com Pgina 37

    Como na imagem:

    Volte para o Design(F7), clique duas vezes no boto Pesquisar e insira o cdigo a

    seguir: try

    {

    if (cbmFiltrar.Text == "Cdigo")

    {

    //Define a instruo Sql

    string sql = "SELECT * FROM tbServico WHERE

    idServico =" + txtPesquisar.Text + "";

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

    cmd = new SqlCommand(sql, cn);

    //Abre conexo

    cn.Open();

    //Define o valor da CommandType para cmd

    cmd.CommandType = CommandType.Text;

    /*Representa um conjunto de comandos de dados e

    uma conexo de banco de dados

    que so usados para preencher o DataSet e

    atualizar um banco de dados SQL Server.*/

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    //Representa uma tabela de dados na memria.

    DataTable servico = new DataTable();

    /* Adiciona ou atualiza linhas em um DataTable

    para que correspondam na fonte de

    * dados usando o DataTable.*/

    da.Fill(servico);

    /*A tbUsuarioDataGridView recebe o DataTable

    usuario*/

    tbServicoDataGridView.DataSource = servico;

    }

    if (cbmFiltrar.Text == "Nome")

    {

    //define a instruo SQL

    string sql = "SELECT * FROM tbServico WHERE nome

  • nstutoriais.blogspot.com Pgina 38

    LIKE '%" + txtPesquisar.Text + "%'";

    cmd = new SqlCommand(sql, cn);

    cn.Open();

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataTable servico = new DataTable();

    da.Fill(servico);

    tbServicoDataGridView.DataSource = servico;

    }

    }

    catch (Exception ex)

    {

    MessageBox.Show(ex.Message);

    }

    finally

    {

    cn.Close();

    }

    Clique duas vezes no boto Adicionar Registro e insira o cdigo a seguir: //Desabilita o boto excluir para quem tiver nivel de acesso Operador

    if (frmLogin.NivelAcesso == "")

    {

    bindingNavigatorDeleteItem.Enabled = false;

    }

    Volte para o Design(F7) clique duas vezes no boto salvar e digite o cdigo a seguir: try

    {

    //Desabilita o boto excluir para quem tiver nivel de

    acesso Operador

    if (frmLogin.NivelAcesso == "")

    {

    bindingNavigatorDeleteItem.Enabled = false;

    }

    //Se os campos estiver preenchido faa

    if (nomeTextBox.Text != "")

    {

    //Mostrar a Data do Cadastro na Hora

    if (dataDiaTextBox.Text == "")

    {

    dataDiaTextBox.Text =

    DateTime.Now.ToString();

    }

    //Mostrar quem Cadastrou o usuario

    if (cadastradoPorTextBox.Text == "")

    {

    cadastradoPorTextBox.Text =

    frmLogin.usuarioConectado;

    }

    //Executar a aplicao

    this.Validate();

    this.tbServicoBindingSource.EndEdit();

    this.tbServicoTableAdapter.Update(this.servicoDataSet.tbServico);

    MessageBox.Show("Cadastrado realizado com sucesso");

  • nstutoriais.blogspot.com Pgina 39

    }

    else

    {

    //Ser os campos no estiverem preenchido

    MessageBox.Show("O Campo nome no pode ficar

    vazio");

    }

    }

    catch (Exception ex)

    {

    //Caso haja uma exceo ser tratada neste cdigo

    MessageBox.Show("No foi possvel salvar pelo seguinte

    motivo: " + ex.Message);

    }

    Adicionar o mtodo para limpar o formulrio: private void LimparCampo()

    {

    idServicoTextBox.Clear();

    nomeTextBox.Clear();

    descricaoTextBox.Clear();

    valorTextBox.Clear();

    dataDiaTextBox.Clear();

    cadastradoPorTextBox.Clear();

    }

    Insira o cdigo para preenche um formulrio atravs de uma DataGrid. Clique uma vez

    na DataGrid tbServicoDataGridView em Events > MouseDoubleClick LimparCampo();

    idServicoTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[0].Value.ToString();

    nomeTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[1].Value.ToString();

    descricaoTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[2].Value.ToString();

    observacaoTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[3].Value.ToString();

    valorTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[4].Value.ToString();

    dataDiaTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[5].Value.ToString();

    cadastradoPorTextBox.Text =

    tbServicoDataGridView.CurrentRow.Cells[6].Value.ToString();

    Termina a Tela de Servio:

  • nstutoriais.blogspot.com Pgina 40

    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: Cdigo, Nome e name = cbmFiltrar

    Label Text = = MaskTextBox Name = txtPesquisar

    Boto 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 Cdigo, Data de Cadastro, Cadastrado por pela propriedade Enable;

  • nstutoriais.blogspot.com Pgina 41

    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 Servio(s) Prestados:

  • nstutoriais.blogspot.com Pgina 42

    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:

  • nstutoriais.blogspot.com Pgina 43

    Volte para o Design(F7) e adicione o namespace e duas variveis a seguir.

    Volte para o Design(F7) e clique duas vezes no boto Pesquisar. Adicione o cdigo a

    seguir: try

    {

    if (cbmFiltrar.Text == "Cdigo")

    {

    //Define a instruo 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 conexo

    cn.Open();

    //Define o valor da CommandType para cmd

    cmd.CommandType = CommandType.Text;

    /*Representa um conjunto de comandos de dados e

    uma conexo de banco de dados

    que so usados para preencher o DataSet e

    atualizar um banco de dados SQL Server.*/

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    //Representa uma tabela de dados na memria.

    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 conexo

    }

    if (cbmFiltrar.Text == "Nome")

    {

    //define a instruo SQL

    string sql = "SELECT * FROM tbCliente WHERE nome

    LIKE '%" + txtPesquisar.Text + "%'";

    cmd = new SqlCommand(sql, cn);

    cn.Open();

  • nstutoriais.blogspot.com Pgina 44

    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 instruo 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 cdigo a seguir: if (cbmFiltrar.Text == "Cdigo")

    {

    txtPesquisar.Mask = "";

    }

    if (cbmFiltrar.Text == "Nome")

    {

    txtPesquisar.Mask = "";

    }

    if (cbmFiltrar.Text == "CPF")

    {

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

    }

    if (cbmFiltrar.Text == "")

    {

    txtPesquisar.Mask = "";

    }

  • nstutoriais.blogspot.com Pgina 45

    Arraste o Componente Timer para o formulrio e nas propriedades mude o seguinte:

    Enable para True

    Interval para 32

    No event,Clique Duas vezes no Tick e insira o cdigo abaixo: try

    {

    //define a instruo 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 boto Adicionar Registro e insira o cdigo abaixo: //Desabilita o boto excluir para quem tiver nivel de

    acesso Operador

    if (frmLogin.NivelAcesso == "Operador")

    {

    bindingNavigatorDeleteItem.Enabled = false;

    }

    Adicione o mtodo a seguir depois do trecho de cdigo do boto Adicionar Registro public static bool ValidarCPF(string cpf)

    {

    // Caso coloque todos os numeros iguais

    int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4,

    3, 2 };

    int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6,

    5, 4, 3, 2 };

    string tempCpf;

    string digito;

    int soma;

    int resto;

    cpf = cpf.Trim();

    cpf = cpf.Replace(".", "").Replace("-", "");

    if (cpf.Length != 11)

    {

    return false;

    }

    tempCpf = cpf.Substring(0, 9);

    soma = 0;

    for (int i = 0; i < 9; i++)

  • nstutoriais.blogspot.com Pgina 46

    {

    soma += int.Parse(tempCpf[i].ToString()) *

    multiplicador1[i];

    }

    resto = soma % 11;

    if (resto < 2)

    {

    resto = 0;

    }

    else

    {

    resto = 11 - resto;

    }

    digito = resto.ToString();

    tempCpf = tempCpf + digito;

    soma = 0;

    for (int i = 0; i < 10; i++)

    {

    soma += int.Parse(tempCpf[i].ToString()) *

    multiplicador2[i];

    }

    resto = soma % 11;

    if (resto < 2)

    {

    resto = 0;

    }

    else

    {

    resto = 11 - resto;

    }

    digito = digito + resto.ToString();

    return cpf.EndsWith(digito);

    }

    Clique duas vezes no boto Salvar e insira o cdigo abaixo: try

    {

    //Desabilita o boto 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 usurio que cadastrou

    if (cadastradoPorTextBox.Text == "")

    {

  • nstutoriais.blogspot.com Pgina 47

    cadastradoPorTextBox.Text =

    frmLogin.usuarioConectado;

    }

    //Verificar o cpf

    if (ValidarCPF(cpfMaskedTextBox.Text))

    {

    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 no podem

    ficar vazio",

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel salvar pelo seguinte

    motivo: " + ex.Message);

    }

    Adicione este mtodo para limpar o formulrio: 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

    cdigo a seguir: Para preenche um formulrio atravs 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 =

  • nstutoriais.blogspot.com Pgina 48

    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.

    9. Tela Ordem de Servio

    Modifique os componentes a seguir do formulrio Ordem de Servio:

    Propriedades Valores

    Size 505; 630

    StartPosition CenterScreen

    Text Cadastrar OS

    Insira uma groupBox e mude as propriedades a seguir:

    Propriedades Valores

    Location 12; 27 Size 470; 228

    Text Dados OS

    Mude na Paleta Data Sources os tipos de campo de idCliente e idServico para

    ComboBox., arraste e organize de acordo com o seu jeito. Podendo seguir Como na

    imagem:

  • nstutoriais.blogspot.com Pgina 49

    Adicione os seguintes componentes para dentro da GroupBox:

    Label Text = Filtrar Por

    ComboBox Edit Items: Cdigo, Nome e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar

    Boto Name = btnPesquisar , Text = Pesquisar

    Adicione uma groupBox e dentro dela acrescente a tabela tbOrdemServico. Clique na

    seta ao lado e desmarque as opes a Enable Adding, Enable Editing, Enable Deleting,

    clique em Dock in parente containers e EditColumns:

    Modifique os nomes de cada coluna a seu gosto:

    Clique na comboBox Nome do Cliente na seta :

    Em Data Sources: Escolha a tabela tbCliente

    Em Member Value: Escolha a coluna idCliente

    Em Value Member: Escolha a coluna idNome

    Em Selected Value: Em tbOrdemServicoBindingSource > idCliente

    Faa isso com a comboBox Nome do Servio.

    Clique duas vezes no boto pesquisar e insira o cdigo a seguir: try

    {

    if (cbmFiltrar.Text == "Cdigo OS")

    {

    //Define a instruo Sql

    string sql = "SELECT * FROM tbOrdemServico WHERE

    idOrdem =" + txtPesquisar.Text + "";

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

    cmd = new SqlCommand(sql, cn);

    //Abre conexo

    cn.Open();

    //Define o valor da CommandType para cmd

    cmd.CommandType = CommandType.Text;

    /*Representa um conjunto de comandos de dados e

    uma conexo de banco de dados

    que so usados para preencher o DataSet e

    atualizar um banco de dados SQL Server.*/

    SqlDataAdapter da = new SqlDataAdapter(cmd);

  • nstutoriais.blogspot.com Pgina 50

    //Representa uma tabela de dados na memria.

    DataTable os = new DataTable();

    /* Adiciona ou atualiza linhas em um DataTable

    para que correspondam na fonte de

    * dados usando o DataTable.*/

    da.Fill(os);

    /*A tbUsuarioDataGridView recebe o DataTable

    usuario*/

    tbOrdemServicoDataGridView.DataSource = os;

    //Fechar a conexo

    }

    if (cbmFiltrar.Text == "Cdigo Cliente")

    {

    //define a instruo SQL

    string sql = "SELECT * FROM tbOrdemServico WHERE

    idCliente =" + txtPesquisar.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;

    }

    if (cbmFiltrar.Text == "Cdigo Servio")

    {

    //define a instruo SQL

    string sql = "SELECT * FROM tbOrdemServico WHERE

    idServico=" + txtPesquisar.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();

    }

  • nstutoriais.blogspot.com Pgina 51

    Desabilite o campo Cdigo OS, Data do Cadastro e Cadastrado Por, pela propriedade

    Enable.

    Clique Duas vezes no boto Adicionar Registro e insira o cdigo abaixo: //Desabilita o boto excluir para quem tiver nivel de

    acesso Operador

    if (frmLogin.NivelAcesso == "Operador")

    {

    bindingNavigatorDeleteItem.Enabled = false;

    }

    Clique duas Vezes no boto Salvar e digite o Cdigo a seguir: try

    {

    //Desabilita o boto excluir para quem tiver nivel de

    acesso Operador

    if (frmLogin.NivelAcesso == "Operador")

    {

    bindingNavigatorDeleteItem.Enabled = false;

    }

    if ((idClienteComboBox.Text != "") && (idServicoComboBox.Text != ""))

    {

    if (dataDiaTextBox.Text == "")

    {

    dataDiaTextBox.Text = DateTime.Now.ToString();

    }

    if (cadastradorPorTextBox.Text == "")

    {

    cadastradorPorTextBox.Text =

    frmLogin.usuarioConectado;

    }

    this.Validate();

    this.tbOrdemServicoBindingSource.EndEdit();

    this.tbOrdemServicoTableAdapter.Update(this.servicoDataSet.tbOrdemServ

    ico);

    MessageBox.Show("Cadastro realizado com sucesso");

    }

    else

    {

    MessageBox.Show("Todos os campos so obrigatorio");

    }

    }

    catch (Exception ex)

    {

    MessageBox.Show(ex.Message);

    }

    finally

    {

    cn.Close();

    }

  • nstutoriais.blogspot.com Pgina 52

    Seu Layout poder ter ficado da seguinte forma:

    Insira o mtodo para limpar o formulrio: private void LimparCampo()

    {

    idOrdemTextBox.Clear();

    idClienteComboBox.SelectedIndex = -1;

    idServicoComboBox.SelectedIndex = -1;

    dataDiaTextBox.Clear();

    cadastradorPorTextBox.Clear();

    }

    Adicione o Cdigo para puxar os dados de uma DataGrid para o formulrio: LimparCampo();

    idOrdemTextBox.Text =

    tbOrdemServicoDataGridView.CurrentRow.Cells[0].Value.ToString();

    idClienteComboBox.Text =

    tbOrdemServicoDataGridView.CurrentRow.Cells[1].Value.ToString();

    idServicoComboBox.Text =

    tbOrdemServicoDataGridView.CurrentRow.Cells[2].Value.ToString();

    dataDiaTextBox.Text =

    tbOrdemServicoDataGridView.CurrentRow.Cells[3].Value.ToString();

    cadastradorPorTextBox.Text =

    tbOrdemServicoDataGridView.CurrentRow.Cells[4].Value.ToString();

    Pronto o Cadastrar OS est pronto na prxima Parte ser criado a Tela Principal.

  • nstutoriais.blogspot.com Pgina 53

    10. Tela Principal

    Modifique as propriedades a seguir:

    Propriedades Valores

    BackgroundImage Escolha uma imagem de Plano de Fundo

    IsMdiContainer True

    Size 1024; 785

    StartPosition CenterScreen

    Text Tela Principal

    Adicione ToolBox >Menu & Toolbars > MenuStrip. Como na imagem:

    Crie um sub Menu para o Cadastro como na imagem:

  • nstutoriais.blogspot.com Pgina 54

    Ao lado do Menu Cadastro existe um Texto chamado de Type Here clique nele e

    adicione o menu e o sub Menu como na imagem abaixo:

    Adicione o componente chamado ToolBox > ToolStrip. Como na imagem:

    Clique na Seta para baixo e adicione 4 Button chamado de:

    Por enquando o ToolStrip devera ficar assim:

    Name Padro Modificar name Para

    DisplayStyle TextImageRelation Text

    toolStripButton1 tsbCliente Image and Text

    ImageAboveText Cliente

    toolStripButton2 tsbServico Image and Text

    ImageAboveText Servio

    toolStripButton3 tsbOS Image and Text

    ImageAboveText Ordem de Servio

    toolStripButton4 tsbLogoff Image and Text

    ImageAboveText Logoff

    Adicione as imagens de cada boto pela propriedade Image:

    O Seu ToolStrip poder ter ficado assim:

  • nstutoriais.blogspot.com Pgina 55

    Caso as imagens estiverem pequenas desative(none) a propriedade ImageScaling.

    Ateno: Essa propriedade desativar o tamanho padro das imagens ser voc colocar

    uma imagem com resoluo muito grande ira ficar feio, portanto coloque resoluo de

    ate 32x32 no seu projeto.

    Arraste o componente chamado ToolBox>StatusStrip. Como na imagem:

    Clique na seta para baixo e adicione 5 StatusLabel com as propriedades a seguir

    Name Padro Modificar name Para

    BorderSides Text

    toolStripStatusLabel1 tsslUsuario Right Vazio

    toolStripStatusLabel2 tsslIP Right Vazio

    toolStripStatusLabel3 tsslNomePC Right Vazio

    toolStripStatusLabel4 tsslData Right Vazio

    toolStripStatusLabel5 tsslHora Right Vazio

    O StatusStrip ficara assim:

    Clique duas vezes no formulrio para abrir o event Load e insira o cdigo a seguir: //Nvel de Acesso: Ser o usuario for Operador o formulario estara

    invisivel

    if (frmLogin.NivelAcesso == "Operador")

    {

    //Nvel de Operador no podera cadastrar usurio

    usurioToolStripMenuItem.Visible = false;

    }

  • nstutoriais.blogspot.com Pgina 56

    //Mostrar o usurio conectado

    tsslUsuario.Text = "Usurio: " +

    frmLogin.usuarioConectado;

    //Mostra o nome do PC

    string myHost = System.Net.Dns.GetHostName();

    tsslNomePC.Text = "Nome do PC: " + myHost;

    //Mostrar o IP do usurio

    System.Net.IPHostEntry myIPs =

    System.Net.Dns.GetHostEntry(myHost);

    foreach (System.Net.IPAddress myIP in myIPs.AddressList)

    {

    //Mostar o IP

    tsslIP.Text = "IP: " + myIP;

    }

    Insira o Componente Timer modifique as propriedades (Enable para True e Interval para

    1000) e clique duas vezes nele e adicione o trecho de cdigo a seguir: //Mostrar a Hora

    tsslData.Text = DateTime.Now.ToString("HH:mm");

    Clique duas vezes no menu Cadastro> Usurio e insira o cdigo abaixo: try

    {

    formulario.frmUsuario usuario = null; // form a ser

    aberto

    //procura form na relao 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)

    {

    usuario = (formulario.frmUsuario)frm;

    break;

    }

    }

    // se no encontrou na relao, instancia objeto,

    "seta" form pai e exibe form

    if (usuario == null)

    {

    usuario = new formulario.frmUsuario();

    usuario.MdiParent = this;

    usuario.Show();

    }

    //garante que ele fique em foco caso haja outros forms

    abertos

    usuario.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

  • nstutoriais.blogspot.com Pgina 57

    }

    Clique duas vezes no menu Cadastro > Cliente e insira o Cdigo a seguir: try

    {

    frmCliente cliente = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmCliente)

    {

    cliente = (frmCliente)frm;

    break;

    }

    }

    if (cliente == null)

    {

    cliente = new frmCliente();

    cliente.MdiParent = this;

    cliente.Show();

    }

    cliente.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    Clique duas vezes no menu Cadastro> Servio e adicione o Cdigo a seguir: try

    {

    formulario.frmServico servico = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is formulario.frmServico)

    {

    servico = (formulario.frmServico)frm;

    break;

    }

    }

    if (servico == null)

    {

    servico = new formulario.frmServico();

    servico.MdiParent = this;

    servico.Show();

    }

    servico.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

  • nstutoriais.blogspot.com Pgina 58

    }

    Clique duas vezes no menu Cadastro > Ordem de Servio e adicione o cdigo a seguir: try

    {

    frmOS os = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmOS)

    {

    os = (frmOS)frm;

    break;

    }

    }

    if (os == null)

    {

    os = new frmOS();

    os.MdiParent = this;

    os.Show();

    }

    os.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    Clique duas vezes no menu Relatrio > Cliente e adicione o cdigo a seguir: try

    {

    frmRelCliente relcliente = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmRelCliente)

    {

    relcliente = (frmRelCliente)frm;

    break;

    }

    }

    if (relcliente == null)

    {

    relcliente = new frmRelCliente();

    relcliente.MdiParent = this;

    relcliente.Show();

    }

    relcliente.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

  • nstutoriais.blogspot.com Pgina 59

    }

    Clique duas vezes no menu Relatrio > Servio e adicione o cdigo a seguir: try

    {

    frmRelServico relServico = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmRelServico)

    {

    relServico = (frmRelServico)frm;

    break;

    }

    }

    if (relServico == null)

    {

    relServico = new frmRelServico();

    relServico.MdiParent = this;

    relServico.Show();

    }

    relServico.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    Clique duas vezes no menu Relatrio > Ordem de Servio e adicione o cdigo a seguir: try

    {

    frmRelOS relOS = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmRelOS)

    {

    relOS = (frmRelOS)frm;

    break;

    }

    }

    if (relOS == null)

    {

    relOS = new frmRelOS();

    relOS.MdiParent = this;

    relOS.Show();

    }

    relOS.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

  • nstutoriais.blogspot.com Pgina 60

    }

    Clique duas vezes no toolStrip1 > Cliente e insira o Cdigo: try

    {

    frmCliente cliente = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmCliente)

    {

    cliente = (frmCliente)frm;

    break;

    }

    }

    if (cliente == null)

    {

    cliente = new frmCliente();

    cliente.MdiParent = this;

    cliente.Show();

    }

    cliente.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    Clique duas vezes no toolStrip1 > Servio e insira o Cdigo: try

    {

    formulario.frmServico servico = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is formulario.frmServico)

    {

    servico = (formulario.frmServico)frm;

    break;

    }

    }

    if (servico == null)

    {

    servico = new formulario.frmServico();

    servico.MdiParent = this;

    servico.Show();

    }

    servico.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

  • nstutoriais.blogspot.com Pgina 61

    }

    Clique duas vezes no toolStrip1 > Ordem de Servio e insira o Cdigo: try

    {

    frmOS os = null;

    foreach (Form frm in this.MdiChildren)

    {

    if (frm is frmOS)

    {

    os = (frmOS)frm;

    break;

    }

    }

    if (os == null)

    {

    os = new frmOS();

    os.MdiParent = this;

    os.Show();

    }

    os.Focus();

    }

    catch (Exception ex)

    {

    MessageBox.Show("No foi possvel ser conectar ao

    formulrio devido ao erro: " + ex.Message,

    "Aviso",

    MessageBoxButtons.OK,

    MessageBoxIcon.Information);

    }

    Clique duas vezes no menu Cadastro > Sair e adicione o cdigo a seguir: Application.Exit();

    Entre no event do Formulario Tela Principal e clique na propriedade FormClosed e

    adicione o cdigo a seguir: Application.Exit();

  • nstutoriais.blogspot.com Pgina 62

    Relatrio

    11. Relatrio Cliente

    Entre no frmRelCliente modifique as propriedades a seguir:

    Propriedades Valores

    Size 615; 407

    StartPosition CenterScreen

    Text Relatrio de Cliente

    Adicione o componente pela ToolBox > Data > ReportView como na imagem:

  • nstutoriais.blogspot.com Pgina 63

    O Relatrio esta em branco vamos adicionar um campo do tipo Tabela que mostrara

    todos os Clientes cadastrados no Sistema.

    Clique em cima do relatrio > Menu Report > Marque Page Header(Cabealho) e Page

    Footer(Rodap) . Como na imagem:

  • nstutoriais.blogspot.com Pgina 64

    Arraste do ToolBox o componente Table e insira na Body do Relatrio. Como na

    imagem:

    Insira as colunas do Data Sources em Detail. Obseve que ele colocar as labels

    correspondente em Header. Como na imagem:

  • nstutoriais.blogspot.com Pgina 65

    Faa isso com os campos que iro para o relatrio. Para adicionar uma coluna clique na

    primeira linha e com o boto direito > Insert Column to the Left(Esquerda) ou

    Right(Direita).

  • nstutoriais.blogspot.com Pgina 66

    O layout ficou assim:

    Em Page Header Adicione uma TextBox e coloque o Texto : Cadastro de Cliente. Mude

    o tamanho do texto, a cor do texto e do fundo pela barra de ferramentas.

    O Relatrio esta pronto. Volte para o frmRelCliente, clique no ReportView na seta e

    selecione Repot1.rdlc Faa como a imagem a seguir:

  • nstutoriais.blogspot.com Pgina 67

    Faa isso com o Relatrio Servio e Relatrio Ordem de Servio

    12. Relatrio Servio

    Siga o Passo Nmero 12. 13. Relatrio Ordem de Servio

    Siga o Passo Nmero 12.

    Sistema desenvolvido por Natanael Santos.

    [email protected]