Post on 07-Jul-2015
NS TUTORIAIS
Desenvolvendo Sistema de Ordem de Servio em C# utilizando o Banco de Dados SQL ServerTutorialNatanael Santos 9/2/2011
Sistema desenvolvido para o Tutorial Desenvolvendo um Sistema de Ordem de Servio com Tela de Login, Tela de Splash, Cadastro de Cliente, Cadastro de Servio, Controle de Acesso, Ordem de Servio e Relatrios.
SumrioIntroduo ......................................................................................................................... 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
IntroduoO 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
1.Criao do Banco de Dados
Entre no SQL Server e clique em New Query e adicione o cdigo a Seguir:/*Cria o banco de dados*/ create database Servico /*Limpe a Query ou Instruo */ /*Coloca em uso o banco de dados Servico*/ use Servico /*Cria a tabela tbCliente*/ create table tbCliente ( idCliente int primary key not null, nome varchar(80) not null, cpf char(14) not null, telefone char(13), endereco varchar(max), bairro varchar(100), cidade varchar(100), estado varchar(100), dataDia varchar(50), cadastradoPor varchar(50) )
nstutoriais.blogspot.com
Pgina 3
/*Cria a tabela tbServico*/ create table tbServico ( idServico int primary key not null, nome varchar(80) not null, descricao varchar(max), observacao varchar(max), valor decimal(10,2), dataDia varchar(50), cadastradoPor varchar(50) ) /*Cria a tabela tbOrdemServico*/ create table tbOrdemServico ( idOrdem int primary key not null, idCliente int not null, idServico int not null, dataDia varchar(50), cadastradorPor varchar(50), /*Chave estrangeira idCliente*/ CONSTRAINT FK_tbOrdemServico_tbCliente_idCliente FOREIGN KEY(idCliente) REFERENCES tbCliente(idCliente), /*Chave estrangeira idServico*/ CONSTRAINT FK_tbOrdemServico_tbServico_idServico FOREIGN KEY(idServico) REFERENCES tbServico(idServico) ) /*Cria a tabela tbUsuario*/ create table tbUsuario( idUsuario int primary key not null, usuario varchar(50) not null, senha varchar(50) not null, repitaSenha varchar(50) not null, nivelAcesso varchar(50) not null, dataDia varchar(50), cadastradorPor varchar(50) )
nstutoriais.blogspot.com
Pgina 4
2. Criando o ProjetoCrie o novo Projeto:
Selecione o Visual C#> Windows > Windows Applications:
D o nome de SISistema:
nstutoriais.blogspot.com
Pgina 5
3. Conexo com o BancoSelecione no menu Data > Add New Data Sources:
Selecione Database:
nstutoriais.blogspot.com
Pgina 6
Selecione o boto Next: Clique no boto New Connection:
Selecione Microsoft SQL Server Database File e depois Continue:
nstutoriais.blogspot.com
Pgina 7
Clique no boto Browse e Selecione o Banco de Dados e clique em Test Connection depois clique OK para sair da caixa de Dilogo e OK do Formulrio Add Connection para ir ao prximo formulrio: Ateno (Geralmente o endereo da pasta dos bancos de dados desenvolvido no SQL Server para Window XP : C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\)
Clique em Next novamente e ir aparecer a caixa de Dialogo clique em Sim: Para guardar o banco de dados no projeto.
nstutoriais.blogspot.com
Pgina 8
Marque a Tables para selecionar todas as tabelas e clique em Finish.
A princpio no aconteceu nada. Clique no menu Data > Show Data Sources para aparecer as tabelas do Banco de Dados.
Como na imagem:
nstutoriais.blogspot.com
Pgina 9
Precisamos colocar os campos cdigo de cada tabela como auto incremento. Na Paleta Data Sources > pelo cone Edit DataSet with Designer.
Clique na tabela tbOrdemServico > idOrdem. Na propriedade mude os campos a seguir: Propriedades Valores AutoIncrement True AutoIncrementSeed 1 Clique na tabela tbServico > idServico. Na propriedade mude os campos a seguir: Propriedades Valores AutoIncrement True AutoIncrementSeed 1 Clique na tabela tbCliente > idCliente. Na propriedade mude os campos a seguir: Propriedades Valores AutoIncrement True AutoIncrementSeed 1 Clique na tabela tbUsuario > idUsuario. Na propriedade mude os campos a seguir: Propriedades Valores AutoIncrement True AutoIncrementSeed 1 Salve e volte para o form1.cs; Renomei o formulrio form1.cs para frmLogin.cs;
nstutoriais.blogspot.com
Pgina 10
Neste momento crie os formulrios que iremos usar e depois volte para a Tela de Login;
FormulriosClique 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
Feito isso a Solution Explorer devera ficar assim:
nstutoriais.blogspot.com
Pgina 12
4. Tela de LoginClique 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
Devera ficar assim o bannerTelaLogin:
nstutoriais.blogspot.com
Pgina 13
Clique na paleta ToolBox > Containers> GroupBox e mude as propriedades: Propriedade Valor Location 37; 93 Size 377; 160 Text Insira o Login: Devera ficar assim:
Na Paleta Data Sources(SHIFT + Alt + D) clique no sinal +: Observe que os campos esto com o tipo TextBox, precisamos mudar os campos usurio e nivelAcesso para ComboBox da seguinte forma: Selecione o campo usurio clique na seta para baixo e selecione ComboBox, faa isso com o campo nivelAcesso:
nstutoriais.blogspot.com
Pgina 14
Observe que mudou as imagens dos campos:
Arraste os campos (usurio, nivelAcesso e senha) para a GroupBox e adicione dois botes embaixo deles:
Observe que ele inseriu automaticamente uma barra e os componentes dela, remova todos. Mude os names dos botes para btnConectar e btnSair com os textos Conectar e Sair: A ComboBox usurio (usuarioComboBox) fica responsvel por mostrar todos os usurios cadastrados no sistema para fazer isso segue o passo a passo:
nstutoriais.blogspot.com
Pgina 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:
Em Data Source > Selecione a tabela tbUsuario. 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:
Modifique as propriedades a seguir: Propriedades AutoCompleteSOurce DropDownStyle Size
Valores ListItems DropDownList 121; 21
nstutoriais.blogspot.com
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:
Modifique as propriedades da ComBoBox nivelAcesso a seguir: Propriedades Valores AutoCompleteSOurce ListItems DropDownStyle DropDownList Size 121; 21 Na TextBox Senha modifique as propriedades a seguir: Propriedades Valores PasswordChar Clique duas vezes no boto Sair e digite o cdigo a seguir: Close(); //Para sair da aplicao
nstutoriais.blogspot.com
Pgina 18
No topo da pagina digite o namespace a seguir: using System.Data.SqlClient; //Classe Responsvel pela Conexo com o SQL Server Declare duas variveis depois do public partial class frmLogin : Form{ //Responsavel pelo Nivel de Acesso public static string NivelAcesso; //Responsavel por mostrar quem esta conectado no sistema public static string usuarioConectado;
Como na imagem:
Volte para o Desing(F7), clique duas vezes no boto Conectar e digite o cdigo:try { //Verificar ser os campos esto preenchidos if ((usuarioComboBox.Text != "") && (nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != "")) { //Responsavel pelo Comando Sql SqlCommand comm = new SqlCommand("Select * From tbUsuario Where usuario = @usuario and " + "senha = @senha and nivelAcesso=@nivel", conn); //Parametizar os codigos comm.Parameters.Add("@usuario", SqlDbType.VarChar).Value = usuarioComboBox.Text; comm.Parameters.Add("@senha", SqlDbType.VarChar).Value = senhaTextBox.Text; comm.Parameters.Add("@nivel", SqlDbType.VarChar).Value = nivelAcessoComboBox.Text; //Abre a conexo conn.Open(); SqlDataReader reader = null; //l as linhas de uma base de dados SQL Server reader = comm.ExecuteReader();
nstutoriais.blogspot.com
Pgina 19
//Se tiver coisa pra l faa: if (reader.Read()) { //Variaveil usuarioConectado recebe campo usuarioComboBox.Text usuarioConectado = usuarioComboBox.Text; //Variavei nivelAcesso recebe o campo nivelAcessoComboBox.Text NivelAcesso = nivelAcessoComboBox.Text; //Declara a variavel que recebe o formulario frmTelaPrinciapal frmTelaPrincipal p = new frmTelaPrincipal(); //Esconde o formulario Tela de Login this.Hide(); //Mostrar o formulario frmTelaPrinciapl p.Show(); } else { MessageBox.Show("Usurio e/ou senha incorretas", "Aviso de Segurana", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("Todos os Campos so obrigatrios", "Aviso de Segurana", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { //Gerar a exceo MessageBox.Show(ex.Message); } finally { //Finalizar tarefa conn.Close(); }
Insira no evento Load do Fomulario frmLogin o cdigo a seguir://Limpar a ComboBox usuarioComboBox.SelectedIndex = -1;
Entre no event do Formulario Tela de Login e clique na propriedade FormClosed e adicione o cdigo a seguir:Application.Exit();
nstutoriais.blogspot.com
Pgina 20
5. Tela de SplashClique 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
Digite o cdigo a seguir://Incrementa 1 progressBar1.Increment(1); //Ser a progrresBar 1 for igual a 100 if (progressBar1.Value == 100) { //Pare timer1.Stop(); }
Volte para o Design (F7) e clique duas vezes no formulrio insira o cdigo a seguir://Cdigo responsavel pela opacidade do formulario this.Opacity = 0; for (double cont = 0; cont tbUsuario > Mude o tipo de campo de DataGrid para Details como na imagem:
nstutoriais.blogspot.com
Pgina 24
Arraste o campo para dentro da GroupBox como na imagem:
Renomei as Labels e coloque no canto esquerdo como na imagem:
nstutoriais.blogspot.com
Pgina 25
Renomeie o Text da Barra de Funcionalidade do formulrio
Seguindo a ordem da esquerda para a direita: Move first para Mover para o Primeiro Para Mover para o Anterior Move previous Para Posio Atual Current position Para De {0} e ToolTip para Total de Registro of {0} Para Mover para o Prximo Move next Para Mover para o ltimo Move last Para Adicionar Registro Add new Para Excluir Registro Delete Save Data para Salvar Registro
Insira os componentes na GroupBox a seguir: Label Text = Filtrar Por ComboBox Edit Items: Cdigo, usurio e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar Boto Name = btnPesquisar , Text = Pesquisar Como na imagem:
nstutoriais.blogspot.com
Pgina 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:
Clique na DataGridView na seta e clique em Dock in parent container. Como na imagem: Com isso a DataGridView ocupara o espao inteiro da GroupBox.
nstutoriais.blogspot.com
Pgina 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(); }
Feito isso o layout do formulrio deve ficar assim:
Mude a propriedade da TextBox Senha e Repita a Senha para: Campo Propriedade Para PasswordChar Para Senha PasswordChar Para Repita a Senha
Valor
Insira no ComboBox Nvel de Acesso os componentes a Seguir(Edit Items): Administrador e Operador. Lembrando que a primeira linha vazia e cada palavra em uma linha. Mude a propriedade DropDownStyle para DropDownList; Desabilite o campo Cdigo, Data do Cadastro e Cadastrado por, pela propriedade Enable = false;
nstutoriais.blogspot.com
Pgina 30
Clique duas vezes no boto Salvar. Observe que ele esta preenchido, ento iremos trabalhar com ele as regras de negocio.
Quais? Os campos que so obrigatrio Nvel de Acesso e as mensagem de cadastro com sucesso, no foi possvel o cadastro. Copie o Cdigo a Seguir:try { //Se os campos estiver preenchido faa if ((usuarioTextBox.Text != "") && (nivelAcessoComboBox.Text != "") && (senhaTextBox.Text != "") && (repitaSenhaTextBox.Text != "")) { //Se as senhas forem igual faa if (senhaTextBox.Text == repitaSenhaTextBox.Text) { //Mostrar a Data do Cadastro na Hora if (dataDiaTextBox.Text == "") { dataDiaTextBox.Text = DateTime.Now.ToString(); } //Mostrar quem Cadastrou o usuario if (cadastradorPorTextBox.Text == "") { cadastradorPorTextBox.Text = frmLogin.usuarioConectado; } //Executar a aplicao this.Validate(); this.tbUsuarioBindingSource.EndEdit(); MessageBox.show("Cadastrado realizado com sucesso") this.tbUsuarioTableAdapter.Update(this.servicoDataSet.tbUsuario); } else { //Caso as senhas so diferentes MessageBox.Show("As senhas esto diferentes"); } } else { //Ser os campos no estiverem preenchido MessageBox.Show("Todos os campos no podem ficar vazio"); } } catch (Exception ex) { //Caso haja uma exceo ser tratada neste cdigo MessageBox.Show("No foi possvel salvar pelo seguinte
nstutoriais.blogspot.com
Pgina 31
motivo: " + ex.Message); }
Adicione este mtodo para limpar o formulrio:private void LimparCampo() { idUsuarioTextBox.Clear(); usuarioTextBox.Clear(); senhaTextBox.Clear(); repitaSenhaTextBox.Clear(); nivelAcessoComboBox.SelectedIndex = -1; dataDiaTextBox.Clear(); cadastradorPorTextBox.Clear(); }
Clique uma vez no DataGrid Usuario em Events > MouseDoubleClickLimparCampo(); idUsuarioTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[0].Value.ToString(); usuarioTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[1].Value.ToString(); senhaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[2].Value.ToString(); repitaSenhaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[3].Value.ToString(); nivelAcessoComboBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[4].Value.ToString(); dataDiaTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[5].Value.ToString(); cadastradorPorTextBox.Text = tbUsuarioDataGridView.CurrentRow.Cells[6].Value.ToString();
Termina o Cadastro de Usurio
7. Tela de ServioMude 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
Arraste as colunas da tabela para dentro da GroupBox e organize da sua forma. Selecione um Campo de cada vez: Descrio e Observao mudem as propriedades a seguir Propriedades Valores Location Descrio: 16; 71 | Observao: 16; 155 MultiLine True ScrollBars Vertical Size 523; 65 Cdigo, Data do Cadastro e Cadastrado Por, desabilite a propriedade Enable. O layout ficou assim:
Arraste uma GroupBox e adicione os campos a seguir: Label Text = Filtrar Por ComboBox Edit Items: Cdigo, Nome e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar Boto Name = btnPesquisar , Text = Pesquisar
nstutoriais.blogspot.com
Pgina 33
O Layout ficou assim:
Adicione uma groupBox(Text = Servio) e arraste da paleta Data Sources a tabela tbServico. Faa como a imagem solicitar.
nstutoriais.blogspot.com
Pgina 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
O Layout ficou assim:
Volte para o cdigo e insira o namespace a seguir:using System.Data.SqlClient;
Embaixo do trecho de cdigo public frmServico() adicione o cdigo a seguirSqlConnection cn = new SqlConnection(Properties.Settings.Default.ServicoConnectionString); SqlCommand cmd = null;
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
LIKE '%" + txtPesquisar.Text + "%'"; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable servico = new DataTable(); da.Fill(servico); tbServicoDataGridView.DataSource = servico; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); }
Clique duas vezes no boto Adicionar Registro e insira o cdigo a seguir://Desabilita o boto excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "") { bindingNavigatorDeleteItem.Enabled = false; }
Volte para o Design(F7) clique duas vezes no boto salvar e digite o cdigo a seguir:try { //Desabilita o boto excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "") { bindingNavigatorDeleteItem.Enabled = false; } //Se os campos estiver preenchido faa if (nomeTextBox.Text != "") { //Mostrar a Data do Cadastro na Hora if (dataDiaTextBox.Text == "") { dataDiaTextBox.Text = DateTime.Now.ToString(); } //Mostrar quem Cadastrou o usuario if (cadastradoPorTextBox.Text == "") { cadastradoPorTextBox.Text = frmLogin.usuarioConectado; } //Executar a aplicao this.Validate(); this.tbServicoBindingSource.EndEdit(); this.tbServicoTableAdapter.Update(this.servicoDataSet.tbServico); MessageBox.Show("Cadastrado realizado com sucesso");
nstutoriais.blogspot.com
Pgina 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); }
Adicionar o mtodo para limpar o formulrio:private void LimparCampo() { idServicoTextBox.Clear(); nomeTextBox.Clear(); descricaoTextBox.Clear(); valorTextBox.Clear(); dataDiaTextBox.Clear(); cadastradoPorTextBox.Clear(); }
Insira o cdigo para preenche um formulrio atravs de uma DataGrid. Clique uma vez na DataGrid tbServicoDataGridView em Events > MouseDoubleClickLimparCampo(); idServicoTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[0].Value.ToString(); nomeTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[1].Value.ToString(); descricaoTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[2].Value.ToString(); observacaoTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[3].Value.ToString(); valorTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[4].Value.ToString(); dataDiaTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[5].Value.ToString(); cadastradoPorTextBox.Text = tbServicoDataGridView.CurrentRow.Cells[6].Value.ToString();
Termina a Tela de Servio:
nstutoriais.blogspot.com
Pgina 39
8. Tela de ClienteMude as propriedades a Seguir: Propriedades Icon Size StartPosition Text Valores Selecione o cone 959; 597 CenterScreen Cadastro de Cliente
Arraste uma GroupBox e adicione os valores nas propriedades: Propriedades Valores Location 12; 35 Size 422; 235 Text Dados Pessoais Na Data Source mude os tipos de Dados(Ex. TextBox, ComboBox) do campo CPF e telefone para MaskTextBox e Estado para ComboBox. Arraste para a GroupBox. Adicione uma groupBox para Pesquisar o Cliente e mude as propriedades a seguir: Propriedades Valores Location 440; 35 Size 496; 69 Text Pesquisar Cliente Adicione os seguintes componentes para dentro da GroupBox: Label Text = Filtrar Por ComboBox Edit Items: Cdigo, Nome e name = cbmFiltrar Label Text = = MaskTextBox Name = txtPesquisar Boto Name = btnPesquisar , Text = Pesquisar Arraste uma GroupBox e adicione os valores nas propriedades: Propriedades Valores Location 440; 110 Size 499; 441 Text Cliente(s) Desabilite o Cdigo, Data de Cadastro, Cadastrado por pela propriedade Enable;
nstutoriais.blogspot.com
Pgina 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:
Arraste uma GroupBox e adicione os valores nas propriedades: Propriedades Valores Location 12; 276 Size 422; 272 Text Servio(s) Prestados:
nstutoriais.blogspot.com
Pgina 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:
O Layout dever ficar assim:
nstutoriais.blogspot.com
Pgina 42
Volte para o Design(F7) e adicione o namespace e duas variveis a seguir.
Volte para o Design(F7) e clique duas vezes no boto Pesquisar. Adicione o cdigo a seguir:try { if (cbmFiltrar.Text == "Cdigo") { //Define a instruo Sql string sql = "SELECT * FROM tbCliente WHERE idCliente =" + txtPesquisar.Text + ""; //L os dados da variavel sql e conectar no cn cmd = new SqlCommand(sql, cn); //Abre conexo cn.Open(); //Define o valor da CommandType para cmd cmd.CommandType = CommandType.Text; /*Representa um conjunto de comandos de dados e uma conexo de banco de dados que so usados para preencher o DataSet e atualizar um banco de dados SQL Server.*/ SqlDataAdapter da = new SqlDataAdapter(cmd); //Representa uma tabela de dados na memria. DataTable cliente = new DataTable(); /* Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de * dados usando o DataTable.*/ da.Fill(cliente); /*A tbUsuarioDataGridView recebe o DataTable usuario*/ tbClienteDataGridView.DataSource = cliente; //Fechar a conexo } if (cbmFiltrar.Text == "Nome") { //define a instruo SQL string sql = "SELECT * FROM tbCliente WHERE nome LIKE '%" + txtPesquisar.Text + "%'"; cmd = new SqlCommand(sql, cn); cn.Open();
nstutoriais.blogspot.com
Pgina 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
Arraste o Componente Timer para o formulrio e nas propriedades mude o seguinte: Enable para True Interval para 32 No event,Clique Duas vezes no Tick e insira o cdigo abaixo:try { //define a instruo SQL string sql = "SELECT * FROM tbOrdemServico WHERE idCliente ='" + idClienteTextBox.Text + "'"; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable os = new DataTable(); da.Fill(os); tbOrdemServicoDataGridView.DataSource = os; } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); }
Clique Duas vezes no boto Adicionar Registro e insira o cdigo abaixo://Desabilita o boto excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "Operador") { bindingNavigatorDeleteItem.Enabled = false; }
Adicione o mtodo a seguir depois do trecho de cdigo do boto Adicionar Registropublic static bool ValidarCPF(string cpf) { // Caso coloque todos os numeros iguais int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 }; int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 }; string tempCpf; string digito; int soma; int resto; cpf = cpf.Trim(); cpf = cpf.Replace(".", "").Replace("-", ""); if (cpf.Length != 11) { return false; } tempCpf = cpf.Substring(0, 9); soma = 0; for (int i = 0; i < 9; i++)
nstutoriais.blogspot.com
Pgina 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); }
Clique duas vezes no boto Salvar e insira o cdigo abaixo:try { //Desabilita o boto excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "Operador") { bindingNavigatorDeleteItem.Enabled = false; } if ((nomeTextBox.Text != "") && (cpfMaskedTextBox.Text != "")) { //Insere a Data if (dataDiaTextBox.Text == "") { dataDiaTextBox.Text = DateTime.Now.ToString(); } //Mostrar o usurio que cadastrou if (cadastradoPorTextBox.Text == "") {
nstutoriais.blogspot.com
Pgina 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); }
Adicione este mtodo para limpar o formulrio:private void LimparCampo() { idClienteTextBox.Clear(); nomeTextBox.Clear(); cpfMaskedTextBox.Clear(); telefoneMaskedTextBox.Clear(); enderecoTextBox.Clear(); bairroTextBox.Clear(); cidadeTextBox.Clear(); estadoComboBox.SelectedIndex = -1; dataDiaTextBox.Clear(); cadastradoPorTextBox.Clear(); }
Clique uma vez no DataGrid do Cliente > Events> MouseDoubleClick e adicione o cdigo a seguir: Para preenche um formulrio atravs do DataGridLimparCampo(); idClienteTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[0].Value.ToString(); nomeTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[1].Value.ToString(); cpfMaskedTextBox.Text = tbClienteDataGridView.CurrentRow.Cells[2].Value.ToString(); telefoneMaskedTextBox.Text =
nstutoriais.blogspot.com
Pgina 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();
Pronto a Tela de Cliente esta pronta.
9. Tela Ordem de ServioModifique os componentes a seguir do formulrio Ordem de Servio: Propriedades Valores Size 505; 630 StartPosition CenterScreen Text Cadastrar OS Insira uma groupBox e mude as propriedades a seguir: Propriedades Valores Location 12; 27 Size 470; 228 Text Dados OS Mude na Paleta Data Sources os tipos de campo de idCliente e idServico para ComboBox., arraste e organize de acordo com o seu jeito. Podendo seguir Como na imagem:
nstutoriais.blogspot.com
Pgina 48
Adicione os seguintes componentes para dentro da GroupBox: Label Text = Filtrar Por ComboBox Edit Items: Cdigo, Nome e name = cbmFiltrar Label Text = = TextBox Name = txtPesquisar Boto Name = btnPesquisar , Text = Pesquisar Adicione uma groupBox e dentro dela acrescente a tabela tbOrdemServico. Clique na seta ao lado e desmarque as opes a Enable Adding, Enable Editing, Enable Deleting, clique em Dock in parente containers e EditColumns: Modifique os nomes de cada coluna a seu gosto:
Clique na comboBox Nome do Cliente na seta : Em Data Sources: Escolha a tabela tbCliente Em Member Value: Escolha a coluna idCliente Em Value Member: Escolha a coluna idNome Em Selected Value: Em tbOrdemServicoBindingSource > idCliente Faa isso com a comboBox Nome do Servio. Clique duas vezes no boto pesquisar e insira o cdigo a seguir:try { if (cbmFiltrar.Text == "Cdigo OS") { //Define a instruo Sql string sql = "SELECT * FROM tbOrdemServico WHERE idOrdem =" + txtPesquisar.Text + ""; //L os dados da variavel sql e conectar no cn cmd = new SqlCommand(sql, cn); //Abre conexo cn.Open(); //Define o valor da CommandType para cmd cmd.CommandType = CommandType.Text; /*Representa um conjunto de comandos de dados e uma conexo de banco de dados que so usados para preencher o DataSet e atualizar um banco de dados SQL Server.*/ SqlDataAdapter da = new SqlDataAdapter(cmd);
nstutoriais.blogspot.com
Pgina 49
//Representa uma tabela de dados na memria. DataTable os = new DataTable(); /* Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de * dados usando o DataTable.*/ da.Fill(os); /*A tbUsuarioDataGridView recebe o DataTable usuario*/ tbOrdemServicoDataGridView.DataSource = os; //Fechar a conexo } if (cbmFiltrar.Text == "Cdigo Cliente") { //define a instruo SQL string sql = "SELECT * FROM tbOrdemServico WHERE idCliente =" + txtPesquisar.Text + ""; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable os = new DataTable(); da.Fill(os); tbOrdemServicoDataGridView.DataSource = os; } if (cbmFiltrar.Text == "Cdigo Servio") { //define a instruo SQL string sql = "SELECT * FROM tbOrdemServico WHERE idServico=" + txtPesquisar.Text + ""; cmd = new SqlCommand(sql, cn); cn.Open(); cmd.CommandType = CommandType.Text; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable os = new DataTable(); da.Fill(os); tbOrdemServicoDataGridView.DataSource = os; } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); }
nstutoriais.blogspot.com
Pgina 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; }
Clique duas Vezes no boto Salvar e digite o Cdigo a seguir:try { //Desabilita o boto excluir para quem tiver nivel de acesso Operador if (frmLogin.NivelAcesso == "Operador") { bindingNavigatorDeleteItem.Enabled = false; } if ((idClienteComboBox.Text != "") && (idServicoComboBox.Text != "")) { if (dataDiaTextBox.Text == "") { dataDiaTextBox.Text = DateTime.Now.ToString(); } if (cadastradorPorTextBox.Text == "") { cadastradorPorTextBox.Text = frmLogin.usuarioConectado; } this.Validate(); this.tbOrdemServicoBindingSource.EndEdit(); this.tbOrdemServicoTableAdapter.Update(this.servicoDataSet.tbOrdemServ ico); MessageBox.Show("Cadastro realizado com sucesso"); } else { MessageBox.Show("Todos os campos so obrigatorio"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { cn.Close(); }
nstutoriais.blogspot.com
Pgina 51
Seu Layout poder ter ficado da seguinte forma:
Insira o mtodo para limpar o formulrio:private void LimparCampo() { idOrdemTextBox.Clear(); idClienteComboBox.SelectedIndex = -1; idServicoComboBox.SelectedIndex = -1; dataDiaTextBox.Clear(); cadastradorPorTextBox.Clear(); }
Adicione o Cdigo para puxar os dados de uma DataGrid para o formulrio:LimparCampo(); idOrdemTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[0].Value.ToString(); idClienteComboBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[1].Value.ToString(); idServicoComboBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[2].Value.ToString(); dataDiaTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[3].Value.ToString(); cadastradorPorTextBox.Text = tbOrdemServicoDataGridView.CurrentRow.Cells[4].Value.ToString();
Pronto o Cadastrar OS est pronto na prxima Parte ser criado a Tela Principal.
nstutoriais.blogspot.com
Pgina 52
10. Tela PrincipalModifique as propriedades a seguir: Propriedades BackgroundImage IsMdiContainer Size StartPosition Text Valores Escolha uma imagem de Plano de Fundo True 1024; 785 CenterScreen Tela Principal
Adicione ToolBox >Menu & Toolbars > MenuStrip. Como na imagem:
Crie um sub Menu para o Cadastro como na imagem:
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:
Adicione o componente chamado ToolBox > ToolStrip. Como na imagem:
Clique na Seta para baixo e adicione 4 Button chamado de: Por enquando o ToolStrip devera ficar assim:
Name Padro
Modificar name Para toolStripButton1 tsbCliente toolStripButton2 tsbServico toolStripButton3 tsbOS toolStripButton4 tsbLogoff
DisplayStyle Image and Text Image and Text Image and Text Image and Text
TextImageRelation ImageAboveText ImageAboveText ImageAboveText ImageAboveText
Text Cliente Servio Ordem de Servio Logoff
Adicione as imagens de cada boto pela propriedade Image: O Seu ToolStrip poder ter ficado assim:
nstutoriais.blogspot.com
Pgina 54
Caso as imagens estiverem pequenas desative(none) a propriedade ImageScaling. Ateno: Essa propriedade desativar o tamanho padro das imagens ser voc colocar uma imagem com resoluo muito grande ira ficar feio, portanto coloque resoluo de ate 32x32 no seu projeto. Arraste o componente chamado ToolBox>StatusStrip. Como na imagem:
Clique na seta para baixo e adicione 5 StatusLabel com as propriedades a seguir
Name Padro toolStripStatusLabel1 toolStripStatusLabel2 toolStripStatusLabel3 toolStripStatusLabel4 toolStripStatusLabel5 O StatusStrip ficara assim:
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
//Mostrar o usurio conectado tsslUsuario.Text = "Usurio: " + frmLogin.usuarioConectado; //Mostra o nome do PC string myHost = System.Net.Dns.GetHostName(); tsslNomePC.Text = "Nome do PC: " + myHost; //Mostrar o IP do usurio System.Net.IPHostEntry myIPs = System.Net.Dns.GetHostEntry(myHost); foreach (System.Net.IPAddress myIP in myIPs.AddressList) { //Mostar o IP tsslIP.Text = "IP: " + myIP; }
Insira o Componente Timer modifique as propriedades (Enable para True e Interval para 1000) e clique duas vezes nele e adicione o trecho de cdigo a seguir://Mostrar a Hora tsslData.Text = DateTime.Now.ToString("HH:mm");
Clique duas vezes no menu Cadastro> Usurio e insira o cdigo abaixo:try { formulario.frmUsuario usuario = null; // form a ser aberto //procura form na relao de forms filhos foreach (Form frm in this.MdiChildren) { //se encontrou inicializa instancia de frmUsuario com o form ja aberto if (frm is formulario.frmUsuario) { usuario = (formulario.frmUsuario)frm; break; } } // se no encontrou na relao, instancia objeto, "seta" form pai e exibe form if (usuario == null) { usuario = new formulario.frmUsuario(); usuario.MdiParent = this; usuario.Show(); } //garante que ele fique em foco caso haja outros forms abertos usuario.Focus(); } catch (Exception ex) { MessageBox.Show("No foi possvel ser conectar ao formulrio devido ao erro: " + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
nstutoriais.blogspot.com
Pgina 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); }
Clique duas vezes no menu Cadastro> Servio e adicione o Cdigo a seguir:try { formulario.frmServico servico = null; foreach (Form frm in this.MdiChildren) { if (frm is formulario.frmServico) { servico = (formulario.frmServico)frm; break; } } if (servico == null) { servico = new formulario.frmServico(); servico.MdiParent = this; servico.Show(); } servico.Focus(); } catch (Exception ex) { MessageBox.Show("No foi possvel ser conectar ao formulrio devido ao erro: " + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
nstutoriais.blogspot.com
Pgina 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
}
Clique duas vezes no toolStrip1 > Cliente e insira o Cdigo:try { frmCliente cliente = null; foreach (Form frm in this.MdiChildren) { if (frm is frmCliente) { cliente = (frmCliente)frm; break; } } if (cliente == null) { cliente = new frmCliente(); cliente.MdiParent = this; cliente.Show(); } cliente.Focus(); } catch (Exception ex) { MessageBox.Show("No foi possvel ser conectar ao formulrio devido ao erro: " + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); }
Clique duas vezes no toolStrip1 > Servio e insira o Cdigo:try { formulario.frmServico servico = null; foreach (Form frm in this.MdiChildren) { if (frm is formulario.frmServico) { servico = (formulario.frmServico)frm; break; } } if (servico == null) { servico = new formulario.frmServico(); servico.MdiParent = this; servico.Show(); } servico.Focus(); } catch (Exception ex) { MessageBox.Show("No foi possvel ser conectar ao formulrio devido ao erro: " + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
nstutoriais.blogspot.com
Pgina 60
}
Clique duas vezes no toolStrip1 > Ordem de Servio e insira o Cdigo:try { frmOS os = null; foreach (Form frm in this.MdiChildren) { if (frm is frmOS) { os = (frmOS)frm; break; } } if (os == null) { os = new frmOS(); os.MdiParent = this; os.Show(); } os.Focus(); } catch (Exception ex) { MessageBox.Show("No foi possvel ser conectar ao formulrio devido ao erro: " + ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); }
Clique duas vezes no menu Cadastro > Sair e adicione o cdigo a seguir:Application.Exit();
Entre no event do Formulario Tela Principal e clique na propriedade FormClosed e adicione o cdigo a seguir:Application.Exit();
nstutoriais.blogspot.com
Pgina 61
Relatrio11. Relatrio ClienteEntre 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
Arraste do ToolBox o componente Table e insira na Body do Relatrio. Como na imagem:
Insira as colunas do Data Sources em Detail. Obseve que ele colocar as labels correspondente em Header. Como na imagem:
nstutoriais.blogspot.com
Pgina 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
O layout ficou assim:
Em Page Header Adicione uma TextBox e coloque o Texto : Cadastro de Cliente. Mude o tamanho do texto, a cor do texto e do fundo pela barra de ferramentas.
O Relatrio esta pronto. Volte para o frmRelCliente, clique no ReportView na seta e selecione Repot1.rdlc Faa como a imagem a seguir:
nstutoriais.blogspot.com
Pgina 66
Faa isso com o Relatrio Servio e Relatrio Ordem de Servio
12. Relatrio ServioSiga o Passo Nmero 12.
13. Relatrio Ordem de ServioSiga o Passo Nmero 12.
Sistema desenvolvido por Natanael Santos. 259.natanael@gmail.com
nstutoriais.blogspot.com
Pgina 67