|
|
|
|
|
Dicas
|
|
Visual Basic (Crystal Reports)
|
|
|
Título da Dica: Como criar um running total manual para uma linha de um Cross-Tab?
|
|
|
|
Postada em 6/10/2003 por ~Ð@®£@Ñ
Refere-se a: Crystal Reports 9
Problema
No Crystal Reports (CR) 9, é possível criar um running total manual que incrementa baseado nos valores de uma linha do Cross-tab?
Solução
No CR 9, há uma propriedade de formatação, 'Display String', que pode ser utilizada para criar uma fórmula running total manual num cross-tab.
Criando um Running Total Manual num Cross-Tab ----------------------------------------------
==================== OBS:
Este exemplo está baseado no banco de dados Xtreme database (Xtreme.mdb) que é instalado como um exemplo com o CR. Ele utiliza as tabelas Customer e Orders. ====================
1. Vá no menu 'Insert' e clique em 'Cross-Tab'. A caixa de diálogo 'Cross-Tab Expert' aparece.
2. Na caixa 'Available Fields' destaque 'Customer.Country' e mova-o para a caixa 'Rows'.
3. Na caixa 'Available Fields' destaque 'Orders.Order Date' e mova-o para a caixa 'Columns'.
4. Clique no botão 'Group Options' a seguir na caixa 'Columns' e a caixa de diálogo 'Cross-Tab Group Options' irá aparecer. A partir da caixa drop-down 'The column will be printed:' clique em 'for each year'. Clique no botão 'OK' para fechar a caixa de diálogo 'Cross-Tab Group Options'.
5. Na caixa 'Available Fields' destaque 'Customer.Last Year's Sales' e mova-a para o caixa 'Summarized Fields' duas vezes.
• A primeira instância deste campo mostra a soma. • A segunda instância deste campo será formatada para mostrar o running total manual.
6. Clique no tab 'Customize Style' e sob 'Summarized Field', selecione 'Horizontal'.
7. Clique no botão 'OK' para fechar a caixa de diálogo 'Cross-Tab Expert'. Coloque o Cross-tab na seção Report Header.
8. No cross-tab, clique-direito no segundo campo sumário e clique em 'Format Field'.
9. No tab 'Common', clique no botão 'X+2' perto de 'Display Text'.
10. Digite a seguinte fórmula na caixa de diálogo 'Format Formula Editor':
global numbervar RowNumber; global numbervar RunningTotal; global numbervar array SummaryValues; global datetimevar ColumnValue;
if GridRowColumnValue ("Orders.Order Date") <> ColumnValue then RowNumber:=0; ColumnValue := GridRowColumnValue ("Orders.Order Date"); RowNumber := RowNumber + 1; RunningTotal := 0; Redim Preserve SummaryValues[DistinctCount({Customer.Country})]; RunningTotal := SummaryValues[RowNumber] + ToNumber(CurrentFieldValue); SummaryValues[RowNumber] := RunningTotal; ToText(SummaryValues[RowNumber],0)
==================== OBS:
"Orders.Order Date" é o alias dado para o campo Order Date. O alias para um campo pode ser encontrado na caixa 'Functions' na caixa de diálogo 'Format Formula Editor' sob 'Formatting Functions' > 'Row or Column Names'. ====================
11. Clique no botão 'Save and close' para fechar a caixa de diálogo 'Format Formula Editor'. Clique no botão 'OK' para fechar a caixa de diálogo 'Format Editor'. Atualize o relatório.
Um running total manual será mostrado agora no cross-tab.
|
|
|
|
|