Você está na página 1de 8

Dicas Crystal Report

1. 2. 3. 4. 5. 6. 7. APRESENTAO DO CONTEDO DO PARMETRO MLTIPLO. ...................................................................... 2 ALERTAS NO RELATRIO........................................................................................................................................ 3 COMO MUDAR DINAMICAMENTE A ORDENAO DE CAMPOS DE UM RELATRIO ................................... 3 COMO REALIZAR DUAS FORMATAES DE CAMPO DIFERENTES PARA O MESMO CAMPO................... 4 COMO AS DIFERENTES OPES 'KEEP TOGETHER' AFETAM O RELATRIO ............................................. 6 PASSAGEM DE PARMETROS ENTRE SUB-RELATRIOS................................................................................ 7 ZERAR VARIVEL ...................................................................................................................................................... 8

16/06/2011

Verso 1

1 de 8

Dicas Crystal Report


1. Apresentao do contedo do parmetro Mltiplo.

Fazendo um relatrio com um parmetro que aceita mltiplos valores e inserindo este campo parmetro no relatrio, no so mostrados todos os valores digitados, apenas o primeiro. Quando se cria um relatrio no Crystal Reports que utiliza um parmetro que aceita mltiplos valores, este parmetro armazena os valores informados no mesmo como um array. Assim, inserindo o parmetro no relatrio veremos apenas o primeiro elemento desta lista. por isto que no so vistos todos os valores digitados. Para vermos todos os valores digitados devemos obt-los atravs de uma frmula. Num relatrio onde h o parmetro mltiplo chamado @Pas, para o qual foram digitados os valores USA, Argentina e China, a aplicao da frmula a seguir nos d o seguinte resultado: USA-Argentina-Chile. Esta frmula utiliza uma funo que mostra os valores separados por um caractere a escolher, neste caso foi utilizado o hfen. Join ({?Pas},"-" ) A variao desta frmula no utiliza o caractere delimitador, o que iria mostrar apenas os valores separados por espaos, USA Argentina Chile: Join ({?Pas}) Uma forma interessante de mostrar estes valores, desde que haja espao suficiente na seo, um abaixo do outro. Assim, ao invs de separarmos os valores da lista com um hfen, podemos separ-los com um <Enter> da seguinte forma: Join ({?Pas}, chr(13)) Neste caso interessante verificar se a opo de formatao "Can Grow" do campo est ativada Outra forma seria a formula abaixo: Formula: @Parametro1 numbervar X; for x:= 1 to count({?X}) do stringvar t:= t & - & {?X}[X]; if length(t)>0 then right(stringvar t, length(t)-1)

16/06/2011

Verso 1

2 de 8

Dicas Crystal Report


2. Alertas no Relatrio

Os alertas so mensagens exibidas para o usurio do relatrio que est realizando uma atualizao (Refresh) no mesmo. Estas mensagens so exibidas de acordo com condies pr-estabelecidas, as quais quando satisfeitas, emitem a mensagem definida pelo autor do relatrio. Os passos a seguir so estes: 1. Acesse o menu Report | Create Alerts... 2. Acesse a opo New 3. Na caixa "Name" digite um nome para o alerta. Este nome identificar o alerta no relatrio 4. Na caixa "Message" digite a mensagem que ser lida pelo usurio do relatrio se a condio do alerta for satisfeita 5. No boto "Condition" digite a frmula que ativar o alerta. possvel criarmos vrios alertas no relatrio e utilizarmos apenas alguns. Portanto, para os alertas que se deseja que estejam disponveis no relatrio necessrio ativar o check box "Enabled". Neste exemplo, a frmula que dever ser digitada na opo Condition : {Orders.Required Date} < today Neste caso quando a data para a qual o pedido est sendo aguardado pelo cliente j tiver passado, ou seja, for menor que a data atual, ser mostrada uma mensagem de alerta. O usurio tem a opo de ver estes pedidos pelo boto View Records, o qual os trar em um tab separado no relatrio
3. Como mudar dinamicamente a ordenao de campos de um relatrio

