Crystal Report
-
Upload
langsonsoft251 -
Category
Documents
-
view
390 -
download
6
Transcript of Crystal Report
Crystal Report
Crystal report Feature document Api Maintenance System
Index:Index:....................................................................................................................................................2Insert Filter...........................................................................................................................................3Translations of fields............................................................................................................................3Change color on every sec line.............................................................................................................3Second time.....................................................................................................................................4Suppress data from being showed:.......................................................................................................4IsNull command for date fields............................................................................................................5Count unit in a group............................................................................................................................5Selection of parameter.........................................................................................................................6Variabler...............................................................................................................................................9Crystal Report Variable Types...........................................................................................................10IF:.......................................................................................................................................................11Select a part of a text:.........................................................................................................................11Inset different color on lines:..............................................................................................................11Chart...................................................................................................................................................12Useful Crystal Report Functions........................................................................................................14Change database connection:.............................................................................................................17Tree search for Maintenance object...................................................................................................20Full tree search for Position................................................................................................................26Version number..................................................................................................................................33
23. december 2008 page 2 of36
Crystal report Feature document Api Maintenance System
Insert Filter
Is like *-112-118* All record contain “-112-118”
Translations of fieldsA custom filed must be created first.Insert the formula in the formula workshopEG. (this is the translation in Danish)
select {Work_history.job_type} case 'P' : "Forbyggende" case 'C' : "Afhjælpende planlagt" case 'U' : "Afhjælpende Uplanlagt" case 'B' : "kondition" case 'I' : "inspektion" case 'O' : "Andre"
Change color on every sec line.
Workshop:
if Remainder (RecordNumber,2) <> 0 then Color (239, 235, 222) else crNoColor
23. december 2008 page 3 of36
Crystal report Feature document Api Maintenance System
Second timeDefine a “X-1” field.Workshop:E.G. time ({Log_Work_history.Log-time}\3600, (({Log_Work_history.Log-time} mod 3600)\60),0)
Suppress data from being showed:
Workshop:(“TID” and “Dato” is used because these data change over time and the report need to be validated on the first entry.) The TID and `DATO is put into the report Header or groupe header and set suppressed.
In the workshop of the field is put the command;Shared datetimeVar Dato;dato := {Log_Work_history.Log-date};
On the Group section – use the section expert:
Workshop:
23. december 2008 page 4 of36
Crystal report Feature document Api Maintenance System
Shared numbervar TID;Shared datetimevar DATO;
if DATO < {Transactions_WS.Create_date} thentrueelseif DATO = {Transactions_WS.Create_date} AND TID < {Transactions_WS.Create_time} thentrueElseFalse
IsNull command for date fieldsIf the report must filter on date field that is “empthy”isnull (field) where the field is selected from the table…
e.g{purchase_order.expected_delivery} <= today or (isnull ({purchase_order.expected_delivery}))
Count unit in a group
Insert a summery – select distinct count.
The summery will be shown in the group footer.
Create textbox next to the group and enter the text…Then select the summery and drag it into the textbox.
23. december 2008 page 5 of36
Crystal report Feature document Api Maintenance System
Selection of parameter
Create the Parameters in the Field Explore:
EG.Parameter:
23. december 2008 page 6 of36
Crystal report Feature document Api Maintenance System
Start the Fomula Workshop and enter the criteria of parameters:Etc:{work_history.start_date} > {?Start}and{work_history.start_date} < {?End}
23. december 2008 page 7 of36
Crystal report Feature document Api Maintenance System
Running the report will now show the window for the parameter.
23. december 2008 page 8 of36
Crystal report Feature document Api Maintenance System
Variabler
Dim var As dataype;Global StringVar y;A variable's scope determines which formulas have access to that variable. You can set the scope so that a variable can only be used within the formula it's declared in, or you can make it available to the rest of the report. There are three operators that are used to declare scope:
Local/Dim: The variable can only be seen within the current formula. The variable is private to that formula and can't be used anywhere else in the report. This is the default scope if you don't specify it.
Global: The variable can be seen within any formula inside the same report. Sub-reports do not have access to the variable.
Shared: Similar to Global, but the variable can also be seen within sub-reports alle elemet in the report can use a shared variable.
You can also omit the Global keyword which creates a Global variable by default:StringVar y; // Same as: Global StringVar y;
Dim HireDate As DateShared AffiliateCities() As String
//Formula CGlobal NumberVar x;x := 10;//Formula D//Call the function WhileReadingRecordsWhileReadingRecords;Global NumberVar x;x := x + 1
If Formula C is placed in the Report Header and then Formula D is placed in a detail section, Formula C will be evaluated before Formula D. Formula C will be evaluated once and then Formula D will be evaluated for each record appearing in the detail section. Formula C returns 10. For the first detail record, Formula D returns 11. This is because the value 10 of x is retained from when it was set by Formula C. Formula D then adds 1 to this value, setting x to 11 and then returns 11. For the second detail record, formula D return 12, adding 1 to the previously retained value of x which was 11. This process continues for the remaining detail records.
The call to WhileReadingRecords tells Crystal Reports to re-evaluate Formula D as it reads in each record of the report. Otherwise, since the formula does not contain any database fields, the program evaluates it only once before reading the records from the database. The formula will then return the value 11 instead of 11, 12, 13, ... as the successive records are processed.
23. december 2008 page 9 of36
Crystal report Feature document Api Maintenance System
If the expression x := x + 1 is replaced by x := x + {Orders Detail.Quantity}, you create the effect of a running total based on {Orders Detail.Quantity}, although it is one starting at 10 rather than 0 because of Formula C. In this case, you can omit the call to WhileReadingRecords, since it will automatically occur because the formula contains a database field
Crystal Report Variable Types
BooleanVarNumberVarCurrencyVarDateVarTimeVarDateTimeVarStringVarBooleanVar rangeNumberVar rangeCurrencyVar rangeDateVar rangeTimeVar rangeDateTimeVar rangeStringVar rangeBooleanVar arrayNumberVar arrayCurrencyVar arrayDateVar arrayTimeVar arrayDateTimeVar arrayStringVar arrayBooleanVar range arrayNumberVar range arrayCurrencyVar range arrayDateVar range arrayTimeVar range arrayDateTimeVar range arrayStringVar range array
EKS:In the main reportWhilePrintingRecords;Shared numberVar myTotal1;
23. december 2008 page 10 of36
Crystal report Feature document Api Maintenance System
myTotal1
in the subreportWhilePrintingRecords;Shared numberVar myTotal1 := 0;Shared numberVar myTotal1 := Sum({tt_sub_ac.budget_costs})
IF:
The If command: IF x then Y else Z
EX. Enter a specific PO or return all
if {?Purchase order key} > "" then {Purchase_order.PO_key} = {?Purchase order key} and {Purchase_order_line.Purchase_status} = "O" else {Purchase_order_line.Purchase_status} = "O" and {Purchase_order.PO_key} > "-"
Select a part of a text:
Account from 1 char to where “-“ exist (-1). Return a part of a sting from the beginning to first time the string has a “-“.
Mid ({Spare_part.Account_key}, 1,(InStr({Spare_part.Account_key},"-")-1))
Inset different color on lines:
Background cooler on the section:
if Remainder (RecordNumber,2) <> 0 and count({history_data.rep_key})>0 then Color (239, 235, 222) else crNoColor
23. december 2008 page 11 of36
Crystal report Feature document Api Maintenance System
Chart
If haveing a distinct count in the report you can insert a chart directly in the footer section. The char will automatict select the data
By selecting the char it is possible to change option just as in an EXEL CHAR…
23. december 2008 page 12 of36
Crystal report Feature document Api Maintenance System
Cross-Tab
Insert cross-tab in the header-section or the footer-section
Drag the field that you want to view in the matrix.
E.g
MO DownWorkSupplier RightTransaction –amount Matrix
“Group sort expert” can be used. ( right click in the ”empty field” top left corner)
23. december 2008 page 13 of36
Crystal report Feature document Api Maintenance System
Useful Crystal Report Functions
Truncate(x, #places) Returns a number with extra decimal places removed. Truncate(123.45678, 2) returns 123.45
Round(x, #places)Returns a number rounded to the number of decimal places.Round(123.45678, 2) returns 123.46
Sum(field) Get a sum for the whole report ie a grand total
Sum(field, conditionfield)Get a sum for a particular group of values
Average(field)Get an average for the whole report
Average(field, conditionfield)Get an average for a particular group of values
Maximum(field)Get the maximum value of the field for the whole report
Maximum(field, conditionfield)Get the maximum value in a particular group
Minimum(field)Get the minimum value of the field for the whole report
Minimum(field, conditionfield)Get the minimum value in a particular group
Count(field)Count the number of records for the whole report
Count(field, conditionfield)Count the number of records in a particular group
Length(field)Get the number of characters in a character string.
Trim(field) Return the string field, without leading/trailing spaces
TrimLeft(field) Return the string field, without leading spaces
23. december 2008 page 14 of36
Crystal report Feature document Api Maintenance System
TrimRight(field) Return the string field, without trailing spaces
UpperCase(field) Return the string field converted to upper case
LowerCase(field) Return the string field converted to lower case
ProperCase(field) Return the string field converted to proper case (eg Title Case)
StrReverse(field) Return the string field, with all characters reversed (ie last characterfirst)NumericText(field) Returns true if the string is completely numeric (eg 123.45).Returns false if any part of the string is non-numeric (eg 124.23A)
ToNumber(field) – Converts the field from a string/currency/boolean and returns as anumber
ToText(field) – Convert the field from a number/currency/boolean to a string
ToText(field, places)Convert a number/currency field to a string with a set number ofdecimal places
ToText(field, places, thousands)Convert a number/currency field to a string with a setnumber of decimal places and a character to represent the thousands character
ToWords(field)Convert the numeric field to a word representation eg 123 becomes “one hundred twenty-three”
ReplicateString(string, number)Returns the specified string the number of times ReplicateString(‘xyz’, 3) returns ‘xyzxyzxyz’
Space(number)Returns a number of blank spaces eg Space(10) returns “ “
InStr(string1, string2) Returns the position of string2, inside string1InStr(‘abcdefgh’, ‘de’) returns 4
Mid(string, start, length)Returns a part of a string, from start for a certain number of characters. Mid(‘abcdefgh’, 4, 3) returns ‘def’
23. december 2008 page 15 of36
Crystal report Feature document Api Maintenance System
Left(string, length)Returns the left part of a string to a certain number of characters
Right(string, length)Returns the right part of a string to a certain number of characters
Chr(number)Returns the ASCII character for the number eg chr(65) returns ‘A’
Replace(inputString, findString, replaceString)Replaces the part of inputString that matches findString, with replaceString.Replace(‘abcdefgh’, ‘de’, ‘xy’) returns ‘abcxyfgh’
Date(YYYY, MM, DD)Returns a Date value for the year, month and day numbers passed in.Year(datetime)Returns the year part of a date or datetime value
Month(datetime)Returns the month part of a date or datetime valueDay(datetime)Returns the day part of a date or datetime value
DateAdd(intervalType, number, datetime)Adds the number of intervals (day, month etc) to the datetime and returns the new date. DateAdd(‘yyyy’, 3, CurrentDate) returns the current date plus three years (eg 30/06/2009)
DateDiff(intervalType, startdatetime, enddatetime)Returns the difference between the two dates for the chosen interval.DateDiff(‘d’, {@StartOfYear}, CurrentDate) returns the number of days between 01/01/2006 and 30/06/2006 ie 180)
MakeArray(x, y, z, ….)Returns an array containing all the items enteredMakeArray(‘abc’, ‘123’, ‘xyz’) would return an array with three items in it (one for eachstring).
Switch(expression1, value1, expression2, value2, ……)Evaluates each expression in turn (must be a boolean result), when the criteria for one is satisfied (is true) it returns thevalue which is associated. Switch({Community.Gender} = ‘M’, ‘Male’, {Community.Gender} = ‘F’, ‘Female’, True, ‘Unknown’). Note the last expression is just True, this is a default value for when the other expressions are not satisfied.
IIF(expression, truepart, falsePart)Evaluates the expression (must be boolean result), if true the truepart is returned, otherwise the falsepart is returned. IIF({@Amount} > 0,‘Good’, ‘Bad’)
Previous(field)
23. december 2008 page 16 of36
Crystal report Feature document Api Maintenance System
Returns the value of the field, from the prior dataset recordNext(field)Returns the value of the field, from the next dataset recordIsNull(field)Returns true if the field value is null, otherwise false.
PageNumberReturns the current page number of the report
TotalPageCount Returns the total number of pages in the report
PageNofMReturns eg “Page 5 of 10”
OnFirstRecordReturns true if the current record is the first one of the dataset
OnLastRecordReturns true if the current record is the last one of the dataset
ReportTitleReturns the title of the report as entered in File – Summary Info – Title
Useful Crystal Report Formula snippets{vStudents.Surname} + ‘ ‘ + {vStudents.Preferred} + ‘ ‘ + ToText({vStudents.ID}, 0, ‘’)- Returns a single string containing the surname, preferred name and ID in the correctorder, which can be used for grouping instead of creating a separate group for each field.
Change database connection:
To change the connection in the crystal report.
Start the report: e.g. "Hal-pr" report.
In the menu "DATABASE" / "SET DATA SOURCE LOCATION"
The top windows show the current connection – The lower window show the “new” connectionSelect the ODBC for the database you want to connect to
Select ”UPDATE”
23. december 2008 page 17 of36
Crystal report Feature document Api Maintenance System
23. december 2008 page 18 of36
Crystal report Feature document Api Maintenance System
Select ”Close”
23. december 2008 page 19 of36
Crystal report Feature document Api Maintenance System
Tree search for Maintenance object
How to create a report with tree structure.In crystal report it is possible to create a part of a tree structure.In this example the report will show all transaction for a position and all MO below…
The crystal report use a SQL script to create a “new” table with the tree of data.
Create the report first.
23. december 2008 page 20 of36
Crystal report Feature document Api Maintenance System
Select “Add command” and dobble click.
Create the parameter for the tree start.E.G. position
23. december 2008 page 21 of36
Crystal report Feature document Api Maintenance System
Insert the following command:
with sampleorgchart (MO_key,MO_name, POS_root, Root_MO_key, OrgLevel ) as ( SELECT a.mo_key, a.mo_name, a.POS_key, a.root_mo_key, 0 FROM dbo.maintenance_object a WHERE a.POS_key = ''
UNION ALL
SELECT a.mo_key, a.mo_name, a.POS_key,a.root_mo_key, b.OrgLevel+1FROM dbo.maintenance_object a
INNER JOIN sampleorgchart b ON a.root_mo_key = b.MO_key
)SELECT * FROM sampleorgchartGO
Set your curser between ’’Double click on the parameter to the right
23. december 2008 page 22 of36
Crystal report Feature document Api Maintenance System
The report will now ask for the value...
Create the join between the ”new” table and the table you want data from
23. december 2008 page 23 of36
Crystal report Feature document Api Maintenance System
The report should be ready now..
Create the report as use sally.
23. december 2008 page 24 of36
Crystal report Feature document Api Maintenance System
The report will not take data from the position but from all maintenance object below..
23. december 2008 page 25 of36
Crystal report Feature document Api Maintenance System
Full tree search for Position
How to create a report with full tree structure from a positionIn crystal report it is possible to create a part of a tree structure.
In this example the report will show all transaction for a position (Sydney) and all Pos and MO below…
The crystal report use a SQL script to create a “new” table with the tree of data.
Create the report first.
23. december 2008 page 26 of36
Crystal report Feature document Api Maintenance System
Select “Add command” and dobble click.
Create the parameter for the tree start.E.G. position
23. december 2008 page 27 of36
Crystal report Feature document Api Maintenance System
The SQL command is combined by tree step Delete table full_tree Create temp table full_tree Create the tree (Recusision)
23. december 2008 page 28 of36
Crystal report Feature document Api Maintenance System
drop table Full_tree
SELECTposition.pos_key, position.root_pos_key, maintenance_object.mo_key, maintenance_object.root_mo_key,maintenance_object.pos_key as POS_key_MO
INTO Full_treeFROM positionFULL OUTER JOIN dbo.maintenance_objectON position.pos_key = maintenance_object.pos_key;
with sampleorgchart (POS_key, root_pos_key, MO_key, Root_MO_key, POS_key_MO, OrgLevel ) as ( SELECT a.POS_key, a.root_pos_key, a.mo_key, a.root_mo_key, a.POS_key_MO, 0 FROM dbo.Full_tree a WHERE a.POS_key = ''
UNION ALL
SELECT a.POS_key, a.root_pos_key, a.mo_key, a.root_mo_key, a.POS_key_MO,
b.OrgLevel+1FROM dbo.Full_tree a
INNER JOIN sampleorgchart b ON (a.root_mo_key = b.MO_key or a.root_pos_key = b.POS_key) --INNER JOIN sampleorgchart b ON a.Root_pos_key = b.POS_key --INNER JOIN sampleorgchart b ON a.root_pos_key = b.POS_key
)SELECT * FROM sampleorgchart
23. december 2008 page 29 of36
Crystal report Feature document Api Maintenance System
Set the “curser” in between the ‘’ and double click on the parameter to the rigth.
It is very important that the = {?xxx}
Select OK. (“The command must have a valid data to begin with othervise it will give an error..”)
23. december 2008 page 30 of36
Crystal report Feature document Api Maintenance System
After the command is created it is important to create the Join between the ”new” table and the selected table (normal procedure).
23. december 2008 page 31 of36
Crystal report Feature document Api Maintenance System
23. december 2008 page 32 of36
Crystal report Feature document Api Maintenance System
This is the result of example from the database..
If the parameter should be connected to the list of data in the database it can be don be adding the table and not select a join to it. Then the table can be used to connect to the parameter in the command:
23. december 2008 page 33 of36
Crystal report Feature document Api Maintenance System
23. december 2008 page 34 of36
Crystal report Feature document Api Maintenance System
Version number
Crystal report 11 Release I
Crystal report 11 Release II
23. december 2008 page 35 of36
Crystal report Feature document Api Maintenance System
23. december 2008 page 36 of36