Crystal Reports - Básico e Revisitado
Estou tratando aqui da versão
4.6 do Crystal Reports . Esta versão vinha junto com o VB4 , VB5
e VB6. No VB6 a instalação não era feita junta com a instalação
do VB e você tem que procurar no CD do VB e fazer uma instalação
a parte.
O crystal Reports facilita muito a vida de quem precisa gerar
relatórios mas tem os seus percalços como o problema dos
arquivos de registro e dos arquivos de distribuição. Cansei de
receber emails sobre problemas relacionadas com estes problemas.
Portanto se você quer usar Crystal Reports (a partir daqui
apenas CR , tá bom) tem que ter ele instalado corretamente e com
as dll´s e arquivos de dependência atualizados , senão...
Não é preciso ser um especialista para usar o CR para gerar relatórios
basta saber algumas das suas propriedades principais e ter uma noção
de normalização de dados.
Abaixo seguem as principais propriedades do CR que eu publico aqui mais uma
vez...
ACTION
CR.Action = 1
Na verdade, essa não é uma propriedade, mas um método. Essa
linha irá imprimir seu Relatório
DATAFILES(0)
CR.DataFiles(0) = App.Path & "\relatorio.mdb"
Indica o caminho do banco de dados usado no relatório.
COPIESTOPRINTER
CR.CopiesToPrinter = 3
Se o destino do relatório for a Impressora, serão impressas 3 cópias
do seu relatório.
DESTINATION
CR.Destination = x
Especifica
para onde deve ser enviado o relatório, conforme a tabela
abaixo:
0 - Tela: Relatório será exibido somente em sua tela.
1 - Impressora: Seu relatório será impresso na impressora
especificada pelo sistema.
2 - Arquivo: Seu relatório será gravado em um arquivo.
PRINTFILENAME
CR.PrintFileName = App.Path & "\Report\CNTR.TXT "
Especifica
que se o destino do relatório for um arquivo, ele deve gravar o
relatório em um arquivo chamado CNTR.TXT, localizado no subdiretório
"Report", que por sua vez está dentro do diretório
onde foi instalado o programa.
REPORTFILENAME
CR.ReportFileName = App.Path & "\Report\OPEN.RPT "
Indica
com qual relatório o controle deve trabalhar.
SELECTIONFORMULA
CR.SelectionFormula = "{Tabela.Campo} = 'Valor'"
Esta propriedade, juntamente com a propriedade
"Formula", é uma das mais importantes ao se trabalhar
com o CR. A Selection Fomula irá especificar quais registros
deverão ser impressos. É mais ou menos como uma consulta SQL,
mas com uma sintaxe um pouco diferente. Você poderá inclusive
criar uma SelectionFormula padrão de dentro do seu Crystal
Reports, enquanto estiver criando seu relatório.
Se seu relatório possuir uma SelectionFormula padrão, aí toda
a sintaxe que você inserir na propriedade SelectionFormula do CR
irá somar-se à SelectionFormula padrão do relatório. A única
forma de alterar ou apagar essa fórmula padrão é de dentro do
seu Crystal Reports. Assim como em SQL, você poderá unir vários
critérios através do operador lógico "AND", ou
definir uma ou mais condições que não precisem acontecer
juntas, através do operador lógico "OR".
Não vou explicar aqui como se escrevem SelectionFormulas, vou
apenas dar uma pequena dica, a de como definir datas, já que não
é como em SQL, em que as datas são definidas assim: #29/12/1997#,
aqui você terá de utilizar uma função interna do CRW para
datas, que tem a sintaxe:
Date(Ano,Mês,Dia)
Por exemplo, para imprimir somente os registros onde a Data da
venda for igual ou posterior a 29/12/1997, a
sintaxe fica assim:
CR.SelectionFormula = "{Vendas.DataDaVenda} >=
Date(1997,12,29)"
O exemplo abaixo mostra como trabalhar com intervalo
de datas no Crystal Reports:
Dim DataInicio, DataFinal As String Screen.MousePointer
= vbHourglass |
FORMULA
CR.Formula(x) = "Nome da Fórmula = Nova sintaxe da Fórmula"
Essa propriedade, juntamente com a SelectionFormula, é imprescindível. Vamos
supor que seu banco de dados contenha várias tabelas, cada uma de uma empresa
diferente, mas que tenham nomes de Campos comuns. Ou então que você deseje
imprimir alguma coisa diferente a cada vez que o relatório é impresso.
Quando você cria seu relatório, você insere vários campos de
fórmulas. Também não vou ensinar aqui como se escrevem fórmulas,
vou apenas ensinar a modificá-las a partir do seu CR.
Na sintaxe, X é um número que representa sua fórmula
dentro do array das fórmulas. Na verdade, você pode especificar
qualquer número, desde que siga a ordem: 0 para a primeira fórmula
alterada, 1 para a segunda, 2 para a terceira e assim vai... O
nome da fórmula não está amarrado a nenhum tipo de matriz de
controle. Você deve tomar cuidado apenas de escrever uma nova
sintaxe correta. O simbolo @ não deve ser usado ao especificar o
nome da fórmula.
As fórmulas não são alteradas fisicamente, após a impressão
todas voltam a normal. Se quiser imprimir novamente com fórmulas
diferentes, você terá de especificar novamente as novas
sintaxes. Não é possível criar novas fórmulas com essa
propriedade, apenas modificar as já existentes.
CONNECT
CR.Connect
= ";PWD=senha_do_banco_de_dados;"
Usado para trabalhar com banco de dados com senha.
Ex:
CR.ReportFileName =
App.path & "relatorio.rpt"
CR.Connect = ";PWD=senha;"
CR.DataFiles(0) = App.Path & "\relatorio.mdb"
Salvando Dados com seu relatório
Um problema muito comum
encontrado por que esta usando o Crystal Reports é a opção - Save
Data With Report.
Este recurso armazena os dados extraídos na última execução
do relatório com o relatório de maneira que quando o relatório
é aberto ele já mostra os dados.
Quando os dados não mudam tudo bem , esta opção é
aconselhável , mas , quando os dados são alterados com
frequência se você usar esta opção o usuário vai visualizar
no relatório sempre os dados da última execução. Para
contornar este problema , se você não quer usar realmente esta
opção , faça o seguinte:
1- No menu File clique na opção Options...
2- A seguir verifique se a opção Save Data With Report esta marcada , se estiver , desmarque-a. Pronto !!!
Calculando idades
Calcular a idade de uma pessoa pode ser um problema. Geralmente você vai ser basear em uma data, a data de nascimento, armazenada em um banco de dados. (Se você esta pensando em armazenar a idade no seu banco de dados esqueça, fazer isto vai contra todas as regras de um bom modelo de banco de dados)
Vamos supor que você possui uma tabela chamada Clientes e que nesta tabela há o campo nascimento onde você armazena a data de nascimento do cliente.
Então com base nisto , podemos :
Exibir a data de nascimento no ano atual usando a função date:
Date (Year (today), Month (Clientes.Nascimento), Day (Clientes.Nascimento))
Mas e se a pessoa nasceu no dia 29 de fevereiro e o ano atual não é bissexto ?
Neste caso vamos criar uma formula chamada Nascimento . Para criar uma fórmula no menu o Crystal clique em Insert e a seguir em Formula Field e na caixa Formula Name informe o nome da fórmula e clique em OK.
Agora digite o código abaixo e clique no botão - Accept.
Criamos esta fórmula chamada @Nascimento para verificar se a data de nascimento cai em 29 de fevereiro e o ano não é bissexto. Se a condição for verdadeira então basta avançar um dia , ou seja, ir para o dia primeiro de março. Agora para calcular a idade em anos vamos usar a fórmula acima no código abaixo:
Salve esta fórmula com o nome de Idade. |
Temos acima portanto duas fórmulas : @Nascimento e outra chamada @Idade. A fórmula @idade usa a fórmula @Nascimento para calcular a idade em anos.
Nota 1 :
Se você esta usando a versão 4.6 e pretende acessar banco de dados do Access 2000 vai obter a seguinte mensagem de erro:
Error
messages 20535 and 20534
Error detected by database DLL
Database DLL is corrupt
Incorrect session parameters
Você deve atualizar a versão do CR para a versão 7 release 1
ou superior. Você pode também atualizar os drivers
P2bdao.dll, P2irdao.dll
and P2ctdao.dll. para esta versão .
Ou então você pode tentar a seguinte solução:
Nota 2 :
Como instalar o CR para usar com o VB6 ?
Como a partir da versão 6.0 do VB a Microsoft incluiu um gerador de relatórios : Microsoft Data Report Designer .(gerador de dor de cabeça também...) no VB o CR não faz mais parte da instalação padrão do Visual Studio. Então você tem que instalar o CR depois da instalação do VB.
Para instalar o CR faça o seguinte :
1 - Localize o arquivo Crystl32.exe nos CD´s do VB , geralmente ele esta no seguinte caminho: \Common\Tools\VB\CrysRept\Crystl32.exe
2- Em qual CD ele está ? Abaixo um mapa para você tentar achar:
Versão
Disco
-----------------------------------
Visual Basic Professional 1
Visual Basic Enterprise
1
Visual Studio Professional 2
Visual Studio Enterprise
3
3-
Depois que você localizou o arquivo basta executá-lo e você
vai instalar a versão 4.6 do CR.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
|
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: