Escolar Documentos
Profissional Documentos
Cultura Documentos
Ns Tutorial So
Ns Tutorial So
Desenvolvendo Sistema
de Ordem de Servio em
C# utilizando o Banco de
Dados SQL Server
Tutorial
Natanael Santos
9/2/2011
Sumrio
Introduo ......................................................................................................................... 2
1.Criao do Banco de Dados........................................................................................... 3
2. Criando o Projeto .......................................................................................................... 5
3. Conexo com o Banco .................................................................................................. 6
4. Tela de Login .............................................................................................................. 13
5. Tela de Splash ............................................................................................................ 21
6. Tela de Usurio .......................................................................................................... 24
7. Tela de Servio .......................................................................................................... 32
8. Tela de Cliente ........................................................................................................... 40
9. Tela Ordem de Servio ............................................................................................... 48
10. Tela Principal ............................................................................................................ 53
11. Relatrio Cliente ....................................................................................................... 62
12. Relatrio Servio ...................................................................................................... 67
13. Relatrio Ordem de Servio ..................................................................................... 67
Introduo
O Sistema de Ordem de Servio foi desenvolvido pelo blog
nstutoriais.blogspot.com para aprendizagem. O Sistema conta com uma Tela de Splash,
Tela de Login, Tela Principal, Cadastro de Usurio, Cadastro de Cliente, Cadastro de
Servio, Ordem de Servio, Relatrio de Cliente,Servio e Ordem de Servio.
O Sistema esta dividido em doze partes que seguem uma lgica.
1 Parte: Criao do Banco de Dados usando o SQL Server: Neste 1 Parte
desenvolvido o banco de dados contendo trs tabelas.
2 Parte: Criando o Projeto: Utilizando o Visual Studio para desenvolver o
Sistema.
3 Parte: Conexo com o Banco de Dados: Nesta parte e feita conexo com o
banco de dados para o Sistema.
4 Parte: Tela de Login: Responsvel por fazer o controle de usurio no
formulrio
5 Parte: Tela de Splash: Responsvel por carregar o sistema
6 Parte: Tela de Usurio: Responsvel por inserir, excluir e atualizar os
usurios do sistema.
7 Parte: Tela de Servio: Responsvel pelo Cadastro de Servio.
8 Parte: Tela de Cliente: Responsvel pelo Cadastro de Cliente.
9 Parte: Tela Ordem de Servio: Responsvel por Emitir a Ordem de Servio.
10 Parte: Tela de Principal: Responsvel por fazer a juno dos formulrios.
11 Parte: Relatrio Cliente: Responsvel por mostrar todos os Clientes
cadastrados no sistema
12 Parte: Relatrio Servio: Responsvel por mostrar todos os Servios
cadastrados no sistema
13 Parte: Relatrio Ordem de Servio: Responsvel por mostrar todas as
Ordens de Servio cadastradas no sistema
nstutoriais.blogspot.com
Pgina 2
nstutoriais.blogspot.com
Pgina 3
nstutoriais.blogspot.com
Pgina 4
2. Criando o Projeto
Crie o novo Projeto:
D o nome de SISistema:
nstutoriais.blogspot.com
Pgina 5
Selecione Database:
nstutoriais.blogspot.com
Pgina 6
nstutoriais.blogspot.com
Pgina 7
nstutoriais.blogspot.com
Pgina 8
A princpio no aconteceu nada. Clique no menu Data > Show Data Sources para
aparecer as tabelas do Banco de Dados.
Como na imagem:
nstutoriais.blogspot.com
Pgina 9
nstutoriais.blogspot.com
Pgina 10
Neste momento crie os formulrios que iremos usar e depois volte para a Tela de Login;
Formulrios
Clique no Solution Explorer > SiServico > boto direito > Add > New Folder > d o
nome de Formulario:
Clique no Solution Explorer > Formulrio > boto direito > Add > Windows Form > d
o nome para cada formulrio da seguinte forma:
nstutoriais.blogspot.com
Pgina 11
frmSplash.cs
frmTelaPrincipal.cs
frmCliente.cs
frmServico.cs
frmOS.cs
frmUsuario.cs
frmRelCliente.cs
frmRelServico.cs
frmRelOS.cs
nstutoriais.blogspot.com
Pgina 12
4. Tela de Login
Clique no formulrio frmLogin.cs e mude as propriedades a seguir:
Propriedade
Name
FormBorderStyle
Icon
MaximizeBox
MinimizeBox
Size
StartPosition
Text
Valores
frmLogin
FixedSingle
Selecione o icone
False
False
458; 229
CenterScreen
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
nstutoriais.blogspot.com
Pgina 13
nstutoriais.blogspot.com
Pgina 14
Observe que ele inseriu automaticamente uma barra e os componentes dela, remova
todos.
Mude os names dos botes para btnConectar e btnSair com os textos Conectar e Sair:
A ComboBox usurio (usuarioComboBox) fica responsvel por mostrar todos os
usurios cadastrados no sistema para fazer isso segue o passo a passo:
nstutoriais.blogspot.com
Pgina 15
Clique apenas uma vez no campo > Clique na seta superior a direita que ira aparecer >
Marque a opo Use data bound items como na imagem:
nstutoriais.blogspot.com
Pgina 16
No Display Member > Selecione o que ser visto pelo Usurio que a coluna usurio.
Como na imagem:
No Value Display > Selecione a coluna que equivale ao Display Member. Como na
imagem:
nstutoriais.blogspot.com
Valores
ListItems
DropDownList
121; 21
Pgina 17
Na ComboBox Nvel de Acesso clique uma vez > Clique na seta > Edit Items >
Deixe a primeira Linha vazia e digite Administrador e Operador em cada linha. Como
na imagem:
PasswordChar
Clique duas vezes no boto Sair e digite o cdigo a seguir:
Close(); //Para sair da aplicao
nstutoriais.blogspot.com
Pgina 18
Como na imagem:
Volte para o Desing(F7), clique duas vezes no boto Conectar e digite o cdigo:
try
{
//Verificar ser os campos esto preenchidos
if ((usuarioComboBox.Text != "") &&
(nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != ""))
{
//Responsavel pelo Comando Sql
SqlCommand comm = new SqlCommand("Select * From
tbUsuario Where usuario = @usuario and " +
"senha = @senha and nivelAcesso=@nivel", conn);
//Parametizar os codigos
comm.Parameters.Add("@usuario",
SqlDbType.VarChar).Value = usuarioComboBox.Text;
comm.Parameters.Add("@senha", SqlDbType.VarChar).Value
= senhaTextBox.Text;
comm.Parameters.Add("@nivel", SqlDbType.VarChar).Value
= nivelAcessoComboBox.Text;
//Abre a conexo
conn.Open();
SqlDataReader reader = null;
//l as linhas de uma base de dados SQL Server
reader = comm.ExecuteReader();
nstutoriais.blogspot.com
Pgina 19
nstutoriais.blogspot.com
Pgina 20
5. Tela de Splash
Clique na Tela de Splash e mude as propriedades a seguir:
Propriedades
Valores
Size
380; 251
BackgroundImage
Selecione a imagem de Fundo
BackgroundImageLayout
None
ControlBox
False
FormBorderStyle
None
Icon
Selecione o cone do formulrio
MaximizeBox
False
MinimizeBox
False
ShowIcon
False
ShowInTaskbar
False
StartPostion
CenterScreen
Text
Iniciando...
Adicione uma ProgressBar faa isso Paleta ToolBox > Common Controls > ProgressBar
Mude as propriedades a seguir:
Propriedades
Location
MarqueeAnimationSpeed
Size
Style
Valores
69; 216
1000
251;23
Continuous
Adicone um Timer faa isso Paleta ToolBox > Components > Timer
Mude as propriedades a seguir:
Propriedades
Valores
Enable
True
Interval
32
Clique no cone Event > Tick e duas vezes no TextBox corresponde a ele:
nstutoriais.blogspot.com
Pgina 21
Volte para o Design (F7) e clique duas vezes no formulrio insira o cdigo a seguir:
//Cdigo responsavel pela opacidade do formulario
this.Opacity = 0;
for (double cont = 0; cont <= 1; cont += 0.1)
{
this.Opacity = cont;
this.Refresh();
System.Threading.Thread.Sleep(15);
}
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
Pgina 22
nstutoriais.blogspot.com
Pgina 23
6. Tela de Usurio
Clique no formulrio frmUsuario e modifique as propriedades a seguir:
Propriedades
Valores
Icon
Selecione o cone
Size
565; 492
StartPostion
CenterScreen
Text
Cadastro de Usurio
Insira uma GroupBox e mude as propriedades a seguir:
Propriedades
Valores
Location
12; 45
Size
533; 150
Text
Cadastrar Usurio
Em Data Sources > tbUsuario > Mude o tipo de campo de DataGrid para Details como
na imagem:
nstutoriais.blogspot.com
Pgina 24
nstutoriais.blogspot.com
Pgina 25
nstutoriais.blogspot.com
Pgina 26
Adicione uma groupBox mude a propriedade Text para Usurio(s) e arraste da paleta
Data Source a DataGridView da tabela tbUsuario. Como na imagem:
nstutoriais.blogspot.com
Pgina 27
Desabilite a Enable Adding, Enable Editing e Enable Deleting. Clique em Edit Column.
Coloque os campos a seguir como Visible = false;
Senha e repita a senha.
Como na imagem:
nstutoriais.blogspot.com
Pgina 28
Nesta etapa modifique o HeaderText para mudar o Texto de exibio e Width para
mudar a largura de cada coluna.
Clique duas vezes no boto Pesquisar e insira o cdigo:
try
{
if (cbmFiltrar.Text == "Cdigo")
{
//Define a instruo Sql
string sql = "SELECT * FROM tbUsuario WHERE
idUsuario =" + txtPesquisar.Text + "";
//L os dados da variavel sql e conectar no cn
cmd = new SqlCommand(sql, cn);
//Abre conexo
cn.Open();
//Define o valor da CommandType para cmd
cmd.CommandType = CommandType.Text;
/*Representa um conjunto de comandos de dados e
uma conexo de banco de dados
que so usados para preencher o DataSet e
atualizar um banco de dados SQL Server.*/
SqlDataAdapter da = new SqlDataAdapter(cmd);
//Representa uma tabela de dados na memria.
DataTable usuario = new DataTable();
/* Adiciona ou atualiza linhas em um DataTable
para que correspondam na fonte de
* dados usando o DataTable.*/
da.Fill(usuario);
/*A tbUsuarioDataGridView recebe o DataTable
usuario*/
tbUsuarioDataGridView.DataSource = usuario;
//Fechar a conexo
}
if (cbmFiltrar.Text == "Usurio")
{
//define a instruo SQL
string sql = "SELECT * FROM tbUsuario WHERE
usuario LIKE '%" + txtPesquisar.Text + "%'";
cmd = new SqlCommand(sql, cn);
cn.Open();
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable usuario = new DataTable();
da.Fill(usuario);
tbUsuarioDataGridView.DataSource = usuario;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
nstutoriais.blogspot.com
Pgina 29
}
finally
{
cn.Close();
}
Valor
nstutoriais.blogspot.com
Pgina 30
Quais?
Os campos que so obrigatrio
Nvel de Acesso e as mensagem de cadastro com sucesso, no foi possvel o cadastro.
Copie o Cdigo a Seguir:
try
{
//Se os campos estiver preenchido faa
if ((usuarioTextBox.Text != "") &&
(nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != "") &&
(repitaSenhaTextBox.Text != ""))
{
//Se as senhas forem igual faa
if (senhaTextBox.Text == repitaSenhaTextBox.Text)
{
//Mostrar a Data do Cadastro na Hora
if (dataDiaTextBox.Text == "")
{
dataDiaTextBox.Text =
DateTime.Now.ToString();
}
//Mostrar quem Cadastrou o usuario
if (cadastradorPorTextBox.Text == "")
{
cadastradorPorTextBox.Text =
frmLogin.usuarioConectado;
}
//Executar a aplicao
this.Validate();
this.tbUsuarioBindingSource.EndEdit();
MessageBox.show("Cadastrado realizado com
sucesso")
this.tbUsuarioTableAdapter.Update(this.servicoDataSet.tbUsuario);
}
else
{
//Caso as senhas so diferentes
MessageBox.Show("As senhas esto diferentes");
}
}
else
{
//Ser os campos no estiverem preenchido
MessageBox.Show("Todos os campos no podem ficar
vazio");
}
}
catch (Exception ex)
{
//Caso haja uma exceo ser tratada neste cdigo
MessageBox.Show("No foi possvel salvar pelo seguinte
nstutoriais.blogspot.com
Pgina 31
7. Tela de Servio
Mude as propriedades do formulrio a seguir:
Propriedades
Valores
Icon
Selecione o cone da Aplicao
Size
732; 633
StartPosition
CenterScreen
Text
Cadastro de Servio
Arraste uma GroupBox d o nome de Cadastro de Servio.
Mude as propriedades a seguir:
Propriedades
Valores
Archor
Top, Left, Right
Size
600; 633
Text
Dados do Servio
Location
27; 23
nstutoriais.blogspot.com
Pgina 32
nstutoriais.blogspot.com
Pgina 33
nstutoriais.blogspot.com
Pgina 34
Desabilite a Enable Adding, Enable Editing e Enable Deleting. Clique em Edit Columns
renomei a propriedade HeaderText de cada campo como preferir. Segue uma sugesto:
nstutoriais.blogspot.com
Pgina 35
nstutoriais.blogspot.com
Pgina 36
Como na imagem:
Volte para o Design(F7), clique duas vezes no boto Pesquisar e insira o cdigo a
seguir:
try
{
if (cbmFiltrar.Text == "Cdigo")
{
//Define a instruo Sql
string sql = "SELECT * FROM tbServico WHERE
idServico =" + txtPesquisar.Text + "";
//L os dados da variavel sql e conectar no cn
cmd = new SqlCommand(sql, cn);
//Abre conexo
cn.Open();
//Define o valor da CommandType para cmd
cmd.CommandType = CommandType.Text;
/*Representa um conjunto de comandos de dados e
uma conexo de banco de dados
que so usados para preencher o DataSet e
atualizar um banco de dados SQL Server.*/
SqlDataAdapter da = new SqlDataAdapter(cmd);
//Representa uma tabela de dados na memria.
DataTable servico = new DataTable();
/* Adiciona ou atualiza linhas em um DataTable
para que correspondam na fonte de
* dados usando o DataTable.*/
da.Fill(servico);
/*A tbUsuarioDataGridView recebe o DataTable
usuario*/
tbServicoDataGridView.DataSource = servico;
}
if (cbmFiltrar.Text == "Nome")
{
//define a instruo SQL
string sql = "SELECT * FROM tbServico WHERE nome
nstutoriais.blogspot.com
Pgina 37
Volte para o Design(F7) clique duas vezes no boto salvar e digite o cdigo a seguir:
try
{
//Desabilita o boto excluir para quem tiver nivel de
acesso Operador
if (frmLogin.NivelAcesso == "")
{
bindingNavigatorDeleteItem.Enabled = false;
}
//Se os campos estiver preenchido faa
if (nomeTextBox.Text != "")
{
//Mostrar a Data do Cadastro na Hora
if (dataDiaTextBox.Text == "")
{
dataDiaTextBox.Text =
DateTime.Now.ToString();
}
//Mostrar quem Cadastrou o usuario
if (cadastradoPorTextBox.Text == "")
{
cadastradoPorTextBox.Text =
frmLogin.usuarioConectado;
}
//Executar a aplicao
this.Validate();
this.tbServicoBindingSource.EndEdit();
this.tbServicoTableAdapter.Update(this.servicoDataSet.tbServico);
MessageBox.Show("Cadastrado realizado com sucesso");
nstutoriais.blogspot.com
Pgina 38
}
else
{
//Ser os campos no estiverem preenchido
MessageBox.Show("O Campo nome no pode ficar
vazio");
}
}
catch (Exception ex)
{
//Caso haja uma exceo ser tratada neste cdigo
MessageBox.Show("No foi possvel salvar pelo seguinte
motivo: " + ex.Message);
}
Insira o cdigo para preenche um formulrio atravs de uma DataGrid. Clique uma vez
na DataGrid tbServicoDataGridView em Events > MouseDoubleClick
LimparCampo();
idServicoTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[0].Value.ToString();
nomeTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[1].Value.ToString();
descricaoTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[2].Value.ToString();
observacaoTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[3].Value.ToString();
valorTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[4].Value.ToString();
dataDiaTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[5].Value.ToString();
cadastradoPorTextBox.Text =
tbServicoDataGridView.CurrentRow.Cells[6].Value.ToString();
nstutoriais.blogspot.com
Pgina 39
8. Tela de Cliente
Mude as propriedades a Seguir:
Propriedades
Icon
Size
StartPosition
Text
Valores
Selecione o cone
959; 597
CenterScreen
Cadastro de Cliente
nstutoriais.blogspot.com
Pgina 40
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:
nstutoriais.blogspot.com
Pgina 41
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:
nstutoriais.blogspot.com
Pgina 42
Volte para o Design(F7) e clique duas vezes no boto Pesquisar. Adicione o cdigo a
seguir:
try
{
if (cbmFiltrar.Text == "Cdigo")
{
//Define a instruo Sql
string sql = "SELECT * FROM tbCliente WHERE
idCliente =" + txtPesquisar.Text + "";
//L os dados da variavel sql e conectar no cn
cmd = new SqlCommand(sql, cn);
//Abre conexo
cn.Open();
//Define o valor da CommandType para cmd
cmd.CommandType = CommandType.Text;
/*Representa um conjunto de comandos de dados e
uma conexo de banco de dados
que so usados para preencher o DataSet e
atualizar um banco de dados SQL Server.*/
SqlDataAdapter da = new SqlDataAdapter(cmd);
//Representa uma tabela de dados na memria.
DataTable cliente = new DataTable();
/* Adiciona ou atualiza linhas em um DataTable
para que correspondam na fonte de
* dados usando o DataTable.*/
da.Fill(cliente);
/*A tbUsuarioDataGridView recebe o DataTable
usuario*/
tbClienteDataGridView.DataSource = cliente;
//Fechar a conexo
}
if (cbmFiltrar.Text == "Nome")
{
//define a instruo SQL
string sql = "SELECT * FROM tbCliente WHERE nome
LIKE '%" + txtPesquisar.Text + "%'";
cmd = new SqlCommand(sql, cn);
cn.Open();
nstutoriais.blogspot.com
Pgina 43
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable cliente = new DataTable();
da.Fill(cliente);
tbClienteDataGridView.DataSource = cliente;
}
if (cbmFiltrar.Text == "CPF")
{
//define a instruo SQL
string sql = "SELECT * FROM tbCliente WHERE cpf
='" + txtPesquisar.Text + "'";
cmd = new SqlCommand(sql, cn);
cn.Open();
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable cliente = new DataTable();
da.Fill(cliente);
tbClienteDataGridView.DataSource = cliente;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
Volte para o Design(F7) clique uma vez no comboBox Filtrar entre no event e clique
duas vezes na propriedade SelectedIndexChanged e insira o cdigo a seguir:
if (cbmFiltrar.Text == "Cdigo")
{
txtPesquisar.Mask = "";
}
if (cbmFiltrar.Text == "Nome")
{
txtPesquisar.Mask = "";
}
if (cbmFiltrar.Text == "CPF")
{
txtPesquisar.Mask = "000,000,000-00";
}
if (cbmFiltrar.Text == "")
{
txtPesquisar.Mask = "";
}
nstutoriais.blogspot.com
Pgina 44
nstutoriais.blogspot.com
Pgina 45
{
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);
}
nstutoriais.blogspot.com
Pgina 46
cadastradoPorTextBox.Text =
frmLogin.usuarioConectado;
}
//Verificar o cpf
if (ValidarCPF(cpfMaskedTextBox.Text))
{
this.Validate();
this.tbClienteBindingSource.EndEdit();
this.tbClienteTableAdapter.Update(this.servicoDataSet.tbCliente);
}
else
{
MessageBox.Show("CPF incorreto",
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("O Campo 'Nome' e 'CPF no podem
ficar vazio",
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel salvar pelo seguinte
motivo: " + ex.Message);
}
nstutoriais.blogspot.com
Pgina 47
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();
nstutoriais.blogspot.com
Pgina 48
nstutoriais.blogspot.com
Pgina 49
nstutoriais.blogspot.com
Pgina 50
Desabilite o campo Cdigo OS, Data do Cadastro e Cadastrado Por, pela propriedade
Enable.
Clique Duas vezes no boto Adicionar Registro e insira o cdigo abaixo:
//Desabilita o boto excluir para quem tiver nivel de
acesso Operador
if (frmLogin.NivelAcesso == "Operador")
{
bindingNavigatorDeleteItem.Enabled = false;
}
nstutoriais.blogspot.com
Pgina 51
Pronto o Cadastrar OS est pronto na prxima Parte ser criado a Tela Principal.
nstutoriais.blogspot.com
Pgina 52
Valores
Escolha uma imagem de Plano de Fundo
True
1024; 785
CenterScreen
Tela Principal
nstutoriais.blogspot.com
Pgina 53
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:
Name Padro
Modificar
name Para
toolStripButton1 tsbCliente
toolStripButton2 tsbServico
toolStripButton3 tsbOS
toolStripButton4 tsbLogoff
DisplayStyle
TextImageRelation
Text
Image and
Text
Image and
Text
Image and
Text
Image and
Text
ImageAboveText
Cliente
ImageAboveText
Servio
ImageAboveText
Ordem de Servio
ImageAboveText
Logoff
nstutoriais.blogspot.com
Pgina 54
Name Padro
toolStripStatusLabel1
toolStripStatusLabel2
toolStripStatusLabel3
toolStripStatusLabel4
toolStripStatusLabel5
Modificar name
Para
tsslUsuario
tsslIP
tsslNomePC
tsslData
tsslHora
BorderSides Text
Right
Right
Right
Right
Right
Vazio
Vazio
Vazio
Vazio
Vazio
Clique duas vezes no formulrio para abrir o event Load e insira o cdigo a seguir:
//Nvel de Acesso: Ser o usuario for Operador o formulario estara
invisivel
if (frmLogin.NivelAcesso == "Operador")
{
//Nvel de Operador no podera cadastrar usurio
usurioToolStripMenuItem.Visible = false;
}
nstutoriais.blogspot.com
Pgina 55
Insira o Componente Timer modifique as propriedades (Enable para True e Interval para
1000) e clique duas vezes nele e adicione o trecho de cdigo a seguir:
//Mostrar a Hora
tsslData.Text = DateTime.Now.ToString("HH:mm");
nstutoriais.blogspot.com
Pgina 56
Clique duas vezes no menu Cadastro > Cliente e insira o Cdigo a seguir:
try
{
frmCliente cliente = null;
foreach (Form frm in this.MdiChildren)
{
if (frm is frmCliente)
{
cliente = (frmCliente)frm;
break;
}
}
if (cliente == null)
{
cliente = new frmCliente();
cliente.MdiParent = this;
cliente.Show();
}
cliente.Focus();
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel ser conectar ao
formulrio devido ao erro: " + ex.Message,
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
nstutoriais.blogspot.com
Pgina 57
Clique duas vezes no menu Cadastro > Ordem de Servio e adicione o cdigo a seguir:
try
{
frmOS os = null;
foreach (Form frm in this.MdiChildren)
{
if (frm is frmOS)
{
os = (frmOS)frm;
break;
}
}
if (os == null)
{
os = new frmOS();
os.MdiParent = this;
os.Show();
}
os.Focus();
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel ser conectar ao
formulrio devido ao erro: " + ex.Message,
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
Clique duas vezes no menu Relatrio > Cliente e adicione o cdigo a seguir:
try
{
frmRelCliente relcliente = null;
foreach (Form frm in this.MdiChildren)
{
if (frm is frmRelCliente)
{
relcliente = (frmRelCliente)frm;
break;
}
}
if (relcliente == null)
{
relcliente = new frmRelCliente();
relcliente.MdiParent = this;
relcliente.Show();
}
relcliente.Focus();
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel ser conectar ao
formulrio devido ao erro: " + ex.Message,
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
nstutoriais.blogspot.com
Pgina 58
Clique duas vezes no menu Relatrio > Servio e adicione o cdigo a seguir:
try
{
frmRelServico relServico = null;
foreach (Form frm in this.MdiChildren)
{
if (frm is frmRelServico)
{
relServico = (frmRelServico)frm;
break;
}
}
if (relServico == null)
{
relServico = new frmRelServico();
relServico.MdiParent = this;
relServico.Show();
}
relServico.Focus();
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel ser conectar ao
formulrio devido ao erro: " + ex.Message,
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
Clique duas vezes no menu Relatrio > Ordem de Servio e adicione o cdigo a seguir:
try
{
frmRelOS relOS = null;
foreach (Form frm in this.MdiChildren)
{
if (frm is frmRelOS)
{
relOS = (frmRelOS)frm;
break;
}
}
if (relOS == null)
{
relOS = new frmRelOS();
relOS.MdiParent = this;
relOS.Show();
}
relOS.Focus();
}
catch (Exception ex)
{
MessageBox.Show("No foi possvel ser conectar ao
formulrio devido ao erro: " + ex.Message,
"Aviso",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
nstutoriais.blogspot.com
Pgina 59
nstutoriais.blogspot.com
Pgina 60
Clique duas vezes no menu Cadastro > Sair e adicione o cdigo a seguir:
Application.Exit();
nstutoriais.blogspot.com
Pgina 61
Relatrio
11. Relatrio Cliente
Entre no frmRelCliente modifique as propriedades a seguir:
Propriedades
Valores
615; 407
Size
CenterScreen
StartPosition
Relatrio de Cliente
Text
Adicione o componente pela ToolBox > Data > ReportView como na imagem:
nstutoriais.blogspot.com
Pgina 62
O Relatrio esta em branco vamos adicionar um campo do tipo Tabela que mostrara
todos os Clientes cadastrados no Sistema.
Clique em cima do relatrio > Menu Report > Marque Page Header(Cabealho) e Page
Footer(Rodap) . Como na imagem:
nstutoriais.blogspot.com
Pgina 63
Insira as colunas do Data Sources em Detail. Obseve que ele colocar as labels
correspondente em Header. Como na imagem:
nstutoriais.blogspot.com
Pgina 64
Faa isso com os campos que iro para o relatrio. Para adicionar uma coluna clique na
primeira linha e com o boto direito > Insert Column to the Left(Esquerda) ou
Right(Direita).
nstutoriais.blogspot.com
Pgina 65
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.
nstutoriais.blogspot.com
Pgina 66
nstutoriais.blogspot.com
Pgina 67