Crystal Report: How can i merge and split rows in details section - crystal-reports

Hi i am new to stack overflow, and I am having a problem in crystal report.
Thank you in advance
I am getting output from database like
Name Qty Rate Amount
Mango ice cream 1 100 100
Chocobar 1 150 150
Zulubar 1 50 50
Chocolate cone 1 50 50
Kulfi 1 100 100
ABC 1 100 100
XYZ 1 50 50
Total:- 600
Now what I want to do is merge first three raw and split on 3rd raw.
I want the output to look like this
Name Amount
Mango ice creame, Chocobar, Zulubar 300
Chocolate cone, Kulfi, ABC 250
XYZ 50
Total:- 600
How can I do this?

Assuming your requirement is static and no dynamic is involved. Follow below process:
Create 3 detail sections, detailA, detail B and detail C
Create a formula #First place it in detail A.
Local Numbervar var_Mango_ice_creame;
Local Numbervar var_Chocobar;
Local Numbervar var_Zulubar;
Shared Numbervar total;
if Name='Mango ice creame'
then var_Mango_ice_creame:= Amount;
if Name='Chocobar'
then var_Chocobar:= Amount;
if Name='Zulubar'
then var_Zulubar:= Amount;
total:=total+var_Mango_ice_creame+var_Chocobar+var_Zulubar;
var_Mango_ice_creame+var_Chocobar+var_Zulubar;
Similarly create 2nd formula #second place it in Detail2
Local Numbervar var_Chocolate cone;
Local Numbervar var_Kulfi;
Local Numbervar var_ABC;
Shared Numbervar total;
if Name='Chocolate cone'
then var_Chocolate cone:= Amount;
if Name='Kulfi'
then var_Kulfi:= Amount;
if Name='ABC'
then var_ABC:= Amount;
total:=total+var_Chocolate cone+var_Kulfi+var_ABC;
var_Chocolate cone+var_Kulfi+var_ABC;
Create 3rd formula #Third place it in Detail C
Local Numbervar var_XYZ;
Shared Numbervar total;
if Name='XYZ'
then var_XYZ:= Amount;
total:=total+var_XYZ;
var_XYZ;
Create 4th formula Display and place in report footer.
Shared Numbervar total;
total;

Create a formula field to be used for grouping purposes:
// {#grouper}
Ceiling(RecordNumber/3)
Add a group on this field.
Create a manual, running-total field:
// {#reset}
// place in group header; suppress
WhilePrintingRecords;
Stringvar Array reset;
Stringvar Array values;
values := reset;
// {#increment}
// place in details; suppress
WhilePrintingRecords;
Stringvar Array values;
Redim Preserve values[Ubound(values)+1];
values[Ubound(values)] := {table.name_field};
// {#display}
// place in group footer
WhilePrintingRecords;
Stringvar Array values;
Join(values, ", ");

Related

Crystal Reports Suppress Group If Field Does Not Change

I want to suppress a group if a field does not change within that group. Here is a screenshot of my example data (the two red-boxed fields showing the groups that have the unchanging field):
As you can see the two groups, reservation_number 10002 and 10014, should be suppressed as their amount field does not change.
Ideally the above screenshot should become this:
Please note that there can be more than two amount rows in a group.
Follow below process
Create a formula #Initialize and write below code and place in group header
Shared numbervar counter;
counter:=0
Create one more formula count and write below code and place in detail where you have data rows
Shared numbervar counter;
if PreviousIsNull(amount)
then counter:=counter+0
else if previous(amount) = amount
then counter:=counter+0
else if next(amount) = amount
then counter:=counter+0
else counter:=counter+1
Create one more formula result and place in groupfooter
Shared numbervar counter;
Shared Numbervar counter1:=0;
counter1:=counter;
counter
Go to section expert and supress and write below condition:
EvaluateAfter({result}) ;
Shared numbervar counter;
if counter = 0
then
true
else false
Use below formula for supress of header:
EvaluateAfter({result});
Shared Numbervar counter1;
if counter1 = 0
then
true
else false
Let me know if this works else will suggest other way

concatenate string in crystal report

I have a variable dItemDesc defined in the Group Footer:
whilereadingrecords;
stringvar DispItemDesc;
DispItemDesc := DispItemDesc + "> " + {Command.ItemDesc}
The display for the first record is correct, but following records just continue to concatenate the string. Where / how would I reset the variable to blank?
Create another formula as a reset. Place it at the stage you'd like it to clear out. (Presumably one section below the current Group Footer, or in the Group Header.)
whilereadingrecords;
stringvar DispItemDesc;
DispItemDesc := ""

Simple Crystal Report Formula

I am new to crystal reports.
Here is my data table "PAY_DETAILS".I need to display a "Basic Salary" field in my report.
So I need to check whether the Earn_Type is "CBS" and if it is true then display the CBS amount in the report.How to write this formula.
Amount Earn_Type
--------------------------------
6,789.00 ER006
2,300.00 ER007
7,890.00 ER009
88.00 ER003
88.00 ER004
48,850.00 CBS
8.00 ARS
I tried creating a formula field and drag it to report.But it displays nothing.Below is my formula.
numberVar salAmount ;
if({PAY_DETAILS.EARN_TYPE}="CBS") then
salAmount= {PAY_DETAILS.AMOUNT};
use := instead of equal when assigning a value
numberVar salAmount ;
if {PAY_DETAILS.EARN_TYPE} = "CBS" then
salAmount := {PAY_DETAILS.AMOUNT};

crystal reports formula field select row with minimum value

i have following data :
Name Amount
================
Amit 18000
Ajay 19500
Bharat 16100
how do i print the name with lowest amount in the report footer.
i tried the following formula
if {table.amount} = minimum({table.amount}) then
'Lowest Vendor - ' + {table.name}
above formula returns a blank value.
I need this in Crystal Reports not in RDBMS.
Take a local variable and store the value in that and use the variable in report footer.
Shared Stringvar a;
Shared Stringvar b;
a:=
if {table.amount} = minimum({table.amount}) then
'Lowest Vendor - ' + {table.name}
else '0';
if a<>'0'
then b:=a;
place this formula beside the amount column.
Create another formula and write below formula and place it in footer
Shared Stringvar b;
b

Crystal Report Sum of a Group Summary

I have a report in which I'm trying to sum a summary on one group to another group. Ex:
group 1: 75 <- sum of the maximums
group 2: 50 <- max of the group
line 1: 50
line 2: 40
line 3: 10
group 2: 25 <- max of the group
line 1: 10
line 2: 2
line 3: 25
I've tried using a running total, but can't seem to get that right. I've also tried to put the maximum part into a formula, but Crystal still won't summarize it.
If you absolutely have to have the value in the Group1 Header then I think your only option will be a SQL Expression.
The Group1 Footer would be much easier. The gist is that you can simply keep track of the sum of the maxes with a variable.
//Place this formula in the Group1 Header
whileprintingrecords;
numbervar g1sum := 0;
//Place this formula in the Group2 Footer
whileprintingrecords;
numbervar g1sum;
g1sum := g1sum + maximum({table.value},{table.group2_field})
//Place this formula in the Group1 Footer
whileprintingrecords;
numbervar g1sum;