Buscar

TUTORIAL - Projeto de Ordem de Serviço em C sharp

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 68 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 68 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 68 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

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. 
 
 
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 
 
 
 
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 
 
 
 
 
 
 
 
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) 
) 
 
 
 
 
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) 
) 
 
 
 
 
 
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: 
 
 
nstutoriais.blogspot.com Página 6 
3. Conexão com o Banco 
 
Selecione no menu Data > Add New Data Sources: 
 
 
Selecione Database: 
 
 
 
 
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: 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
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 
AutoIncrementTrue 
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; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 
 
 
 
 
 
 
 
 
 
 
 
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 
 
 
 
 
 
 
 
 
 
 
 
 
 
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(); 
 
 
 
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(); 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
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): 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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); 
 
 
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; 
 
 
 
 
 
 
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 
 
 
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 
 
 
 
 
 
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 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
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: 
 
 
 
 
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; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 
 
 
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"); 
 
 
 
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: 
 
 
 
 
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; 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
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 paracmd 
 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(); 
 
 
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 = ""; 
 } 
 
 
 
 
 
 
 
 
 
 
 
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++) 
 
 
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 == "") 
 { 
 
 
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("CPFincorreto", 
 "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 = 
 
 
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: 
 
 
 
 
 
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); 
 
 
 
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(); 
 } 
 
 
 
 
 
 
 
 
 
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 deacesso 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(); 
 } 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
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; 
 } 
 
 
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); 
 
 
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); 
 
 
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); 
 
 
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); 
 
 
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); 
 
 
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(); 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
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: 
 
 
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). 
 
 
 
 
 
 
 
 
 
 
 
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: 
 
 
 
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. 
259.natanael@gmail.com

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes