segunda-feira, 26 de setembro de 2011

Sistema de Contato em Três Camadas C# - Parte II de III


Camada de Negócio

Crie uma nova classe chamada RegraNegocio
Vamos criar os campos privados da classe, conforme a seguir:

  private int codigo;
  private string nome;
  private string endereco;
  private string telefone;





Encapsule os campos, para isso clique no nome do campo (código,nome,endereco e telefone) e Ctrl+R + Ctrl+ E e clique em ok. Conforme a imagem


Feito isso vamos chamar a classe Banco para inserir a regra de negócio.
Banco dal = new Banco();

Criar o método para inserir o contato
  public void InserirContato()
        {
            try
            {
                dal.ComandoSQL("INSERT INTO TBCONTATO(nome,endereco,telefone) VALUES('" + Nome + "','" + Endereco + "','" + Telefone + "')");
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }




Criar o método atualizar Contato
public void AtualizarContato()
        {
            try
            {
                dal.ComandoSQL("UPDATE tbContato set nome='" + Nome + "',endereco='" + Endereco + "',telefone= '" + Telefone + "'where codigo= " + Codigo + "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



Criar o método Excluir Contato
        public void ExcluirContato(Codigo)
        {
            try
            {
                dal.ComandoSQL("DELETE FROM tbContato where codigo= " + Codigo + "");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


Criar o método Preencher DataGridView
public void PreencherDataGrid(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato");
        }


Criar o método para Consultar por Código
public void ConsultarCodigo(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE codigo=" + Codigo + "");
        }


Criar o método para Consultar por Nome
  public void ConsultarNome(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE Nome like '%" + Nome + "%'");
        }


Criar o método para Consultar por Telefone
  public void ConsultarTelefone(DataGridView dgv)
        {
            dal.Consultar(dgv, "SELECT * FROM tbContato WHERE telefone like '%" + Telefone + "%'");
        }



Ok. Finalizamos a camada de Negócio. No Próximo e última parte estaremos desenvolvendo a logica de Apresentação.

Parte I = Clique aqui
Parte II = Clique aqui
Parte III = Clique aqui

domingo, 25 de setembro de 2011

Sistema de Contato em Três Camadas C# - Parte I de III

Introdução

Nos primórdios da computação, quando um aplicativo era executado em uma única máquina, era comum encontrar sistemas monolíticos contendo todas as funcionalidades do aplicativo em uma única grande camada como demonstra a Figura 1, onde sua manutenção e atualização eram extremamente penosas e complexas.


Com o objetivo de se manter diversos aplicativos e uma única base de dados, a arquitetura monolítica evoluiu para uma arquitetura em duas camadas onde a lógica de acesso aos dados estava separada do restante da aplicação, permitindo assim vários programas acessar a mesma base de dados. Apesar desta evolução na arquitetura os sistemas ainda eram potencialmente monolíticos, pois a lógica de apresentação (a interface homem máquina) e a lógica de negócio (algoritmos do sistema) estavam reunidas em uma única camada (Haywood, 2003), como representa a Figura 2.

Com o advento da Internet, esta arquitetura teve que ser alterada, pois o tempo necessário para carregar todos os componentes da regra de negócio no cliente em um aplicativo Web é extremamente elevado, tornando assim o sistema inviável. Devido a esses problemas a arquitetura em duas camadas foi substituída por uma arquitetura em três camadas, como está representado na Figura 3.


A arquitetura em três camadas envolve a separação das funcionalidades usando camadas, com o objetivo de separar a lógica de apresentação, a lógica de negocio e a conexão com o banco de dados (lógica de acesso a dados).
A separação em três camadas torna o sistema mais flexível, de modo que partes podem ser alteradas independentemente. Com o emprego de arquitetura em três, qualquer alteração em uma determinada camada não influi nas demais, desde que o mecanismo de comunicação entre elas permanece inalterado. Isto permite substituir uma camada inteira por outra, independente de que camada seja como mostra a Figura 4, ou que um projeto desenvolvido para web, possa abranger também dispositivos móveis, a partir da inclusão de uma nova camada de apresentação.


Desenvolvimento

 Neste tutorial estaremos desenvolvendo um sistema de contato, com o objetivo de aprender na prática o conceito de três camadas. Na introdução podemos concluir que o conceito de três camadas, tem por objetivo separar a lógica de apresentação da lógica de negocio e da lógica de acesso ao banco.
Vamos entrar criar o banco de dados, neste tutorial vamos usar a Microsoft SQL Server 2008 R2, mas, poderá usar outros SGBD.
Insira o script do banco de dados a seguir:




CREATE DATABASE bdcontato 

-- remova as linhas de cima primeiro. Atenção se não vai da erro 
USE bdcontato 

CREATE TABLE tbcontato 
  ( 
     codigo   INT NOT NULL PRIMARY KEY IDENTITY(1, 1), 
     nome     VARCHAR(130), 
     endereco VARCHAR(150), 
     telefone CHAR(13) 
  ); 
.    

Vamos criar o projeto em c#, utilizando a IDE Microsoft Visual Studio 2010. Para isso clique no menu File > Nem > Project ou Ctrl+Shift+N.

Em Visual C# > Windows > Windows Forms Application.
Em Name = Digite o nome do Projeto. Ex. sisContato


Na aba Solution Explorer, vamos criar duas pastas que vão ficar responsáveis pela lógica de negocio e de acessos a dados.
Parar isso clique com o botão direito Em SisContato > Add> New Folder
e crie as pastas Dados e Negócios.


Conforme a imagem a seguir:



Camada de Acesso a Dados


Crie a classe Banco na pasta Dados e insira o código a seguir:

Criar a Conexão com o banco de dados

public static  string conexao = @"server=.\SQLEXPRESS; Database=bdcontato;Integrated Security=True;";





Como vamos saber a conexão com o banco de dados manualmente?

server= Significa o Servidor do Banco de dados. Geralmente para saber onde esta o servidor, entre no SQL Server e copie o nome do Servidor, conforme a imagem:


Database = Nome do banco de dados, não é necessário inserir a extensão do banco (.mdf);
Esses dois são os mais importantes.
Para isso é indiscutível declarar o namespace para acessar os métodos e classe do banco de dados SQL Server.

using System.Data.SqlClient;



Abrir a conexão com o banco de dados
SqlConnection conn = new SqlConnection(conexao);

Declara o comando SQL, sendo inicializado como vazio (null)
SqlCommand cmd = null;

Criar o método para o comando SQL, que ficar responsável por inserir, atualizar e excluir e utilizar o parâmetro para inserir o comando SQL.
 public void ComandoSQL(string Sql)
        {
            //Abre a Conexão
            conn.Open();
            //Inseri o comando SQL e atribuir a conexão do banco de dados
            cmd = new SqlCommand(Sql, conn);
            //Executa o comando sql
            cmd.ExecuteNonQuery();
            //Fechar a conexão
            conn.Close();
        }

Consulta no banco de dados. Utilizar o parâmetro DataGridView para a exibição dos dados, e outro param entro para o comando SQL.
public void Consultar(DataGridView dgv, string Sql)
        {
            cmd = new SqlCommand(Sql, conn);
            conn.Open();

            //Diz que o comando é uma query(Texto) e não uma StoredProcedure
            cmd.CommandType = CommandType.Text;

            //O SqlDataAdapter serve para ligar os dados que estão num banco de
            //dados SQL Server com os objetos DataSet e DataTable.
            SqlDataAdapter da = new SqlDataAdapter(cmd);

            //representa a estrutura de uma tabela de um banco de dados.
            DataTable cliente = new DataTable();
           
            //Adiciona ou atualizar linhas em um intervalo especificado no
            //DataSet para que correspondam à fonte de dados usando o nome do DataTable, neste caso o 'cliente'
            da.Fill(cliente);

            //Define a Fonte de dados do DataGridView
            dgv.DataSource = cliente;

            //Fechar a conexão com o banco de dados
            conn.Close();

        }


Certo, finalizamos a camada de acesso a dados. No Próximo Tutorial estaremos desenvolvendo a camada de  Negócio.


Parte I = Clique aqui
Parte II = Clique aqui
Parte III = Clique aqui





sábado, 17 de setembro de 2011

Humor

Nesta série, estaremos ser divertido com piadas! É Apenas humor, não se esqueça!




Por que programação é igual a sexo
  • Um erro de cálculo e você tem que proporcionar suporte pelo resto da vida.
  • Quando você começa só termina quando está exausto.
  • É preciso outra pessoa com a mesma experiência para dar valor ao que você faz.
  • Por incrível que pareça, tem gente que se orgulha em não saber como é.
  • Você pode fazer por prazer ou por dinheiro.
  • Se você passa mais tempo fazendo do que vendo TV, as pessoas acham que você é algum tipo de maníaco.
  • Não é um assunto apropriado para refeições em família.
  • Nas escolas públicas não ensinam as crianças a fazer direito, nem sequer explicam nada sobre o assunto.
  • Se você tenta explicar em termos clínicos, não faz sentido algum.
  • Algumas pessoas nascem com o dom para fazer direitinho.
  • E algumas são péssimas e não percebem isso, mesmo que você tente convencê-las elas ainda acham que são ótimas.
  • Existem algumas pessoas esquisitas com práticas bizarras e técnicas com as quais ninguém se sente confortável.
  • Dá pra fazer uma rapidinha durante o almoço.
  • Todos agem como se fossem os primeiros a inventar uma nova técnica.
  • Todos que já fizeram ao menos uma vez sacaneiam os que nunca fizeram.
  • Iniciantes cometem erros e se enrolam, mas sempre acabam dando um jeitinho de chegar ao final.
  • Se ficar muito tempo sem fazer, você sente falta e parece que o negócio vai "subir pra cabeça".
  • Tem sempre alguém escrevendo livros sobre a "maneira certa" de fazer.
  • Não dá muito certo quando você está bêbado, mas você sempre tenta mesmo assim.
  • Ás vezes é mais divertido quando você usa "aparelhinhos e brinquedinhos" caros pra dar uma incrementada na coisa.
  • É muito mais rápido quando você faz sozinho.
  • Quando mulheres ouvem homens falando desse assunto elas se afastam.
  • Se você não toma muito cuidado, alguma coisa sempre acaba "pegando".
  • E depois que dá problema é chato, difícil, e muito embaraçoso resolver.



Referência
http://horaderelaxar.com.br/2009/03/03/porque-programacao-e-igual-a-sexo/




Programadores Matando Dragões e salvando a princesa

Como os programadores matam os dragões…


Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento de dragões em múltiplas camadas.
Escreve vários artigos sobre o framework, mas não mata o dragão.
.NET
Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.(kkkkk! ah tá!)
ASP
Os componentes necessários para levantar a espada são proprietários e caros. Outros tantos componentes proprietários para achar a localização do dragão, e mais outros tantos a localização da princesa. Chama então seu amigo programador de PHP.
C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão. Encontra a princesa, mas a ignora para ver os últimos checkins no cvs do
kernel do linux.
C++
Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender … Mata o dragão, mas trava no meio da ponte por causa dos memory leaks.
COBOL
Chega, olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora de volta ao seu
mundinho.
Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão… Chegando lá descobre que o programa só aceita lagartixas como entrada.
VB
Monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona
durante noites chuvosas…
PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos de complexidade ternária, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica.
PHP
Pesquisa bancos de scripts e acha as classes de construção de espada, manuseio da espada, localização da princesa e dragão. Remenda tudo e coloca umas firúlas próprias.
Mata o dragão e casa com a princesa. Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar e comer os dois.
Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão mostra um videozinho dele matando um dragão … O dragão come ele de tédio.
Smalltalk
Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.
ASSEMBLY
Acha que está fazendo o mais certo e enxuto, porém troca um A por D, mata a princesa e transa com o dragão.
Shell
Cria uma arma poderosa para matar os dragões, mas na hora H, não se lembra como usá-la.
Shell (2)
O cara chega no dragão com um script de 2 linhas que mata, corta, stripa, pica em pedacinhos e empalha o bicho, mas na hora que ele roda, o script aumenta,
engorda, enfurece e coloca álcool no fogo do dragão.
Fortran
Chega desenvolve uma solução com 45000 linhas de código, mata o dragão vai ao encontro da princesa …
mas esta o chama de tiuzinho e sai correndo atrás do programador java que era elegante e ficou rico.
FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bonitinho e funciona, mas por dentro está tudo remendado. Quando ele vai executar o aniquilador de
dragões lembra que esqueceu de indexar os DBF’s.
CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de
rodar recebe um “Bound Error: Array Access” e o dragão come ele com farinha.
ANALISTA DE PROCESSOS
Chega ao dragão com duas toneladas de documentação desenvolvida sobre o processo de se matar um dragão genérico, desenvolve um fluxograma super complexo para libertar a princesa e se casar com ela, convence o dragão que aquilo vai ser bom pra ele e que não será doloroso. Ao executar o processo ele estima o esforço e o tamanho do estrago que isso vai causar, consegue o aval do papa, do Buda e do Raul Seixas para o plano, e então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata 300 homens armados até os dentes, quando
na verdade necessitaria apenas da espada que estava na sua mão o tempo todo.



Referência





Se todos os programadores fossem comparados a caçadores, especificamente caçadores de elefantes, como seria o mundo??? Descubra! 


DBASE: Programadores dBASE caçam elefantes apenas à noite, quando ninguém pode perceber que ainda usam tacapes, paus e pedras. 


C: Recusam-se a comprar os rifles, preferindo adquirir canos de aço e todo o material necessário para construir o "rifle perfeito" a partir do zero - enquanto todos os outros já estão matando elefantes há muito tempo. 


TURBO-PASCAL: Torcem o nariz para os programadores C, mas fazem igualzinho a eles. Como não usam "goto", têm dificuldades extras de locomoção (o que consideram uma vantagem). Os elefantes se livram deles mudando de plataforma. 


FOXPRO: Pegam os rifles que os programadores C jogaram fora e gastam mais tempo aprendendo novas técnicas de tiro do que realmente caçando elefantes. 


CLIPPER: Não caçam elefantes realmente. Eles apenas compram bibliotecas de material de caça, uma após a outra, e gastam anos e anos tentando integrá-las e resolver os conflitos que surgem dessa integração. 


PARADOX: Viajam para a Africa com cópias de scripts de filmes de Hollywood sobre caçadas de elefantes, achando que esse material realmente irá ajudá-los a pegar um elefante. 


ACCESS: Programadores Access não têm experiência prévia em caça a elefantes. No entanto, estão sempre impecavelmente vestidos, com excelente visual. Conseguem enquadrar um elefante perfeitamente, mas sentem falta de um gatilho. Não importa: isso já é 99,9% da solução... 


VISUAL BASIC: Só caçam elefantes se tiverem o VBX adequado. 


RBASE: Programadores RBASE são mais raros do que os elefantes. De fato, quando um elefante vê um programador RBASE, considera-se em seu dia de sorte. 


VISUAL: Programadores visuais apontam para as balas, apontam para os rifles e então apontam para o elefante. Isto simplesmente aborrece os elefantes. O elefante então destrói o mouse, e o programador não pode fazer nada a não ser olhar o elefante ir embora, rindo da cara dele. 


ADA, APL, and FORTRAN: São tão fictícios quanto Papai Noel e Branca de Neve. 


COBOL: Programadores COBOL têm uma profunda empatia com os elefantes e jamais caçariam outra espécie em extinção. 


ASSEMBLY: Criam suas próprias manadas de elefantes, pequenas e mais velozes.



Oração do Programador



Sistema Operacional que estais na memória,
Compilado seja o vosso programa,
Venha à tela os vossos comandos,
Seja executada a nossa rotina,
Assim na memória como na impressora.


Acerto nosso de cada dia, rodai hoje
Informai os nossos erros,
Assim como nós informamos o que está corrigido,
Não nos deixai entrar em looping,
Mas livrai-nos do Bug,
Amém.

Top 20 desculpas de programador


20 ”Verdadeiramente. Isto é muito estranho…”
19 ”Isto nunca aconteceu antes.”
18 ”Isto funcionava bem até ontem.”
17 ”O que? Como isto é possível?”
16 ”Isto deve ser um problema com o seu hardware.”
15 ”Confessa. O que você digitou de errado para travar?”
14 ”Na realidade os dados que você utilizou estão fora de uso.”
13 ”Eu não mexo neste código há semanas!”
12 ”Você deve estar rodando a versão errada.”
11 ”É apenas uma coincidente falta de sorte.”
10 ”Você tem de concordar é impossível testar todas as possibilidades.”
09 ”Este pode não ser o código que eu fiz.”
08 ”Isto funciona, mas nunca havia sido pensado.”
07 ”Alguém deve ter alterado meu código.”
06 ”Você verificou se não tem um vírus no seu computador.”
05 ”Porque você quer fazer isto logo desta maneira.”
04 ”Tudo bem, mesmo que não funcione, aparentemente funciona?”
03 ”Esta versão não é compatível com seu computador.”
02 ”Onde você estava quando o programa estava funcionando?”
01 ”Só sei de uma coisa. No meu computador funciona.”



Piada de Programador



Um engenheiro, um médico e um programador estavam tomando umas e outras num bar quando surgiu uma dúvida sobre qual seria a mais velha profissão do mundo. Imediatamente o médico descartou a prostituição, que era a mais óbvia, dizendo: 
- A profissão mais velha é a medicina. Afinal, se vocês pegarem a Bíblia, verão que Deus fez a mulher de uma costela de Adão, praticando uma cirurgia. 
O engenheiro aproveitou o gancho e disse: 
- Se vocês pegarem a Bíblia verão que antes de ter feito a mulher, Deus fez o Mundo, o que é a mais perfeita manifestação de engenharia de que se tem notícia. 
O programador não agüentou e retrucou: 
- Acho que vocês estão enganados. É a programação. Justamente na Bíblia, que vocês citaram, a primeira frase do primeiro livro, o Gênesis, diz assim: "No começo, era o caos...".

Referência
http://forum.intonses.com.br/humor-f13/piadas-programador-t3432.html




Piada de Programador


Quatro programadores de informática se encontram em horário de almoço e um deles comenta:

- Pessoal, ontem eu vi uma morena... Vocês nem vão acreditar!

- Uau... - Animaram-se os amigos.

- Linda! Com uns pernões dessa grossura... Olhos azuis, seios lindos... Uma beleza!

- Uau! - repetiram eles.

- Começamos a conversar... Papo vai, papo vem... Ela aceitou ir para o meu apartamento!

- Uau!!

- Bebemos um pouco de vinho, nos beijamos e o clima começou a esquentar...

- Uau!!!

- E a parte mais incrível: Ela virou pra mim e disse "Quero te sentir dentro de mim agora!"

- Uauuuuuu!!!

- Então eu tirei a minha roupa e comecei a despir aquele mulherão!

Primeiro a blusa, depois o sutiã, que eu joguei em cima do teclado do meu micro novo e depois...

- Opa! - interrompeu um dos amigos - Você comprou um micro novo? Qual o processador?



Referência
http://www.aspiadas.com/piada-374.html

terça-feira, 2 de agosto de 2011

C# - Apostilas




Livro: Apostila C# - Conceito Básicos


Autor/Editora: Diogo Cezar Teixera Batista


Sinopse: Plataforma .NET, Características do C#, Variáveis, Comando de Seleção, Iteração ou Loop, Operadores, Programação baseada em objetos, Tratamento de erros e exceções, manipulação de arquivos, ADO.NET

Idioma: Português

Livro: C# e .NET - Guia do Desenvolvedor

Autor/Editora: Edwin Lima

Sinopse: Plataforma .NET, Linguagem C#, OOP, Namespaces, Assemblies e documentação usando XML, Windows Forms, ADO.NET, Relatórios, Empacotando um sistema (Criando Setup).

Idioma: Português


 Livro: C# School


Autor/Editora: Faraz Rasheed


Sinopse: C# Language Fundamentsl, Classes and Objects, Inheritance & Polymorphism, Structures, Enumeration, Garbage Collection & Nested Classes, Abstract Classes & Interfaces, Arrays, Collections & String Manipulation, Exception Handling, Delegates & Events, WinForms, ADO.NET, Multithreading

Idioma: Inglês



 Livro: Documento de Programação em C# para Programadores em Java

Autor/Editora: AtendeX

Sinopse: Declaração de variáveis, Controle de Fluxo(Iteração), Classe, Clase Abstrata e Interface( Herança e Interfaces, Métodos e Variáveis, Getters/Setters, ref e out, Exceções, Boas Práticas de Programação

Idioma: Português


 Livro: Introdução Windows Forms


Autor/Editora: Desconhecido


Sinopse: Windows Forms, Namespaces e Classes, Solutions e Projects, Exemplo de Aplicação: Pedra, Papel e Tesoura

Idioma: Português



 
Livro: Introduction to C#


Autor/Editora: Anders Heklsberg

Sinopse: Garbage Collection, Exceptions, Type-safety, Interoperability, Type System, Classes, Structs, Interfaces, Enums, Delegates, Properties, Indexers, Events, Attributes, XML, Statements and Expressions,        

Idioma: Inglês



 Livro: NET Tutorial for Beginners

Autor/Editora: Akila Manian (MVP),Ajay Varghese (MVP),Amit Kukreja, Anand M (MVP),Aravind Corera (MVP),Arvind Rangan, Balachandran, Bipin Joshi (MVP), C S Rajagopalan, G Gokulraj, G Arun Prakash, Gurneet Singh (MVP), Kunal Cheda (MVP), Manish Mehta (MVP), Narayana Rao Surapaneni(MVP), Pradeep, Saurabh Nandu (MVP), Shankar N.S., Swati Panhale, Reshmi Nair.

Sinopse: Getting Ready, Introduction to the .NET initiative and the .NET platform, Code Management, Language Features of C#, Language Features of VB.NET, OOP, Error and Exception Handling, Assemblies and Application Domains

Idioma: Inglês


 Livro: Programando com C# e Visual Studio .NET 2005


Autor/Editora: Herbert Moroni

Sinopse: Variáveis, Métodos e Escopo, Estruturas de Decisão e Repetição, Gerenciando Erros e Exceções, Arrays e Coleções, ADO.NET, Distribuindo Aplicação

Idioma: Português




 Livro: Threading in C#


Autor/Editora: Joseph Albahari

Sinopse: Getting Started, Basic Synchronization, Using Threads, Advanced Topics e Parallel Programming


Idioma: Inglês





segunda-feira, 30 de maio de 2011

Sistema de Ordem de Serviço em C# - SQL Server e Crystal Reports Parte FINAL

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: 


















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:





























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:




















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





















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:

















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


Siga o Passo Número 12.


Siga o Passo Número 12. 
Sistema desenvolvido por Natanael Santos.