Você está na página 1de 11

Crystal Reports - Manual de sobrevivência

Embora já tenhamos abordado temas básicos relacionados ao Crystal Reports


vamos agora procurar aprofundar nosso conhecimento sobre esta ferramenta
tratando de questões que fazem parte da maioria das dúvidas que surgem quando
vamos usar o Crystal Reports. Novamente iremos usar o sistema de perguntas e
respostas . A versão abordada será a 4.6 do Crystal Reports , embora o a versão
atual seja a 8.0 , pois assim estaremos atingindo um maior número de usuários.

Se você instalou o Crystal Reports na versão 5.0 do VB não terá que instalá-lo
novamente quando migrar para a versão 6.0. Se você não instalou , o Crystal
Reports não é instalado automaticamente com a versão 6.0 e você vai precisar
instalá-lo separadamente. Para isto inicialize o arquivo de instalação Crystl32.exe
presente no diretório \COMMON\TOOLS\VB\CRYSREPT no CD 1 do seu VB 6.0

1 - Como Criar Etiquetas no Crystal Reports ?

1- Inicie o Crystal Reports

a. no Menu File selecione a opção New.


b. A seguir selecione na janela - Create New Report - o Expert - Mail Label
c. Na janela - Create Report Expert - clique sobre o ícone Data file ,
selecione o banco de dados com o qual deseja trabalhar e a seguir clique no
botão Add e depois no botão Done.

2- Na aba Fields selecione os campos da tabela para a qual deseja gera as


etiquetas
3- A seguir , na aba Label , você deve selecionar o tipo de etiquetas que pretende
usar (opção Choose Mailing Label Type) , caso a etiqueta que você vai usar não
apareça na relação você deverá criar uma indicando as medidas , selecionando a
opção User Defined Label

4- No Frame - Printing direction - você deve informar a ordem de impressão dos


registros , pode ser "Across then Down" pois as etiquetas serão impressas na
ordem horizontal.

5- No Frame - Number of Labels - Após você selecionar a etiqueta ou informar as


medidas aqui deverá aparecer o número de colunas que você tem em Across Page
e quantas etiquetas tem em cada coluna. Se os valores não conferirem com o da
sua página verifique as medidas .

6- No frame - Page Margins - Você pode definir as margens das páginas

7- No frame - Label size - Tome cuidado aqui se você for criar as suas próprias
medidas. Informe em
Width = largura da etiqueta (em centímetros) e em Height = altura da etiqueta
(em centímetros)

8- No frame - Gap between labels- Você informa o espaço entre uma etiqueta e
outra nos sentidos horizontal e vertical.

9- Para visualizar o relatório clique no botão Preview Report .

Obs - Voce deve configurar a impressora na opção Selecione Printer Setup do


menu File indicando a impressora a ser utilizada, lembrando que na configuração
da impressora deve estar selecionado o tamanho do papel a ser utilizado, pois o
Crystal faz a leitura do setup da impressora para formatar o relatório.

10- No menu File selecione a opção File Set label layout e verifique se o número
de etiquetas por página (number of labels) se está de acordo, pois quando você
está definindo as medidas o Crystal não atualiza este campo. Se estiver ok,
continue em frente senão altere as medidas até encontrar o número correto.
Volte para a tela padrão do relatório.

11- Ao visualizar o relatório você tem acesso somente à área esquerda do relatório
(como se fosse uma etiqueta). Os campos devem estar na ordem que você quer
que apareçam na etiqueta. Feito isto selecione preview e verifique se a página está
aparecendo corretamente (porém lembre-se que WYSIWYG (What you see is what you get) não
funciona no Crystal Reports). O que você está vendo pode não ser exatamente o que você
terá.
Bem a esta altura só falta imprimir e verificar , ajustando quando necessário. Se
você tiver problemas
vamos ver alguns pontos que devem ser verificados.

a) Se você estiver usando o driver Genérico/Texto , verifique se você colocou


mas medidas corretas do papel e ainda se está configurado para com ou sem
quebra de página.

b) O tipo de fonte utilizado também influi no resultado final (Usar a fonte-padrão


da impressora pode aumentar a velocidade)

c)Se puder, mande imprimir em impressora laser ou jato de tinta que o resultado
deverá ser melhor.

d)Verifique ainda a versão que você está usando do Crystal Reports.

2 - Como imprimir por extenso no Crystal Reports ?

A resposta a essa pergunta é dada pelo próprio pessoal da ETZ , a distribuidora do


Crystal no Brasiil. (Eu pessoalmente não testei.)