Para se mudar dinamicamente a ordenao de campos de um relatrio, fazendo-os ficar em ordem crescente ou decrescente, devem ser seguidos os passos abaixo: 1. Criar um parmetro atravs do menu Insert | Parameter Field, dentro do Field Explorer, chamado Ordenao 2. Atravs do boto Set Default Values, na caixa de texto "Select or enter value to add", acrescente os seguintes valores: "Crescente" e "Decrescente" (sem as aspas) 3. Crie duas frmulas para tratar ambas as situaes "Crescente" e "Decrescente": a. Frmula "Crescente" (sem as aspas): i. If {?Ordenao}="Crescente" then {Tabela.CampoDesejado} b. Frmula "Decrescente" (sem as aspas): i. If {?Ordenao}="Decrescente" then {Tabela.CampoDesejado} 4. Ordenar o relatrio atravs do menu Report | Record Sort Expert, baseando-se nas frmulas ora criadas, da seguinte forma: a. Frmula {@Crescente} como 'Sort Direction'=Ascending b. Frmula {@Decrescente} como 'Sort Direction'=Descending
16/06/2011 Verso 1 3 de 8

Dicas Crystal Report

Assim, o campo mencionado nas frmulas ({Tabela.CampoDesejado}) ser ordenado de acordo com a escolha feita pelo usurio quando for mostrado o prompt do respectivo parmetro.
4. Como realizar duas formataes de campo diferentes para o mesmo campo

Campos do Crystal Reports, exceto campos texto, no permitem que sejam feitas formataes de pores de texto separadas. Assim, ao formatar o campo necessrio selecionar o campo e format-lo em sua totalidade. Entretanto, se desejar formatar o campo de formas diferentes deve-se seguir os seguintes passos demonstrados com o uso da tabela Customer e o campo Contact Position, ambos provenientes do banco de dados amostral do Crystal Reports, o Xtreme.mdb. 1. A figura abaixo mostra o campo como est sendo visto atualmente no relatrio:

2.

Como o campo no pode receber formatao separadamente, iremos separar as informaes atravs de duas frmulas. A frmula "A" ir obter a primeira parte do campo e a frmula "B" ir obter a segunda parte

Frmula A: numbervar primeiro_espao:=InStr ({Customer.Contact Position}," ")-1; {Customer.Contact Position}[1 to primeiro_espao] Frmula B: numbervar primeiro_caracter:=InStr ({Customer.Contact Position}," ")+1; //obtm primeiro caractere da segunda palavra numbervar final:= length ({Customer.Contact Position}); //checa o tamanho total do campo

16/06/2011

Verso 1

4 de 8

Dicas Crystal Report


if InStr ({Customer.Contact Position}," ") = 0 then "" else {Customer.Contact Position}[primeiro_caracter to final] //verifica se o campo contm s uma palavra O resultado das frmulas acima, aplicadas aos campos :

Agora se formata cada um dos campos como desejado. Por exemplo:

Insere-se um campo texto na seo Details do relatrio atravs do menu Insert | Text Object e arrastam-se para dentro do mesmo os campos provenientes das frmulas A e B j mencionadas, conforme segue:

O resultado final ser:

16/06/2011

Verso 1

5 de 8

Dicas Crystal Report

5. Como as Diferentes Opes 'Keep Together' Afetam o Relatrio

As opes 'Keep Together' em Crystal Reports so as seguintes: y y y y Keep Together Manter Junto Keep Group Together Manter Agrupado Keep Object Together Manter Objetos Juntos Keep Columns Together Manter Colunas Juntas

