Sistema de Ordem de Serviço em C#

68
NS TUTORIAIS Desenvolvendo Sistema de Ordem de Serviço 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 Serviço com Tela de Login, Tela de Splash, Cadastro de Cliente, Cadastro de Serviço, Controle de Acesso, Ordem de Serviço e Relatórios.

description

Sistema de Ordem de serviço em C#

Transcript of Sistema de Ordem de Serviço em C#

Page 1: Sistema de Ordem de Serviço em C#

NS TUTORIAIS

Desenvolvendo Sistema de Ordem de Serviço 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 Serviço com Tela de Login, Tela de Splash, Cadastro de Cliente, Cadastro de Serviço, Controle de Acesso, Ordem de Serviço e Relatórios.

Page 2: Sistema de Ordem de Serviço em C#

Sumário Introdução ......................................................................................................................... 2

1.Criação do Banco de Dados........................................................................................... 3

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

3. Conexão com o Banco .................................................................................................. 6

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

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

6. Tela de Usuário .......................................................................................................... 24

7. Tela de Serviço .......................................................................................................... 32

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

9. Tela Ordem de Serviço ............................................................................................... 48

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

11. Relatório Cliente ....................................................................................................... 62

12. Relatório Serviço ...................................................................................................... 67

13. Relatório Ordem de Serviço ..................................................................................... 67

Page 3: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 2

Introdução

O Sistema de Ordem de Serviço foi desenvolvido pelo blog

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

Tela de Login, Tela Principal, Cadastro de Usuário, Cadastro de Cliente, Cadastro de

Serviço, Ordem de Serviço, Relatório de Cliente,Serviço e Ordem de Serviço.

O Sistema esta dividido em doze partes que seguem uma lógica.

1º Parte: Criação do Banco de Dados usando o SQL Server: Neste 1ª Parte é

desenvolvido o banco de dados contendo três tabelas.

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

Sistema.

3ª Parte: Conexão com o Banco de Dados: Nesta parte e feita à conexão com o

banco de dados para o Sistema.

4º Parte: Tela de Login: Responsável por fazer o controle de usuário no

formulário

5ª Parte: Tela de Splash: Responsável por carregar o sistema

6º Parte: Tela de Usuário: Responsável por inserir, excluir e atualizar os

usuários do sistema.

7º Parte: Tela de Serviço: Responsável pelo Cadastro de Serviço.

8º Parte: Tela de Cliente: Responsável pelo Cadastro de Cliente.

9º Parte: Tela Ordem de Serviço: Responsável por Emitir a Ordem de Serviço.

10º Parte: Tela de Principal: Responsável por fazer a junção dos formulários.

11º Parte: Relatório Cliente: Responsável por mostrar todos os Clientes

cadastrados no sistema

12º Parte: Relatório Serviço: Responsável por mostrar todos os Serviços

cadastrados no sistema

13º Parte: Relatório Ordem de Serviço: Responsável por mostrar todas as

Ordens de Serviço cadastradas no sistema

Page 4: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 3

1.Criação do Banco de Dados

Entre no SQL Server e clique em New Query e adicione o código a Seguir:

/*Cria o banco de dados*/

create database Servico

/*Limpe a Query ou Instrução */

