Desenvolvimento - Visual Basic .NET

Pequeno projeto de controle de pedidos de uma pizzaria em Visual Basic .Net - Parte 5

Quinto artigo. Ao final, teremos um pequeno, porém importante projeto que servirá como base para o desenvolvimento de projetos maiores. É importante que você acompanhe as explicações de todas as partes do código. O objetivo desse material é ser uma referência básica para seus futuros projetos. O modelo de programação está bem baseado no VB6. Existem outros orientados a objeto. Não foi o intuito neste artigo explorá-lo.

por Marcos Roberto de Moraes



Nos artigos anteriores codificamos o formulário de clientes, produtos e um formulário genérico de pesquisa, o qual se pode reutilizar para a pesquisa das demais tabelas do nosso projeto, como a de produtos, por exemplo. Também codificamos o formulário de pedidos de pizza, o primeiro que lidou com a abertura e conexão ao banco trabalhando com quatro tabelas diferentes: clientes, produtos, pedidos e pedidositens.

Neste artigo (parte 5) e no último (parte 6) terminaremos a aplicação criando dois relatórios no Crystal Reports, o relatório simples de telefones de clientes (parte 5), e o relatório de Pedidos (parte 6 -final).

Deixarei como atividade um relatório similar ao final deste artigo, para quem quiser praticar mais.

Formulário de Pedidos:

No artigo passado codificamos o formulário acima, agora precisamos incluir o código para acessar o relatório de pedidos no momento do fechamento onde colocamos um msgbox, informando a continuação do assunto do artigo anterior.

Abaixo, altere o código do botão fechar onde deixei em vermelho:

1) Código do botão fechar comentado.

    Private Sub cmdFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFechar.Click

        Dim data As Date = TxtData.Text

        Dim hora As Date = TxtHora.Text

        "exibe mensagem de sucesso

        MsgBox("Pedido efetuado com sucesso", 16, "Entregar a PIZZA")

        MsgBox("Próxima aula, nesse local, colocaremos " _

         & " rotina para exibir o relatório do pedido criado", 64, "Aviso")

Retire essas linhas sublinhadas e acrescente a linha em vermelho.

        "" aqui acrescente essas duas linhas

        RelPedidos.Tag = TxtIdPedido.Text

        RelPedidos.Show()

        Me.Close()

    End Sub

Essas duas linhas em vermelho serão responsável por passar respectivamente passar o parâmetro de busca (que é o filtro pelo número do pedido) e chamar o formulário que criaremos chamado RelPedidos, que conterá dentro dele o relatório com o pedido do cliente.

Porém faremos isso depois. Agora, vamos aprender a usar o Crystal Reports criando um relatório mais simples, que usa apenas uma tabela, como o de Clientes por exemplo.

Crystal Reports

O Crystal Reports é uma das mais conhecidas ferramenta de geração de relatórios e está integrada ao ambiente do Visual Studio, desta forma temos facilitada a tarefa de desenvolver relatórios para os nossos projetos.

Para exemplificar utilizaremos a nossa aplicação como base para a criação de três relatórios em ordem de dificuldade crescente (se isso fosse possível J).

Preparando o ambiente

Criando um DataSet de conexão que será utilizado apenas para criar os Relatórios.

1) Clique no menu Data – Add New Data Source ... [próxima figura]

2) Selecione Database e clique no botão Next na janela Data Source Configuration Wizard.

3) Na próxima janela selecione o a conexão com o Banco Pizza.mdf e depois clique no botão Next. [veja figura]

4) Dê o nome para a conexão de PizzariaDataSet e clique em [Next >]

5) Selecione todas as tabelas, dê o nome para o DataSet de PizzariaDataSet e clique em [Finish]

6) O Resultado será a apresentação do DataSet de nome PizzariaDataSet na janela do Solution Explorer.

7) Dê um clique duplo sobre o DataSet PizzariaDataSet.xsd, você terá como resultado o modelo lógico do Banco de Dados.


Primeiro Exemplo

1) Vamos Acrescentar no Menu Principal do formulário MdiPrincipal o Item Relatórios, com os seguintes Itens à Lista Telefônica Clientes, à Clientes.

Veja a figura:

1) Agora acrescente uma nova pasta para melhor organização do nosso projeto. Botão direito sobre o nome do projeto – Add – New Folder. Chame essa pasta de Relatorios.

2) Dentro dessa pasta (Relatorios) crie um novo formulário. Dê o nome para ele de “FrmTelefones.vb” e salve.

3) Clique com o botão direito do mouse sobre o nome da Pasta Relatórios e acrescente um novo Item (Add.. New Item...) chamada Crystal Reports. Dê o nome de RptTelefones.rpt. Veja a figura:

4) Clique no Botão ADD, nesse momento você verá a caixa de diálogo chamada Crystal Reports Gallery. No primeiro GroupBox você tem três opções:

1. Using the Report Wizard è assistente para a criação de relatórios com o Crystal Reports, é a opção recomendada para quem está iniciando o uso da ferramenta.

2. As a Blank Report è Como o próprio nome diz, iniciando um novo relatório em branco. Recomendado para os usuários com maior afinidade com a ferramenta, pois toda a configuração deverá ser feita sem guias assistentes.

3. From an Existing Report è A partir de um relatório existente. Inicia um novo relatório com base em um existente.

Nesse grupo selecione a primeira opção.

No segundo GroupBox temos três opções de assistentes. O Primeiro Standard é para um relatório padrão, é o mais utilizado. O Cross-Tab, quando precisamos cruzar linhas e colunas (tipo planilha do excel). E o terceiro é um assistente para a criação de etiquetas de endereçamento, com base em arquivos de dados.

Nesse grupo selecione Standard. E clique em OK.

5) Na próxima janela Standard Report Creation Wizard, clique no sinal [+] a esquerda de Project Data, em seguida novamente no sinal de [+] a esquerda de ADO.Net DataSet, Aparecerá nesse momento o DataSet PizzariaDataSet com o nome das tabelas. Veja a figura:

6) Clique na tabela clientes e em seguida no sinal de > para selecioná-la. E em Seguida clique no botão avançar. Veja a figura:

7) Na próxima caixa de diálogo, você deverá selecionar os campos desejados, selecione conforme a próxima figura e clique em Avançar.

8) Na próxima caixa de diálogo (grouping) vamos selecionar o campo cidade para que fique agrupado por cidade, ou seja, teremos a lista de telefones agrupada por cidade e clique em Avançar. Selecione conforme figura:

9) A próxima janela, summaries, não deve ser mudada, clique em Avançar.

10) A próxima janela, Record Selection, também não deve ser mudada, clique em Avançar.

11) Na janela de Estilos, selecione Standard, mas você poderá depois criar e escolher o estilo ao seu gosto. Agora clique me Concluir.

O resultado deverá ser parecido com a figura abaixo:

Observe que a janela possui algumas Seções e dois Grupos (Cabeçalho de Grupo e rodapé do Grupo). Comentaremos cada uma delas em aula.

Também em aula será explicado como formatar o relatório.

Bom, vamos voltar agora ao projeto e fazer com que o relatório seja apresentado no formulário FrmTelefones.

12) Na caixa de ferramentas arraste o objeto CrystalReportViewer para o formulário FrmTelefones.vb. Conforme figura.

13) Inclua as linhas antes da Classe FrmTelefones:

Imports System.Data

Imports System.data.SqlClient

14) Define a variável pública para a conexão:

Dim conexao As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Pizza\Pizza.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

15) Agora de um duplo clique no formulário e Load do FrmTelefones coloque o código abaixo, que será responsável por carregar o formulário que criamos:

Public Class FrmTelefones

    Private Sub FrmTelefones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        "Primeiro: Define a consulta que preenche

        "um DataSet com o conteúdo da Tabela de Clientes

        Dim queryClientes As String

        queryClientes = "SELECT * FROM Clientes" "Exibir todos os clientes

        Dim clienteAdapter As SqlDataAdapter

        clienteAdapter = New SqlDataAdapter(queryClientes, conexao)

        Dim Ds As DataSet = New DataSet()

        clienteAdapter.Fill(Ds, "Clientes")

        "Criando um novo objeto do tipo do relatório criado (RptTelefones)

        Dim rpt As New RptTelefones

        "Definindo o resultado da busca, como sendo o conteúdo do relatório

        rpt.SetDataSource(Ds)

        "Exibindo os dados no relatório.

        CrystalReportViewer1.ReportSource = rpt

    End Sub

End Class

16) Coloque o código no item clique do menu para chamar o formulário que contém o relatório de telefones.

    Private Sub ListaTelefônicaClientesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListaTelefônicaClientesToolStripMenuItem.Click

        FrmTelefones.Show()

        FrmTelefones.WindowState = FormWindowState.Maximized

    End Sub

Atividade Extra

Crie um relatório com os dados do Cliente. Conforme realizamos com a Lista Telefônica e acesse pelo menu Clientes.

Nota do Maromo: Esse foi o quinto artigo do pequeno projeto “Disk-Pizza”, no próximo encerraremos esta sequencia de artigos. ME DESCULPEM humildemente pela demora, acontece que em dezembro, tirei umas merecidas férias.

Um abraço,

Marcos Roberto de Moraes [Maromo]

Mestrando em Educação

Especialista em Administração de Sistemas de Informação

Marcos Roberto de Moraes

Marcos Roberto de Moraes - Mestrando em Educação (UNISAL)
Especialista em Administração de Sist. Informação (UFLA)
Licenciado Pleno em Informática (UNIMEP)
Professor das Faculdades Santa Lúcia de SI, FATEC e ETEC de Mogi Mirim-SP