O que é o Crystal Report
O Crystal Report Pro é um programa completo que te ajuda a fazer relatórios, guardá-los em disco e utilizá-los com Base de Dados. O Crystal Report tem a característica de poder ser chamado dentro de aplicações em Visual Basic 5.
Nesta 1ª abordagem usaremos conceitos genéricos de como trabalhar com o Crystal Report em exemplos práticos.
Podemos iniciar o Crystal Report de duas formas, uma é dentro do proprio Visual Basic, outra é directamente do icon de instalação.
A figura que se segue mostra o ambiente de trabalho do Crystal Report.
O Crystal Report contém várias faixas, cada uma das quais com os seus proprios processos e cenário, que podemos alterar de modo a atingirmos os objectivos pretendidos.
Principais faixas:
  • Cabeçalho
  • Rodapé
  • Detalhe
O cabeçalho e o rodapé contém as informações que aparecem no topo e em baixo de cada página do relatório, como por exemplo títulos, numeros de página, data e hora de impressão, etc. Cada página terá assim a sua faixa de cabeçalho e de rodapé.
O detalhe contém os campos de registo da Base de Dados. Pode ter mais que uma linha, mas representa unicamente um registo lógico.

Os Campos do Crystal Report
O Crystal Report reconhece 3 tipos de campos:
  • Campos de Base de Dados
  • Campos de texto
  • Formulas
Os campos de Base de Dados, provêm directamente das tabelas que abrimos quando começamos o Crystal Report. Basta adicionar os campos através de uma lista de campos acessiveis e colocá-los na localização desejada.
Os campos de texto, são campos que contêm informação explicita, que tu queres que apareça no relatório, como por exemplo a data e a hora. Se queremos que estes campos apareçam em todas as páginas teremos que os colocar ou no cabeçalho ou no rodapé.
Os campos tipo formula combinam o resultado dos campos da Base de Dados, de texto ou de ambos. Estes campos são compostos por um nome (seguido do simbolo @), dentro do qual são adicionadas as formulas.
O Crystal Report tem disponiveis várias formulas pré-definidas, assim como funções e operadores que nos permitem construir formulas complexas. Tambem são permitidos a inserção de declarações tipo IF, para testar campos.
Esta janela, é a caixa de diálogo dos campos Formulas, e é constituida por 3 secções:
  • Campos da Base de Dados e ou formulas (1ª Col)
  • Campos de Funções, com uma enorme variedade predefinidas (2ª Col).
  • Operadores, (3ª Col) com todos os operadores lógicos e aritméticos.
Conjugando estas 3 colunas podemos criar formulas complexasde modo a atingir os nossos objectivos.
O nosso 1º relatório
Dissemos na nossa 1ª página que uma das formas de abrir o Crystal Report seria dentro do Visual Basic 5.0, clicando em Add-Ins seguido de Report Designer, como mostra a imagem que se segue:
Para utilizarmos a possibilidade de imprimir através de um Form, um ficheiro do Crystal Report, teremos que adicionar um novo objecto á Toolbox ( Barra vertical que se encontra do lado direito do nosso ambiente de trabalho do Visual Basic 5.0). Como mostra a figura que se segue:
Objecto CrystalReport
Na sequencia de clicarmos em Report Designer, aparece-nos a 1ª caixa de diálogo onde podemos escolher que tipo de relatório queremos elaborar.
Clicamos em Standard porque o nosso objectivo é criar uma lista de amigos, por ordem alfabética, onde podemos consultar quer o telefone, telemóvel. Porque não chamar-lhe uma lista telefónica pessoal.
Na página seguinte iremos seguir os passos necessários á criação dessa lista.

O nosso 1º relatório
Na caixa de diálogo que se segue, clicamos no botão Data File, para escolhermos a Base de Dados com que vamos trabalhar
A imagem seguinte revela-se-nos como o explorador do Windows, onde iremos escolher a pasta que contem a Base de Dados, que criámos aquando do nosso tutorial de Visual Basic.
Depois de seleccionarmos "amigos.mdb", clicamos no botão Done.