/*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)

)

Page 5: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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)

)

Page 6: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 5

2. Criando o Projeto Crie o novo Projeto:

Selecione o Visual C#> Windows > Windows Applications:

Dê o nome de SISistema:

Page 7: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 6

3. Conexão com o Banco

Selecione no menu Data > Add New Data Sources:

Selecione Database:

Page 8: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 7

Selecione o botão Next:

Clique no botão New Connection:

Selecione Microsoft SQL Server Database File e depois Continue:

Page 9: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 8

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

depois clique OK para sair da caixa de Diálogo e OK do Formulário Add Connection

para ir ao próximo formulário:

Atenção (Geralmente o endereço 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.

Page 10: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 9

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

A princípio não aconteceu nada. Clique no menu Data > Show Data Sources para

aparecer as tabelas do Banco de Dados.

Como na imagem:

Page 11: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 10

Precisamos colocar os campos “código” 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 formulário form1.cs para frmLogin.cs;

Page 12: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 11

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

Formulários

Clique no Solution Explorer > SiServico > botão direito > Add > New Folder > dê o

nome de Formulario:

Clique no Solution Explorer > Formulário > botão direito > Add > Windows Form > dê

o nome para cada formulário da seguinte forma:

Page 13: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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:

Page 14: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 13

4. 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:

Page 15: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 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:

Page 16: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 15

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:

Page 17: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 16

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:

Page 18: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 17

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

Page 19: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 18

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:

Close(); //Para sair da aplicação

Page 20: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 19

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();

Page 21: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 20

//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 do Formulario Tela de Login e clique na propriedade FormClosed e

adicione o código a seguir: Application.Exit();

Page 22: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 formulário

MaximizeBox False MinimizeBox False

ShowIcon False

ShowInTaskbar False StartPostion CenterScreen

Text Iniciando...

Adicione uma ProgressBar faça 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 faça 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:

Page 23: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 22

Digite o código 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 formulário insira o código a seguir: //Código responsavel pela opacidade do formulario

this.Opacity = 0;

for (double cont = 0; cont <= 1; cont += 0.1)

{

this.Opacity = cont;

this.Refresh();

System.Threading.Thread.Sleep(15);

}

O Design do formulário deve ficar assim:

A Tela de Splash está pronta. Agora precisamos informar a Tela de Login que a Tela de

Splash irá aparecer primeira do que ela. Volte para a Tela de Login.

Page 24: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 método a seguir depois da chave de fechamento do Form1(): public void SplashScreen()

{

//Executar a Tela de Splash

Application.Run(new frmSplash());

}

O Código deverá fica assim (Esta em Azul o código):

Page 25: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 24

6. 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:

Page 26: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 25

Arraste o campo para dentro da GroupBox como na imagem:

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

Page 27: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 26

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:

Page 28: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 27

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.

Page 29: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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:

Page 30: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 29

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);

Page 31: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 30

}

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;

Page 32: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 31

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

Page 33: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 32

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();

Termina o Cadastro de Usuário

7. Tela de Serviço

Mude as propriedades do formulário a seguir:

Propriedades Valores

Icon Selecione o ícone da Aplicação

Size 732; 633 StartPosition CenterScreen

Text Cadastro de Serviço

Arraste uma GroupBox dê o nome de Cadastro de Serviço.

Mude as propriedades a seguir:

Propriedades Valores

Archor Top, Left, Right

Size 600; 633 Text Dados do Serviço

Location 27; 23

Page 34: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 33

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

Selecione um Campo de cada vez:

Descrição e Observação mudem as propriedades a seguir

Propriedades Valores

Location Descrição: 16; 71 | Observação: 16; 155

MultiLine True ScrollBars Vertical

Size 523; 65

Código, 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: Código, Nome e name = cbmFiltrar Label Text = “=”

TextBox Name = txtPesquisar

Botão Name = btnPesquisar , Text = Pesquisar

Page 35: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 34

O Layout ficou assim:

Adicione uma groupBox(Text = Serviço) e arraste da paleta Data Sources a tabela

tbServico. Faça como a imagem solicitar.

Page 36: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 sugestão:

Page 37: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 36

O Layout ficou assim:

Volte para o código e insira o namespace a seguir: using System.Data.SqlClient;

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

SqlConnection(Properties.Settings.Default.ServicoConnectionString);

SqlCommand cmd = null;

Page 38: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 37

Como na imagem:

Volte para o Design(F7), clique duas vezes no botão Pesquisar e insira o código a

seguir: try

{

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

{

//Define a instrução 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 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 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 instrução SQL

string sql = "SELECT * FROM tbServico WHERE nome

Page 39: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 botão Adicionar Registro e insira o código a seguir: //Desabilita o botão excluir para quem tiver nivel de acesso Operador

if (frmLogin.NivelAcesso == "")

{

bindingNavigatorDeleteItem.Enabled = false;

}

Volte para o Design(F7) clique duas vezes no botão salvar e digite o código a seguir: try

{

//Desabilita o botão excluir para quem tiver nivel de

acesso Operador

if (frmLogin.NivelAcesso == "")

{

bindingNavigatorDeleteItem.Enabled = false;

}

//Se os campos estiver preenchido faça

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 aplicação

this.Validate();

this.tbServicoBindingSource.EndEdit();

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

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

Page 40: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 39

}

else

{

//Ser os campos não estiverem preenchido

MessageBox.Show("O Campo nome não pode 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);

}

Adicionar o método para limpar o formulário: private void LimparCampo()

{

idServicoTextBox.Clear();

nomeTextBox.Clear();

descricaoTextBox.Clear();

valorTextBox.Clear();

dataDiaTextBox.Clear();

cadastradoPorTextBox.Clear();

}

Insira o código para preenche um formulário através 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 Serviço:

Page 41: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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: 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;

Page 42: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 Serviço(s) Prestados:

Page 43: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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:

Page 44: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 43

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();

Page 45: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 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 = "";

}

Page 46: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 45

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;

}

Adicione o método a seguir depois do trecho de código do botão 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++)

Page 47: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 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 == "")

{

Page 48: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 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 =

Page 49: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 Serviço

Modifique os componentes a seguir do formulário Ordem de Serviço:

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:

Page 50: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 49

Adicione os seguintes componentes para dentro da GroupBox:

Label Text = Filtrar Por

ComboBox Edit Items: Código, Nome e name = cbmFiltrar Label Text = “=”

TextBox Name = txtPesquisar

Botão Name = btnPesquisar , Text = Pesquisar

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

seta ao lado e desmarque as opções 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

Faça isso com a comboBox Nome do Serviço.

Clique duas vezes no botão pesquisar e insira o código a seguir: try

{

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

{

//Define a instrução 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 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);

Page 51: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 50

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

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 conexão

}

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

{

//define a instrução 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 == "Código Serviço")

{

//define a instrução 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();

}

Page 52: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 51

Desabilite o campo Código OS, Data do Cadastro e Cadastrado Por, pela propriedade

Enable.

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 digite o Código a seguir: try

{

//Desabilita o botão 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 são obrigatorio");

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

cn.Close();

}

Page 53: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 52

Seu Layout poderá ter ficado da seguinte forma:

Insira o método para limpar o formulário: private void LimparCampo()

{

idOrdemTextBox.Clear();

idClienteComboBox.SelectedIndex = -1;

idServicoComboBox.SelectedIndex = -1;

dataDiaTextBox.Clear();

cadastradorPorTextBox.Clear();

}

Adicione o Código para puxar os dados de uma DataGrid para o formulário: 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 próxima Parte será criado a Tela Principal.

Page 54: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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:

Page 55: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 Padrão Modificar name Para

DisplayStyle TextImageRelation Text

toolStripButton1 tsbCliente Image and

Text

ImageAboveText Cliente

toolStripButton2 tsbServico Image and

Text

ImageAboveText Serviço

toolStripButton3 tsbOS Image and

Text

ImageAboveText Ordem de Serviço

toolStripButton4 tsbLogoff Image and

Text

ImageAboveText Logoff

Adicione as imagens de cada botão pela propriedade Image:

O Seu ToolStrip poderá ter ficado assim:

Page 56: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 55

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

Atenção: Essa propriedade desativar o tamanho padrão das imagens ser você colocar

uma imagem com resolução muito grande ira ficar feio, portanto coloque resolução 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 Padrão 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 formulário para abrir o event Load e insira o código a seguir: //Nível de Acesso: Ser o usuario for Operador o formulario estara

invisivel

if (frmLogin.NivelAcesso == "Operador")

{

//Nível de Operador não podera cadastrar usuário

usuárioToolStripMenuItem.Visible = false;

}

Page 57: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 56

//Mostrar o usuário conectado

tsslUsuario.Text = "Usuário: " +

frmLogin.usuarioConectado;

//Mostra o nome do PC

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

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

//Mostrar o IP do usuário

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 código a seguir: //Mostrar a Hora

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

Clique duas vezes no menu Cadastro> Usuário e insira o código abaixo: 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)

{

usuario = (formulario.frmUsuario)frm;

break;

}

}

// se não encontrou na relação, 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

Page 58: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 57

}

Clique duas vezes no menu Cadastro > Cliente e insira o Código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

}

Clique duas vezes no menu Cadastro> Serviço e adicione o Código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

Page 59: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 58

}

Clique duas vezes no menu Cadastro > Ordem de Serviço e adicione o código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

}

Clique duas vezes no menu Relatório > Cliente e adicione o código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

Page 60: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 59

}

Clique duas vezes no menu Relatório > Serviço e adicione o código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

}

Clique duas vezes no menu Relatório > Ordem de Serviço e adicione o código 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

Page 61: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 60

}

Clique duas vezes no toolStrip1 > Cliente e insira o Código: 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

}

Clique duas vezes no toolStrip1 > Serviço e insira o Código: 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",

MessageBoxButtons.OK,

MessageBoxIcon.Information);

Page 62: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 61

}

Clique duas vezes no toolStrip1 > Ordem de Serviço e insira o Código: 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("Não foi possível ser conectar ao

formulário devido ao erro: " + ex.Message,

"Aviso",–

MessageBoxButtons.OK,

MessageBoxIcon.Information);

}

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

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

adicione o código a seguir: Application.Exit();

Page 63: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 62

Relatório

11. Relatório Cliente

Entre no frmRelCliente modifique as propriedades a seguir:

Propriedades Valores

Size 615; 407

StartPosition CenterScreen

Text Relatório de Cliente

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

Page 64: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 63

O Relatório esta em branco vamos adicionar um campo do tipo Tabela que mostrara

todos os Clientes cadastrados no Sistema.

Clique em cima do relatório > Menu Report > Marque Page Header(Cabeçalho) e Page

Footer(Rodapé) . Como na imagem:

Page 65: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 64

Arraste do ToolBox o componente Table e insira na Body do Relatório. Como na

imagem:

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

correspondente em Header. Como na imagem:

Page 66: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 65

Faça isso com os campos que irão para o relatório. Para adicionar uma coluna clique na

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

Right(Direita).

Page 67: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 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 Relatório esta pronto. Volte para o frmRelCliente, clique no ReportView na seta e

selecione Repot1.rdlc Faça como a imagem a seguir:

Page 68: Sistema de Ordem de Serviço em C#

nstutoriais.blogspot.com Página 67

Faça isso com o Relatório Serviço e Relatório Ordem de Serviço

12. Relatório Serviço

Siga o Passo Número 12. 13. Relatório Ordem de Serviço

Siga o Passo Número 12.

Sistema desenvolvido por Natanael Santos.

[email protected]