Como elas afetam o relatrio? As opes 'Keep Together' esto disponveis para formatar objetos e sees do relatrio. As opes 'Keep Together' afetam como o relatrio mostra um determinado objeto ou seo. Sees de relatrio e objetos de relatrio geralmente usados, que incluem as opes 'Keep Together': A. Report Header / Report Footer, Group Header / Group Footer, Details B. Opes de Grupo C. Subreports, Objetos Texto, Objetos OLE, e Outros Campos de Bancos de Dados D. Cross-tabs Nota: 'Keep Together' no est disponvel para as sees Page Header e Page Footer. Isto por projeto. Cada Page Header e Page Footer j esto projetadas para se manter junto seja na parte de cima, seja na parte de baixo, de cada pgina. A) REPORT HEADER / REPORT FOOTER, GROUP HEADER / GROUP FOOTER, DETAILS Quando a opo 'Keep Together' selecionada, o Crystal Reports mantm o contedo da seo na mesma pgina. Exemplo de Detalhe de Relatrio: y O Group Footer tem 8cm. de altura. y A opo 'Keep Together' selecionada na seo Group Footer. y H apenas 3cm. disponvel no fim da pgina. Baseado nos dados acima, toda a seo Group Footer ir comear na pgina seguinte Nota: No use a opo com a inteno de manter o grupo inteiro junto em uma mesma pgina,
16/06/2011 Verso 1 6 de 8

Dicas Crystal Report


porque desta maneira descrita acima, a seo Details ir para a pgina seguinte e no a seo Group Header. (Para manter um grupo todo junto, use a opo, como descrito em B) GROUP OPTIONS. B) GROUP OPTIONS Para localizar esta opo 'Keep Group Together', siga os seguintes passos: 1. Clique as seguintes opes, dependendo se voc quer inserir um novo grupo ou mudar um grupo existente: a. Insert > Group para insero de novo grupo b. Report > Change Group Expert > Options para mudana em grupo existente 2. Sob o cabealho "Group Options", selecione o check box 'Keep Group Together'. 3. Clique 'OK'. Exemplo de Detalhe de Relatrio: y As sees Group Header, Details e Group Footer so mostradas para cada instncia do grupo. y A quantidade de espao requerida por uma instncia do grupo excede o espao disponvel na pgina do relatrio. Baseado nestas consideraes, toda a instncia do grupo ir comear em uma nova pgina. A instncia do grupo compreende o Group Header, Details e Group Footer. Nota: Se a instncia do grupo for to grande que ocupe vrias pginas, a opo 'Keep Group Together' comea em uma nova pgina e continua atravs de mltiplas pginas, at que a determinada instncia do relatrio seja completada. Se mais de uma instncia do grupo couber em uma mesma pgina, estas instncias sero mostradas na mesma pgina. No use esta opo se voc quiser que cada grupo comece em uma nova pgina. Para tanto, formate a seo Group Footer com a opo 'New Page After' selecionada.
6. Passagem de parmetros entre sub-relatrios

Eventualmente, necessita-se utilizar informaes existentes em um sub-relatrio, para isso necessrio que o mesmo seja enviado para o relatrio principal, j que o mesmo apenas visualizado, como se fosse uma imagem e no uma informao. Para isso proceda conforme abaixo. No Relatrio Principal: Na seo Page Header do relatrio principal, insira o sub-relatrio, o mesmo poder estar totalmente fechado para que no aparea no relatrio;
16/06/2011 Verso 1 7 de 8

Dicas Crystal Report

Crie uma frmula. Ex.: @Receber Shared NumberVar Receber No Sub-relatrio, crie uma frmula e inclua-a no sub-relatrio. Ex.: @Receber Shared NumberVar Receber := {somatrio de um campo}; A frmula no relatrio principal apresentar o resultado da formula do sub-relatrio.
7. Zerar Varivel

Normalmente quando se utiliza Sub-Relatrio e se passa valores para se utilizar no relatrio principal, normalmente necessita-se zerar a varivel (Receber) na troca do agrupamento do relatrio principal. Para isso: 1. Crie uma frmula (@Zera Varivel) com o seguinte contedo: a. Shared NumberVar Receber:=0 2. Crie um novo rodap para o grupo (no relatrio principal) e inclua a frmula (@Zera Varivel) nesta seo.

16/06/2011

Verso 1

8 de 8