O nosso 1º relatório
Na imagem que se segue, já com o separador 4: Sort, activo, vamos escolher "amigos.nome" como campo de ordenação, isto é, a nossa lista irá aparecernos por ordem alfabética.
Neste momento podemos clicar no botão "Preview Report" pois o assistente está apto a dar-nos uma prespectiva ainda que "grosseira" do relatório final. Quando digo grosseira, refiro-me a que é necessário porque a informação é extensa, criar duas linhas para o detalhe e mais uma para separarcada resgisto listado, de forma a que a informação nos apareça mais perceptível.
Na linha de cabeçalho como o fizemos para a linha de detalhe, tambem utilizámos duas linhas com os textos conforme nos vão aparecer na linha de detalhe, e acrescentámos com Insert Text Filed as palavras "Data de emissão :" que colocámos atrás de campo data, "Página :" e mais ou menos a meio da lista o texto "Lista dos meus amigos - Alfabética", como mostra a imagem seguinte.
Podemos e devemos pelo menos melhorar os títulos na faixa de cabeçalhos. Para o fazermos, clicamos com o botão direito do rato e fazemos Edit Text File, abrimos um pequeno "processador de texto" o que nos permite por exemplo colocar a 1ª letra da palavra em maiúsculas.
No exmplo que se segue, alterámos o título da coluna "Estado Civil" para "Est Civil", alem disso colocamo-la dentro de uma caixa. Tambem quizemos que em vez de aparecer as iniciais que corresponderiam a um determinado estado civil, aparecesse uma palavra que identificasse sem dúvida a referida situação.
Atenta nas imagens que se seguem:
Para chegarmos á imagem do lado esquerdo, criámos uma formula a que chamámos EC, e codificamo-la de acordo com as situações possiveis.
As opções dos menus


 OPÇÃO                      FUNÇÃO                  DESCRIÇÃO
