Crystal Report show history based only on two field changes - crystal-reports

I’m trying to write a report using the history_table.
I want to know how would I only bring the records only to show a history if only two fields have changed ex (ss.dem1) and (ss.dem2) in the table
If anything else changes like phone or address that are in the table as well to not bring that up or suppress it in the report. I want to see the data only those 2 fields have changed and every time it has changed as a history.
This would be an example of what I'm trying to accomplish.
I also used tried to use a suppression formula but only gave me the last record and not show me the example like I would of like above
not onlastrecord and next(PATID)=PATID and next(ssdem1)=ssdem1
or
not onlastrecord and next(PATID)=PATID and next(ssdem2)=ssdem2
Any help is greatly appreciated.

On the DB side you could do a self-join and only keep the records where one of those items you're interested in has changed, ex:
select WHATEVER
from HISTORY H1, HISTORY H2
where H1.PAT_ID=H2.PAT_ID
and (H1.DEM1 <> H2.DEM1
or H1.DEM2 <> H2.DEM2
etc...)
Or, you could order the report by PAT_ID, then by the date/time of the edit and then suppress the rows where nothing changes, which sounds like what you were trying to do. If you post the exact suppression formula I might be able to see where you were going wrong. Should be something like:
not(onfirstrecord) or
({TABLE.PAT_ID}=previous({TABLE.PAT_ID})
and {TABLE.DEM1}=previous({TABLE.DEM1}) //check all fields you're concerned with for equality
and {TABLE.DEM2=previous({TABLE.DEM2})
and etc...)

Related

Crystal Report create separate report pages based on field value change

Looking for some advice related to data grouping and printing in Crystal Reports.
I'm working with an order confirmation form. Ideally I would create separate report pages based on a specific field value change for the 'warehouse' field. So, if any given line on an order comes from warehouse A, it prints together. Then we'd get a page break, and we'd see the form repeat for any lines coming from warehouse B.
I've inserted a new group for "warehouse" and configured the group as 'New Page Before.' But when I attempt to print I'm getting an error related to "There must be a group that matches this field". So there must be some pre-existing grouping that I'm not considering. I'm hopeful I can figure this out.
I am interested to get thoughts on overall design, and if the grouping approach I am trying to take is even the correct one.
Somewhere in your report you probably have a formula such as:
Sum({some_value}, {some_field})
where the {some_field} used to be -- but is no longer -- grouped upon.
Fix that expression to set the desired aggregation level (the 2nd argument) to a field you are actually grouping on.

Multiple copies of a record based on formula

Good afternoon,
I am very new to Crystal Reports, so am not sure where to look for this information and would appreciate if someone can point me in the right direction or tell me if what I am asking for is impossible.
One of our departments uses a field called RecordChanges to note changes made to a record. The field is text and the department stores information there about the date a change is made and the type of change, separated by commas (i know this is terribly inefficient, but it's what I have to work with). I have a Crystal Report that parses this text field and picks up the latest date and latest change made to the record. I would like to modify this report to include ALL the changes made to the record, so if the field RecordChanges of the data source has 3 dates, I would like this record to appear in my Crystal Report 3 times, once for each change that was made. How to parse the field I can figure out but where I'm stuck is how do I make the number of times a record appears equal to the number of dates found which is my {#DateFound} field?
There is a lack of details, but as far as I understood the problem and assuming that you did state in the comment that "there wouldn't ever be more than 5 changes to an order", here is a first try to tackle the situation.
I will assume that you already have a formula that "parses this text field and picks up the latest date and latest change made to the record". And that you know how to adjust this formula to pick up each of the record changes. I will name this formula as {#Parser1}.
Based on {#Parser1}, create other 4 formulas: {#Parser2}, {#Parser3}, {#Parser4}, {#Parser5}. As you probably presume, each formula must be changed to parser the Nth occurrence of the record change.
Create 5 details sections.
Put each formula in each detail section.
Suppress the detail section wich formula is null or empty.
That's it.
The limitation is that you can have at most 5 record changes.
This is an awkward solution, but it is necessary (as far as I know) since Crystal Reports works based on your data rows. It iterates over the rows, but cannot "generate" more rows by itself. If you can manipulate the data source, you can create other solutions.
You still need to do the magic trick to pickup the Nth change from the text.

Crystal Reports XI - Group not returned when adding field which might be null

I'm a very new user of Crystal Reports with no training but with a very light background in programming.
I have been working on a report which should show me some information regarding the order status of parts within my company. I have modified an existing report which had a lot of the information I was looking for and have added several fields containing more information I want to look up (information like stock, delivery date, suppliers and partnumbers). I have one last field I want to add to the report, which shows me the name of the supplier where the part is ordered.
Problem:
When I add this field in the report, the groups where there is no information for this field disappear. When I remove the same field again, the missing groups return.
I have tried to look everywhere for an option or function which suppresses a group when a field is null but can not find anything. I also have tried to add an isNull function to return a certain value when the field is empty, but with no results. Unfortunately I can't review the returned values because the group has disappeared when I add the field.
This problem might have to do with the fact I started working from an existing report, but I have not been able to find a reason to believe so.
Update
I have made some pictures showing the problematic result and the SQL-Query (I can only link to the folder in Onedrive because I'm not allowed to post more than two links at the same time):
http://1drv.ms/1J1enHj

Crystal Reports remove duplicate sections

I am trying to remove duplicated sections of a report. currently I am using the previous() function to do this however I am finding that this removes all references to the field passed into this function. I still want to retrieve the first section it comes across.
Thanks
In Section expert, choose the right section (Details I do suppose) click the Formula button close to the Suppress field;
Then type (you can drop field name from available fields)
{...yourfield}=previous{...yourfield}
(this mean that this section will be suppressed if some field, i.e. "id" is identical to previous one)
I would be careful doing the previous() I've used this in the past and noticed it sometimes doesn't display any of the repeated data including the original data until I found a way around it.
Instead try using a unique field for the group but also make sure your table relationships(joins) are set up correctly to reflect what data you want to return.
For example (I'm with education) so I deal with learners and qualifications.
If I want to display learner qualifications I would do it as follows:
Relationship - Learner ---> L_Quals
Create a group, grouped by Learner.learnerID
Create another group, grouped by L_Quals.QualRef
Suppress the details section
Now this will display like this:
LearnerID
-Qualref1
-Qualref2
If I was to show the qualifications in the details section and had other tables linked up this could get a little messy with repeating qualrefs and such
Hope this resolves

Crystal Reports 2008: field shows as blank even when data is returned from the database?

Issue
I have a report in CR 2008 that I inherited from someone else
A sub-report in the report pulls its data from a database view
A field exists, "TRANSCBFLAG" in the view -- it's a string with values of "Y", "N", or "D"
The view has these values
The report displays every other value, but not this one field.
Attempted Resolutions
Suppression attribute? -- No, it's unchecked
Field type issue? -- No, it's a string
Font and background? -- No, it's black font / white background
Suppression / formatting formulas? -- no formulas on display or suppression in subreports or report
Space constraints? -- stretched the field out below all other fields -- still shows as blank
Check to make sure Crystal can see the data -- right-clicked field, select "Browse Field Data", and it came back with the three potential values. So, it can see them in the DB at least, and potentially even in the fields itself.
Just a local Crystal Issue? -- No; I uploaded the report to Business Objects XI for a test and all fields still display except that one.
Question
Where in the process could I be going wrong? It shows when I run the view directly from the database, and every other field shows perfectly in Crystal the first time.
I would assume you did 'Verify Database' but if not that's the first thing I would have tried.
And just a piece of advice... always, always, always run your reports off of a command you write yourself instead of using Crystal's GUI to let you select tables/views/procs. This allows you to make pretty much any kind of change to the query you want and even completely change the source from where your data is coming without wiping all your report controls away. If the modified query has the same field names it will always work seemlessly and if not it will give you a chance to redirect which fields are supposed to come from where. Otherwise... you will have to recreate everything as you just experienced.
There may be a more correct answer, but in a pinch, removing the view from my report (thus removing all fields), adding the view again, and redoing all fields caused the field to display correctly. Not sure how or why.
A further explanation would be appreciated, but for now, that's all I've got.
I had the same issue on a new report I'd created and finally found that the issue was in one of the parameters I used in my command SQL - it had double }} at the end. Eliminating one of the }s allowed the query to return data.
That said, go over the SQL in your database expert with a fine toothed comb, and you'll likely find the issue!