"Já está disponível no Brasil a função que irá permitir os usuários Crystal Reports a
imprimir valores por extenso em português, isto é possível através da CRXLATE.DLL
(16 Bits) ou da CRXLAT32.DLL (32 Bits), para se fazer o extenso, basta copiar a
DLL correspondente ao seu ambiente no lugar da DLL que têm o mesmo nome
desta, ela deve estar localizado ou no \WINDOWS\SYSTEM ou no
\WINDOWS\CRYSTAL.

Após feito isto, basta entrar no Crystal, criar uma fórmula e usar a função
ToWords(número). Qualquer dúvida, contate o Suporte Crystal."

Download da versão 16 bits da DLL de extenso em português


ExtPor16.exe
(CRXLATE.DLL)
Download da versão 32 bits da DLL de extenso em português
ExtPor32.exe
(CRXLAT32.DLL)

3 - Considerações Sobre Uso de Impressoras com Crystal


Reports

É importante entender como Seagate Crystal Reports trata os ajustes de


parâmetros de impressoras. Quando seu relatório estiver carregado, vá para o
menu Arquivo (File) e escolha Configurar Impressora (Printer Setup).

Esta tela de diálogo é a que controla como e onde um relatório irá imprimir. É
importante se levar em conta que algumas destas funcionalidades irão mudar como
outro usuário (um cliente) imprime o mesmo relatório.

A primeira coisa a se verificar nesta janela é ONDE o relatório irá ser impresso, que
impressora ele irá usar. Isto é controlado pela caixa "Nome da Impressora (Printer
Name)".