New
File
Cria um novo relatório. Apos pedir para seleccionar uma Base de Dados
Open
"
Abre um relatorio já existente (*.RPT)
Save
"
Guarda o presente relatório. Se não existe, pede para que seja atribuido um nome
Save As
"
Guarda o presente relatório com um novo nome
Save Data with Report
"
Guarda o valor dos campos com o relatório
Close
"
Fecha o relatório currente
Print Preview
"
Mostra no ecran o relatório
Preview Sample
"
Mostra o exemplo de um relatório perguntando o numero de páginas a visualizar
Printer
"
Envia o relatório para a impressora
Export
"
Imprime em diferentes formatos (Ex.html)
Mail
"
Envia o relatório por e-mail
Report Definition
"
Imprime as definições do relatório
Printer Setup
"
Mostra as caracteristicas da impressora
Page Margins
"
Permite definir as margens
Options
"
Define por defeito as pastas onde estão as base de dados e onde serão guardados os relatórios
Report Options
"
Define as opções do raletório corrente
Exit
"
Termina o Crystal Report
Undo
Edit
Anula a ultima execução efectuada
Redo
"
Anula a execução anterior
Cut
"
Anula um texto seleccionado
Copy
"
Copia um texto seleccionado para o clipboard
Paste
"
Cola o texto do clipboard
Paste Especial
"
Usa o clipboard do Windows para copiar informação de outra aplicação e colocá-la no relatório presente
Select Fields
"
Permite seleccionar um grupo de campos, para por exemplo executar a mesma tarefa
Formula
"
Para editar uma formula existente
Text Field
"
Para editar um campo de texto
Summary Field
"
Para editar um campo de resumo
Browse Field Data
"
Visualiza a lista de todos os valores possiveis
Show/Hide Section
"
Mostra uma caixa de diálogo onde permite visualizar ou esconder determinada secção
Delete Section
"
Apaga um grupo/secção adicionada ao relatório
Object
"
Para editar um objecto OLE
Links
"
Permite alterar os links para um objecto OLE
Query
"
Para editar uma query, usada para extrair dados de campos SQL
Query Title
"
Modifica o titulo de uma query
Refresh Data
"
Actualiza os campos de um relatório
Database Field
Insert
Selecciona o campo de uma Base de dados
Text Field
"
Cria um campo de texto
Formula Field
"
Cria uma formula
Page Number
Field
"
Mostra no relatório a página corrente
Record Number Filed
"
Mostra a posição do registo na tabela, ordenado no relatório
Group Number Field
"
Permite criar um campo com um numero de grupo
Print Date Filed
"
Imprime a data do dia da impressão
Subtotal
"
Cria uma faixa para um sub-total. Só pode ser usada com campos numéricos
Grand Total
"
Cria uma faixa com um total geral. Como a anterior só pode ser usada com campos numéricos
Summary
"
Insere campos contadores, somas, medias, maximos, minimos, etc.
Group Section
"
Determina o ponto de quebra e total
Group Name Field
"
Contem um texto que identifica cada grupo
Line
"
Desenha linhas
Box
"
Desenha caixas
Picture
"
Insere uma imagem bitmap
Graph/Chart Expext
"
Permite criar um gráfico no relatório
Object
"
Permite inserir um objecto OLE
Report Style
Format
Permite escolher o formato do relatório
Auto Arrange
"
Arranja os campos segundo determinada ordenação
Font
"
Permite alterar a fonte de um campo
Field
"
Permite alterar o formato do campo seleccionado
Borders and Colors
"
Adiciona sombras, cores, etc., aos campos seleccionados
Change Line Height
"
Altera a altura da linha seleccionada
Line...
"
Altera a espessura da linha
Box...
"
Permite modificar os atributos de uma caixa
Picture...
"
Permite alterar a escala de uma imagem
Graph/Chart
"
Permite alterar a imagem de um gráfico
Section
"
Permite atribuir atributos a todas as secções das faixas do relatório
Visual Link Expert
Database
Permite ver e alterar as relações entre as tabelas
Add Database to Report
"
Permite adicionar base de dados ao relatório
Remove From Report
"
Retira uma base de dados do relatório
Set Location
"
Permite determinar o caminho exacto das tabelas da base de dados
Set Alias
"
Pemite criar Alias para as tabelas da base de dados
Verify Database
"
Verifica se as tabelas da base de dados estão actualizadas com as ultimas alterações
Verify on Every Print
"
Se está on, faz a verificação da base de dados em cada impressão
Log On Server
"
Permite ligar ODBC
Log Off Server
"
Permite desligar ODBC
Show SQL Query
"
Verifica o SQL query gerado pelo Crystal Report
Stored Procedures Parameters
"
Reve os procedimentos de detalhe mantidos na fonte SQL
Select Record Expert
Reports
Determina um critério de selecção dos registos
Edit Selection Formula/Record
"
Igual ao menu de selecção de registos
Edit Section Formula/Group
"
Permite um critério de selecção para os grupos
Change Group Expert
"
Permite facilmente alterar os grupos dos campos
Top N/Sort Group Expert
"
Cria relatórios na base de critérios percentuais
Sort Records
"
Especifica a forma como o relatório deve vir ordenado
Search
"
Permite procurar registos segundo determinado critério
Search Again
"
2ª procura
Zoom
"
Permite alterar o tamanho da visualização do relatório no ecran
Refresh Report Data
"
Permite reler os dados da base de dados
Report Title
"
Coloca um titulo no relatório
Set Print Date
"
Permite alterar a data do sistema ou definir o valor do campo data que aparece no relatório



