Ir para conteúdo
Fórum Script Brasil
  • 0

Cross Tab - Inserir fórmula


Ivana

Pergunta

Prezados preciso de uma ajuda urgente !

Estou tentando inserir um percentual num relatóro cross tab. É um relatório simples, mas só fica disponível em sumário campos, as opções de count, sum, mas n fica disponível a opção de percentual.

Por isso criei um fórmula pra cálculo o percentual, mas mesmo assim, a fórmula n fica disponível pra eu inserir no cross tab.

Please, help-me.

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

vixe, realmente não tem nd a ver. na verdade, pra retornar a porcentagem, quando você for fazer o sum() ou o count() você tem q selecionar a opcao Show as a percentage of. entretanto, olhei aqui e vi q no cross-tab ele não habilita essa opcao ai não da pra fazer o q você quer.

o problema é o seguinte, pra calcular a porcentagem você precisa saber o valor do total maior. e se você usar uma formula q já tenha uma totalizacao dentro, ela não é aceita pra fazer otra totalizacao.

existem possiveis solucoes, mas todas elas tem algum problema, q pode fazer ela não servir pra você.

você pode:

1 - apontar o seu relatorio pra uma consulta (view) do banco de dados q traga junto num campo separado (usando subquery) o total geral q você precisa pra tirar a porcentagem. se esse total tem q ser por grupo pra vc, fica mais complicado mas deve dar.

o problema dessa opcao é: qualquer alteracao q você fizer no selection formula do relatorio, vai estragar toda a conta da porcentagem. nesse caso, se precisar fazer filtro, você vai ter q, ou editar a query da consulta, ou passar os dados dinamicamente pro relatorio (atraves de recordset no visual basic, por exemplo).

2 - usar um subreport em vez de cross-tab. na verdade essa opcao deve ser praticamente inviavel, senao não existira cross-tab, somente subreport.

essa opcao só vai ser possivel se você pode prever quais são as colunas q vao aparecer no cross-tab. exemplo, se você sabe q as colunas vao ser sempre somente "debito" e "credito", ai você pode fazer por subreport.

3 - se o total em q vai ser baseada a porcentagem for o total do relatorio e não do agrupamento, você pode passa-lo por parametro.

4 - umas gambiarras bem ridiculas do tipo criar uma tabela temporaria contendo o total de cada agrupamento levando em conta o filtro e linka-la com a tabela principal.

veja ai se você gosta de alguma dessas opcoes. se a gente pensar um poco, talvez encontra otras tb.

se quiser, meu MSN é rafaelsposito[arroba]hotmail.com, mas não devo entrar logo.

Link para o comentário
Compartilhar em outros sites

  • 0

Exemplo:

1 - Pergunta 1 .....

Idade1 Idade2 Idade3

opcao1 10 35 25

opcao2 20 50 18

opcao3 30 15 7

total 60 100 50

2 - Pergunta 2.....

Idade1 Idade2 Idade3

opcao1 13 35 20

opcao2 23 55 10

opcao3 34 10 70

total 60 100 50

mais ou menos assim, só q ao invés da contagem de questionário de cada um, gostaria do percentual de cada campo.

1 - Pergunta 1 .....

Idade1 Idade2 Idade3

opcao1 6% 35% 25%

opcao2 22% 50% 18%

opcao3 10% 15% 7%

total 100% 100% 100%

Obs.: seria o resultado assim. ´Sei q tem como fazer, mas n sei como. Tento criar fórmulas, mas n dá certo. As fórmulas n ficam disponíveis e no cross tab não tem opção de percentagem, só count, sum, etc...

Link para o comentário
Compartilhar em outros sites

  • 0

ó, pensei numa solucao aqui q num vai ser tão dificil.

é o seguinte, você faz o crosstab dentro de um subreport. e você aponta esse subreport pra dentro de uma view (consulta) q já traga a porcentagem calculada.

na verdade não entendi direito como funciona a sua porcentagem, porque as contas q você passou ai não batem (da onde vem aqueles 6%, 22% e 10%??). e tb não conheco o informix, mas dei uma pesquisada e pelo q vi, ele aceita subquerys. então você pudia tentar ver se um select mais o menos assim funciona:

Select pergunta, opcao, idade, (100 * Count(*) / (Select Count(*) From tabela As b Where a.pergunta = b.pergunta And a.idade = b.idade)) As porcentagem  From tabela As a Group By pergunta, opcao, idade

ai você so tem q montar o seu subreport pondo dentro do crosstab esse campo porcentagem (o crosstab deve pedir q você faca uma totalizacao, ai você poe sum(), apesar de q ele não deve somar nd, porque já vira somado) e deve sair do jeito q você ta querendo. ai é so formatar o campo pra mostrar o simbolo de % no final.

a e note q então, você deve ter no seu report principal um grupo pra cada pergunta. você poria o subreport no group header ou no group footer, e você teria q linkar o subreport com a pergunta atual passando por parametro. se tiver dificuldade nisso, me avisa.

ai se você conseguir acertar a query deve funcionar certinho. veja ai, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada, pela dedicação, viu ?