Se o projetista do relatório escolher a Impressora Padrão do Sistema (System's


Default Printer), evidenciada pela linha dizendo Impressora Padrão Pronta ("Default
Printer Ready"), então o relatório irá tentar imprimir na impressora padrão do
cliente (se ele tiver alguma selecionada).

Se o relatório não for designado para a Impressora Padrão, então ele é considerado
um relatório de Impressora Específica (Specific Printer),e tentará ser impresso na
impressora do cliente com o MESMO NOME da impressora usada na máquina do
projetista original. Então, se esta impressora não for achada, o relatório irá ser
impresso na Impressora Padrão do Cliente.

A Segunda seleção mais importante nesta tela é o checkbox "Propriedades Padrão


(Default Properties). Se esta caixa estiver CHECADA, então o relatório será
impresso usando as Propriedades da Impressora Padrão do Cliente, NÃO as
propriedades que você tenha especificado nesta tela (tipo de papel, fonte de papel,
orientação de página). Se esta opção estiver NÃO CHECADA, o relatório irá tentar
forçar as configurações que você tenha especificado (tipo de papel, fonte de papel,
orientação de página), na impressora do cliente.

Uma vez que a impressora do cliente suporte TODAS as configurações, o relatório


será impresso de maneira similar à da impressora do desenvolvedor. Se, no
entanto, alguma destas configurações não for suportada pela impressora do cliente,
o relatório irá usar as Propriedades Padrão da impressora do cliente.

A melhor regra a seguir é: Se você estiver querendo forçar o tipo de papel, fonte
de papel (bandejas) ou orientação de página na impressora do cliente, então
SEMPRE DEIXE NÃO CHECADA a caixa Propriedades Padrão.

4- Como fazer a Justificação de textos no Crystal

A opção de justificar texto não está disponível na Barra de Ferramentas, mas ela
existe. Basta clicar com o botão direito do mouse, com o cursor sobre o campo que
se queira justificar (campo Memo, por exemplo), e então escolher a opção Format
Field (Formatar Campo).

Dentro desta opção deve haver uma sessão chamada Alignment (Alinhamento).
Ajuste então para Default (Padrão), ou Center (Centrado) / Left (Esquerdo) / Right
(Direito).

5- Como eu posso saber as definições usadas em um


determinado relatório ?

Várias vezes nos deparamos com a necessidade de saber exatamente quais os


campos, fórmulas, tabelas usados no relatório. O Crystal Reports fornece um
relatório completo da montagem do relatório, através de:

1-clique na função de menu Exportar Relatórios

2-escolha Report Definition

3-por fim escolha entre imprimir ou gravar em arquivo.

6- Inserindo somente uma vez o controle CrystalReports no


seu projeto ?
Você pode , e deve , incluir somente uma única vez o controle CrystalReports em
seu projeto. Para usar o controle nos formulários do projeto basta fazer referência
ao controle indicando a localização do controle. Assim se você inseriu o controle
CR1 no formulário form1 e quer usar o controle no formulário form2 basta usar a
sintaxe:

Form1.CR1. ReportFileName = "Relatório.RPT"

Fazendo assim você usa somente um único nome para o seu controle Crystal em
todo o projeto.

7-Usando as funções de conversões de dados no Crystal .

O Crystal fornece algumas funções para conversão de dados. Vejamos as mais usadas.
(Para ver todas leia o Help )

1. ToNumber(x) : Converte um texto informado no argumento x em um número.

Você geralmente usa esta função quando quer converter um campo definido como texto
para um formato numérico. Por exemplo:

ToNumber("45.21") retornará o número 45,21

ToNumber("123.45") = 123.45

ToNumber({file.AcctNo}/2) = 22144 para {file.AcctNo} = 44288

ToNumber({file.ZIP}) < 33333 = TRUE para {file.ZIP} = 21385

2. ToText(x) : Converte o número x para o formato texto

ToText(12345) retornará "12345" e ToText(45.21) retornará "45"

3. ToText(x,n) : Converte o número x para o formato texto usando n casas


decimais. Assim temos:

ToText(12345.6789,2) retornará "12345,68" e ToText(12345.6789,0) retornará


"12346"

A função arrendonda o número conforme o numero de casas decimais definido.

4. ToWords(x): Converte um número informado no argumento x num texto por


extenso ( em inglês :-( )

ToWords(12345) retornará twelve thousand three hundred fortyfive and

5. ToWords(x,n): Converte um número informado no argumento x usando n casas


decimais num texto por extenso.

ToWords(12345.5000,0) retornará twelve thousand three hundred forty six ( observe o


arredondamento)
6. NumericText(x): Verifica se o conteúdo do argumento x , um texto , é um
número. Se o conteúdo for um número a expressão retornada será YES caso
contrário será NO. Assim:

NumericText({file.Reference}) = NO para {file.Reference} = "ABCDEFG"

NumericText({file.IDNUM}) = YES para {file.IDNUM} = "12345"

NumericText ({file.IDNUM} [1 to 5]) = YES para {file.IDNUM} = "12345443"

NumericText({file.IDNUM}) = NO para {file.IDNUM} = "12345T"

8 - Como selecionar uma impressora que não a padrão no


Crystal ?

Basta acrescentar as seguintes linhas de código no seu código para imprimir o


arquivo.

With CrystalReport1
.ReportFileName = "X:\caminho\relatorio.rpt"
.PrinterDriver = "Epson24.drv"
.PrinterPort = "LPT1"
.PrinterName = "Epson - Matricial"
.Action = 1
End With

• ReportFileName - localização e nome do relatório que deseja imprimir


• PrinterDriver - O nome do driver da impressora para qual deseja imprimir
• PrinterPort = A porta para impressão
• PrinterName = O nome da impressora
• Action = dispara exibição do o relatório.

9 - Como enviar relatórios do Crystal pela Internet ?

With CrystalReport1
.Destination = crptMail
.EMailMessage= " Aqui você coloca a sua mensagem ou relatorio"
.EMailSubject="Assunto"
.EMailToList ="macoratti@riopreto.com.br"
.Action = 1
End With

• Destination - por assumir os seguintes valores:


1. Window - envia o relatório para uma janela
2. Printer - envia o relatório para a impressora
3. File - envia o relatório para um arquivo em disco
4. EMail (via MAPI) - envia o relatório para outra pessoa na rede via
MAPI Email. O relatório é anexado.
5. EMail (via VIM ) - nvia o relatório para outra pessoa na rede via MAPI
Email (cc:Mail)
• EMailMessage - Define o texto da mensagem que vai aparecer no corpo do
EMail
• EMailSubject - Define a linha do subject
• EMailToList - Define o nome na lista para quem você quer enviar o
relatório. (Para mais de um destinatário você deve usar virgulas para
separar.)

10 - Como horas no formato correto no Crystal Reports ?

Você vai ter que configurar o Crystal para fazer isto.

• No menu - File | Report Options - desmarque a opção - "Convert Date-


Time to Date". Pronto !!!

Agora as datas do seu relatório serão transformadas em strings no formato


"YYYY/MM/DD hh:mm:ss"

E daí ( você deve estar se pergurtando !!! ) . Bem agora basta você extrair a hora
usando a função de substring do Crystal: Assim:

{Tabela.hora}[12 to 16] - Isto irá extrair os dados a partir da posição 12


até a 16 . Justamente a hora no formato hh:mm.

11 - Extraindo subcadeias de strings/campos no Crystal


Reports ?

O crystal Reports possui o operador subscript que permite a extração de


subcadeias de strings da mesma forma que a função Mid$. Sua sintaxe é a
seguinte:

x[n] onde: x é a string ou campo e n é o número da posição na string que


desejamos extrair

Assim: "Visual Basic"[1] obtém a primeira letra da cadeia Visual Basic , ou


seja , a letra V

"Visual Basic"[8] retorna a letra B

O operador admite também a seguinte sintaxe:

x[n to m] onde extraimos uma subcadeia de x iniciada em n e terminada em m

Ex: "Visual Basic"[1 to 7] => irá retornar a cadeia Visual

O operador pode ser utilizado para extrair partes dos campos das tabelas de um
banco de dados . Assim para uma tabela chamada clientes onde temos o campo
nome armazenando o nome do cliente podemos fazer:

{Clientes.Nome}[1 to 20] => isto extrairá os 20 primeiros caracteres do nome


do cliente armazenado

Se quisermos imprimir somente os clientes cujo nome iniciem com a letra A ,


podemos fazer:
if {Clientes.Nome}[1]="A" then
{Clientes.Nome}
else
...

12 - Como formatar campos no Crystal Reports ?

Este é um velho e (des) conhecido problema para quem usa o crystal reports (pelo
menos nas versões mais antigas). Como posso exibir o camo cep, telefone, cgc, cpf
, etc.. formatado no meu relatório no crystal reports ?

A resposta é simples : Utilize as formúlas do Crystal. Como ? Vamos mostrar a


seguir:

Vamos supor que você quer exibir o campo telefone que esta armazenado no seu
banco de dados sem formatação ( geralmente armazenamos os campos sem formatação). Se
você inserir o campo diretamente no Crystal ele irá exibir o campo do jeito que
você armazenou :-( .

Para contornar o problema vamos utilizar uma fórmula para formatar o campo no
padrão de exibição desejado.

Você tem a tabela clientes com os campos : codigo, nome , telefone.

O campo telefone armazena o código de área da cidade e o número do telefone da


seguinte forma:

CCNNNNNNNN - onde CC é o código de área da cidade e NNNNNNNN o número


do telefone . Você tem os seguinte valores armazenados para este campo:
1196701212 e 1702245521. Você quer exibir o telefone no relatório no seguinte
formato: 11-9670-1212 e 17-0224-5521. Se você usar o campo diretamente no
Crystal irá obter o seguinte:

Vamos usar uma fórmula para exibir o campo no relatório no formato desejado.

• Carregue o relatório no Crystal e no Menu Insert selecione Formula Field


• Informe o nome para a fórmula e clique em OK
• Agora usando o operador subscript vamos separar as subcadeias desejadas
e montar a cadeia no formato desejado. A fórmula fica assim:

{socios.TELEFONE}[1 to 2] + "-" + {socios.TELEFONE}[3 to 6] + "-" +


{socios.TELEFONE}[7 to 10]
• Clique no botão Accept e insira a fórmula no local desejado. Veja o
resultado final:

Dependendo do seu campo a fórmula será diferente mas a maneira é sempre a


mesma. (Eu estou usando a versão 4.6 do Crystal Reports)

13 - Imprimindo em outras impressoras que não a padrão .

Para imprimir em uma impressora que não seja a padrão você pode usar
propriedade PrinterName em conjunto com as propriedades PrinterDriver e
PrinterPort. Se você definir estas três propriedades corretamente o Crystal
imprime na impressora definida caso contrário ele usa a padrão.

Sintaxe: PrinterName
[form.]Report.PrinterName[= PrinterName$] Ex: Report1.PrinterName=
"Epson LQ850"

Define a impressora Epson LQ850

Sintaxe: PrinterDriver
[form.]Report.PrinterDriver[= DriverName$] Ex: Report1.PrinterDriver =
"Epson24.drv"

Define o driver da impressora para Epson24.drv

Sintaxe:PrinterPort
[form.]Report.PrinterPort[= PortName$] Ex: Report1.PrinterPort=
"LPT1"

Define a porta LPT1

Veja um exemplo de código para fazer este serviço :

CrystalReport1.PrinterPort = "LPT1"
CrystalReport1.PrinterDriver = "Epson24.drv"
CrystalReport1.PrinterDriver = "Epson LQ850"
CrystalReport1.action = 1

14 -

vai continuar... ;-)

Você também pode gostar