O Cross-tab
O Cross-Tab é um tipo de relatório precioso que nos pode dar informações estatísticas agrupadas de diferentes formas, como por exemplo os valores de venda mensais por cliente.
No exemplo que se segue iremos demonstrar de uma forma simples, com a já nossa conhecida base de dados de amigos, como se faz este tipo de relatório.
Observe a imagem seguinte:
Botão do assistente do Cross-Tab
Clicando neste botão, seguimos os passos normais da escolha da base de dados até nos aparecer uma caixa de diálogo onde definiremos quais os valores que queremos que nos apareçam nas Colunas, nas Linhas e no Detalhe.
Nesta caixa de diálogo, seleccionamos o campo amigos.nome, e arrastamo-lo para o espaço Row, ou clicamos em Add Row, assim como o campo amigos.tm.
Seleccionamos o campo amigos.dtnasc e arrastamo-lo para o espaço Columns, ou clicamos no botão Add Column.
Seleccionamos o campo amigos.dtnasc o arrastamo-lo para o espaço Summarized Field, ou clicamos no botão Set Summarized Field.
Neste campo irá aparecer a quantidade de amigos que fazem anos dentro de determidado mes.
Podemos neste momento clicar no botão Preview Report, para termos uma imagem do relatório que acabámos de elaborar.
Já com a imagem do relatório no ecran, vamos clicar no separador "Design" para dar algum arranjo ao nosso relatório.
Assim clicamos com o botão direito do rato sobre o campo no título data para abrirmos uma caixa de diálogo. Retiramos o valor Year (ano) para espaço assim como o valor Day (dia). No campo Month (mes) seleccionamos MAR. Tudo isto para que nos apareça somente o nome do mes em título e não a data de nascimento.
No detalhe clicamos com o botão direito do rato sobre o campo e seleccionamos Change Format. Nesta caixa de diálogo activamos a Check Box "Suppress if Zero", para que não nos apareça o valor zero, nos meses onde os nossos amigos não fazem anos.
Com este exemplo quizemos somente ilustrar a facilidade de apresentar um relatório estatístico baseado no cruamento de dados.

A impressão através do Visual Basic
Estes relatórios acompanham os nossos projectos de Visual Basic, e dentro do projecto podemos mandar imprimi-los, acrescentando como já vimos o objecto Crystal Report á nossa ToolBox, e porteriormente ao Form dentro do qual queremos que a impressão se efectue.
Daremos de seguida alguns exemplos da forma com isto se processa:
Imaginemos que temos dentro de um Form um botão com a propriedade "Caption" = Imprimir e a propriedade "Name" = cmdimprimir.
vamos escrever um código possivel seguido da explicação que achamos pertinente. As linhas numeradas servem unicamente como referência, e não fazem parte do código Visual Basic
Private Sub cmdimprimir_click()
Dim iResult as Integer
  1. CrystalReport1.SelectionFormula = "{amigos.nome} = & txtnome.text
  2. CrystalReport1.SortFields(0) = "+{amigos.dtnasc}"
  3. CrystalReport1.Formulas(0) = "firma='" & sFirma
  4. CrystalReport1.Formulas(1) = "cabeçalho='" & "Cabeçalho de Página"
  5. CrystalReport1.DataFiles(0) = "c:\projectos\tutoriais\amigos.mdb"
  6. CrystalReport1.CopiesToPrinter = 2
  7. CrystalReport1.ReportFileName = "c:\projectos\tutoriais\amigos.rpt"
  8. CrystalReport1.Destination = 0
  9. iResult = CrystalReport1.PrintReport
                  If iResult <> 0 Then
                       MsgBox CrystalReport1.LastErrorString
                  End If
End Sub
Comentário sobre o código que acabámos de escrever:
  1. O relatório é impresso somente com detalhes onde o campo da tabela amigos seja igual á caixa de texto "txtnome.text" .
  2. A linha de detalhe é impressa com a tabela ordenada pela campo dtnasc.
  3. No relatório é impresso uma string numa variavel nome com o valor de sFirma.
  4. No relatório é impresso uma string numa 2ª variável com o nome cabeçalho.
  5. Esta linha indica o caminho onde está alojada a Base de Dados.
  6. Serão impressas duas cópias do relatório.
  7. Esta linha indica o caminho e o nome do relatório a ser impresso.
  8. Destination=0 indica a visualização no ecran antes de ser reencaminhado para a impressora. Os outros valores possiveis são: 1 - Impressora; 2 - Ficheiro; 3 - Email via MAPI; 4 - Email via VIM
  9. Se a execução da ordem de impressão for diferente de zero, é porque ocorreu uma situação de erro, que será visualizada no ecran.
Os caminhos indicados nas linhas 5 e 7 poderão ser substituidas por strings, contendo os valores respectivos.
Anonymous Anonymous Anonymous

0 comentários:

Postar um comentário

:a   :b   :c   :d   :e   :f   :g   :h   :i   :j   :k   :l   :m   :n   :o   :p   :q   :r   :s   :t

Tudo para design