This is a problem I've managed to come up with a semi-solution for in the past, but I thought someone else might know better.
I have a report in Crystal Reports 10 that is used as an order summary form for a production area. We have standard products that only have one item per code, and then we have kits. A kit will have one primary item, and a secondary item, both of which need their own page in this summary as they go to different areas.
To accomplish this I've taken the normal details area from the report and made a copy of each section. This second set of details sections only shows when a record contains a kit, and they force a new page before them. To the average observer this makes it appear as though there are two separate items on the order, when in reality there is only one.
In my page header there is a flag that needs to show only on these secondary pages. My problem is that there is no special attribute for these second pages that sets them apart from the first page of a record. To make this formatting happen I've created a somewhat effective formula, but it doesn't work in all possible configurations.
The formula is:
(PageNumber = 2
or ({%kit count} = 1 and (PageNumber - 1) = RecordNumber)
or ({%kit count} > 1 and (PageNumber -2) = RecordNumber)) then false
%kit count is just a formula that gets a total count for kit codes in the report.
Currently this works only on a few specific cases. I'm sure there's some kind of pattern in the available values that I could work with, but I'm just not seeing it.
I need to be able to trigger this formula on every second page on a kit. How can I accomplish that?
EDIT: Screenshots as requested. (Brace yourselves)
(Original at http://cl.ly/392f033Y131e3r0l100V)
(Original at http://cl.ly/2x1D0t0W0S0j0F0h0S28)
It's quite hard to fully understand what you're trying to do without a discussion. Here is the solution to what I think you want to do with some made up data:
OrderNo Line Kit Rush
1 1 a 0
1 1 b 0
1 2 NULL 0
1 3 NULL 1
1 4 NULL 1
I create a group based on a formula (pretend OrderNo and Line are varchar so I don't have to cast :)
if {Rush} = 1 then
{OrderNo} & '-Rush'
else if isnull({Kit}) then
{OrderNo} & '-' & {Line}
else
{OrderNo} & '-' & {Line} & '-' & {Kit}
Then in the group header I place all of the stuff you currently have in your page header and enable Repeat Group Header on each Page.
Then finally put my detail in.
Related
Question originally posted in Spanish, on es.stackoverflow.com, by Sebastián Miranda:
I am working with Crystal Report since Visual Studio 2017, I was asked
to make a sum to group, I have 3 options: Credit Notes, Ballot and
Invoice.
The first thing I did was to create a Formula Field with the name
NumberValorCif to convert the ICIF Value that I have to numeric with ToNumber (). I saved this and created another formula field
named SumCIFCredito that has the following code:
If {CobroPorcentaje.TipoDoc} = 'Credit Notes'
then {#NumberValorCif}
else 0
I saved, compiled and ran the application and it worked without any
problems ... but. I wanted to do the same for SumCIFBoleta:
If {CobroPorcentaje.TipoDoc} = 'Ballot'
then {#NumberValorCif}
else 0
But I don't add anything. I'm missing something? or I have to create
another variable.
I hope someone can help me.
Thank you so much
It sounds like you simply need to add the actual SUM of that new formula.
Place the new formula in the detail section, select it, hit the Sigma button to sum it, and elect to generate subtotals for your Grouping level.
I have a report for orders and i would like to add 2 pages at the end of the order. My order is most of the time 1 page, sometimes it will be 2 pages. So I want to add my terms & conditions to the end of it. This terms&conditions is always 2 pages.
I tried to add a text object in the report footer. Than in Section Expert, I select Report footer --> and Check the New Page Before ( I also tried it with the New Page After)
I also suppress the sections that I don't want to appear on the 2 last pages by using : PageNumber > TotalPageCount - 2
As far as this all works, but if I open my report. On the second page of the report you see the beginning of the terms&conditions. On the third page of the report you will see also de terms&conditions. But the second portion of the first page, of the terms&conditions, is also on the second page of the terms&conditions. therefore, there is always a part of the text that is duplicated
For example: my example of terms&conditions exist of 14 points. On the first page of the terms you will see point 1 to point 8. on the second page you will see point 6 to point 10. and on the third page you will see point 9 to point 14
--> Thats very annoying!!
I also tried it to check 'Suppress if duplicated' --> but nothing is changing??
Can someone help me with my problem please??
Place the terms and conditions in sub report and place that sub report in report footer
Right so I'm fairly new to this crystal reports thing and i've been stuck with this for days and can't get my head around it!
i have to produce a report which contains two pages - 1. purchase order and 2. receiving note
report 1. has its own
header
detail
footer
report 2 has distincts header, detail and footer.
the only way i managed to make this happen was to use subreports but they only work in 1 level deep so having the addresses in subreports themselves i can't use this!
Now ive tried creating new groups and all of that but i cant get it to show in different pages
right now i have
header1
header2
details1
details2
footer1
footer2
any ideas of what could i do please?
If you know that page 1 and 2 are always page 1 and 2 (and a page 1 doesn't spill over into the 2nd page pushing the original 2nd page out to the 3rd page) then you can use a formula to change the header based on the page number. Create a new formula and then you can do something like this:
Basic Syntax
If PageNumber = 1 Then
formula = "This is the page header for page 1"
ElseIf PageNumber = 2 Then
formula = "This is the page header for page 2"
End If
That said, I probably would probably stick to using sub reports and use the report headers in those reports to display your unique headings. Using the section expert you can make sure that there is a page break between the two sub reports.
I have 20 columns on report. We have provided user to exclude columns which don't want in report. So we made hidden.
Problem is when I get report then any last column on page gets appeared some part on 1 page & some part on another page.
Can you please help.
hi i hope i understand your question correctly. you want to avoid page breake for a tablix? mark the tablix go to properies and check the PageBreak Options for me tDisabled = True works to render all informations in one page.
if it is still not working check your pagelayout in report --> report properties
also i remember there was a InteractiveHeight Option somewhere that should be set to 0.
I hope some one must have dealt this situation before.
I have a crystal report and on that report I have different sections including headers ,detail and footer. I'm displaying parts related information on details section and description is one of the fields thats being displayed.
So now based on part's description(in detail section)I have to display some text on the page header. So I have to look for part's description for every single part ,and if even a single part has the given description out of all the parts I have to print a message on report header.
My assumption is to use conditonal suppress option at the page header section, but not sure how to check for values from details section at the page header level.
Any help will be highly appreciated.
Thanks
NAF
Here's the way I would approach it.
Create a formula which returns 1 when your condition is met- otherwise 0. For example:
if {table.field} like '*acid*' then 1 else 0;
Then your conditional surpression can sum your new formula- and if the result is 0 it will hide the message.
sum({formula}) = 0
If you want to display it in Report Header then i would use a SQL Expression to conditionally suppres the text you want.
The SQL Expression
(select count(1) from dbo.TABLE where description = 'my_description')
Then in the Suppress formula:
{?SQL_EXPRESSSION} = 0