Sim, esses valores foram aleatórios, foi só pra completar a tabela, rs.

Descobrir que a tabela só aceita fórmulas booleanas q não envolvam cálculo. Até tentei ver se poderia driblar essa operação e fazer outras solucções pra cálculo.

Esta sua opção, vou tentar e qualquer coisa te aviso.

Link para o comentário
Compartilhar em outros sites

  • 0

Kurio, encontrei um doc que mostra uma maneira fácil de fazer, mas minha versão é 8. Qual você usa ?

Vou tentar baixar o Crystal 9, pra ver se consigo.

Set up the report

The report must be grouped on the same fields used in the cross-tab. For

example, if the cross-tab needs to display the PercentOfDistinctCount of the

Customer ID field with a Country row and Region column, perform the

following steps:

1. The first group is based on the cross-tab’s ‘row’ field. On the Insert menu,

click Group. From the top drop-down box select Customer.Country. Click

OK.

2. The second group is based on the cross-tab’s ‘column’ field. On the Insert

menu, click Group. From the top drop-down box select Customer.Region.

Click OK.

3. Insert the field that requires the PercentOfDistinctCount summary to your

details section. On the View menu click Field Explorer. Expand

Database Fields then expand Customer. Add the Customer.Customer ID

field to the Details section.

4. Right-click the Customer.Customer ID field and click Insert > Summary.

From the Calculate this summary drop-down box click Distinct count.

From the Summary location drop-down box click Group #2:

Customer.Region. Select the Show as a percentage of check box and

click Group #1: DistinctCount of Customer ID.

Crystal Reports 9

10/4/2002 3:24 PM Copyright  2002 Crystal Decisions, Inc. All Rights Reserved. Page 4

Create a formula

The next step is to create a formula, which displays the

PercentOfDistinctCount.

1. Create a formula and name it Distinct_Count.

2. From the Report Fields box double-click the Summary field created in the

previous steps. The formula will appear as:

PercentOfDistinctCount ({Customer.Customer ID}, {Customer.Region}, {Customer.Country})

3. Click the Save button then click the Close button.

Create a Cross-tab

The final step is to create a cross-tab to use the formula created in the previous

steps as the summarized field.

1. On the Insert menu click Cross-Tab. The Cross-tab Expert dialog box

will appear.

2. From the Available Fields box move Customer.Country to the Rows box.

3. From the Available Fields box move Customer.Region to the Columns

box.

4. From the Available Fields box move the @Distinct_Count formula, created

in the previous steps, to the Summarized Fields box.

5. Click the @Distinct_Count formula in the Summarized Fields box then

click the Change Summary button. From the Calculate this summary

drop-down box click Maximum.

6. Click the OK button to close the Cross-Tab Expert dialog box then insert

the cross-tab in the Report Header section.

7. Suppress every other section in the report.

Now when the report is previewed, the PercentOfDistinctCount summary in

the cross-tab will appear with correct decimal accuracy.

PercentOfCount Summaries

To correctly display a PercentOfCount summary, summarize a formula field

that displays a value of 1 in the cross-tab instead of summarizing a database

field. When this formula is summed it will display the same total as a count of

the field would return. Unlike a PercentOfCount summary, a PercentOfSum

summary will display correct decimal precision.

Unlike the previous example, the report

does not need to be set up with the

same grouping as the cross-tab in order

to display the correct value.

Crystal Reports 9

10/4/2002 3:24 PM Copyright  2002 Crystal Decisions, Inc. All Rights Reserved. Page 5

Create a formula

The first step is to create a formula, which outputs a value of 1.

1. Create a formula and name it Count. Enter the following:

WhileReadingRecords;

1

2. Click the Save button then click the Close button.

Create a Cross-tab

The final step is to create a cross-tab that uses the formula created in the

previous steps as the summarized field.

1. On the Insert menu click Cross-Tab. The Cross-tab Expert will appear.

2. From the Available Fields box move Customer.Country to the Rows box.

3. From the Available Fields box move Customer.Region to the Columns

box.

4. Add the @Count formula created in the previous steps to the Summarized

fields box.

5. Click the @Count formula in the Summarized Fields box then click the

Change Summary button. The Edit Summary dialog box will appear.

6. From the Calculate this summary drop-down box click Sum.

7. Check the Show as a percentage of check box and, from the drop-down

box click Total: Sum of Customer ID.

8. Select the Column radio button.

9. Click the OK button to close the Edit Summary dialog box then click the

OK button to close the Cross-Tab Expert dialog box.

10. Insert the cross-tab in the Report Header section.

Now, when the report is previewed the PercentOfCount summary in the crosstab

will appear with correct decimal accuracy.

Link para o comentário
Compartilhar em outros sites

  • 0

é, ivana eu uso a 8.5 e aqui as opcoes q ele te fala pra você usar o Show as a percentage dentro do crosstab ou pra adicionar o campo com o PercentOfCount() não existem.

se o 9 tiver essas opcoes, então isso resolve tudo.

sempre gostei do 8.5, sempre achei bem completo, mas essa é uma limitacao bem seria.

mas então ve ai, se você conseguir o crystal 9, você deve resolver esse seu problema.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...