Find it EZ

Location: Local or Network Folders
Host: FINDITEZ-T460P
Path: C:\Users\ken\Documents\Test Cases\en\Samples\Reports\General Business\Order Processing Efficiency Dashboard.rpt

Report Information
    Version:    11.0
    Author:    Copyright © 2004 Business Objects
    Comments:    This report demonstrates the usage of Crystal's Custom Functions feature.
                 
                 The report also utilizes Rich Text Format interpretation.
    Subject:    Custom Functions
    Keywords:    custom functions, parameters
    Printer:    No Printer

Main Body

    Data Sources

        Source:    Connection #1
            Database DLL:    crdb_odbc.dll
            Database Type:    ODBC (RDO)
            Server:    Xtreme Sample Database 11.5

            Properties:    QE_LogonProperties
                DSN:    Xtreme Sample Database 11.5
                UseDSNProperties:    False
            QE_SQLDB:    True
            SSO Enabled:    False

    Report Parameters

        Parameter:    Customers
            Data Type:    String
            Description:    Choose a Customer:
            List Type:    Dynamic
            Dynamic Field:    Customer.Customer Name
            Default Values:    Wheel to Wheel
                               Westerly Sports

    Tables

        Table:    Customer
            Connection:    Connection #1
            Used Columns:    {Customer.Customer ID} : Number
                             {Customer.Customer Name} : String[82]

        Table:    Orders
            Connection:    Connection #1
            Used Columns:    {Orders.Order ID} : Number
                             {Orders.Order Amount} : Number
                             {Orders.Customer ID} : Number
                             {Orders.Order Date} : DateTime
                             {Orders.Required Date} : DateTime
                             {Orders.Ship Date} : DateTime

    Table Links
        Joins:    Customer INNER JOIN Orders ON Customer.[Customer ID] = Orders.[Customer ID]

    Record Selection Formulas
        Formula:    {Customer.Customer Name} in {?Customers}
                    and
                    {Orders.Order Date}>= date(2004,01,01)
                    and
                    {Orders.Order Date}<= date(2004,12,31)
                    

    Record Sorting
        Sort By:    @Group 1 -- Ascending Order Group #1
                    Customer.Customer Name -- Ascending Order Group #2
                    Orders.Order ID -- Ascending Order 

    Custom Functions

        Function:    cdStringParamDisplay
            Code:    Function cdStringParamDisplay (param () As String Range, title As String)
                     
                     dim paramcount as number
                     dim increment as number
                     dim outputd as string
                     dim outputr as string
                     
                     paramcount = count(param)
                     Do While paramcount > increment
                     increment = increment + 1
                     if maximum(param (increment)) <> minimum(param (increment)) _
                     then outputr = outputr + minimum(param (increment)) + " to " + maximum( param (increment)) + "\par " _
                     else outputd = outputd + minimum( param (increment)) + "\par " _
                     Loop
                     
                     cdStringParamDisplay = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033" + _
                     "{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fcharset0 Arial;}}" + _
                     "{\colortbl ;\red0\green0\blue128;\red191\green165\blue125;}" + _
                     "\viewkind4\uc1\pard\cf1\b\f0\fs22 " + title + "\cf0\b0\f1\fs16\par" + _
                     "\par" + _
                     "\ul\b\fs16 Distinct Entries\ulnone\par" + _
                     "\cf2 " + _
                     "\par " + _
                     outputd + _
                     "\par " + _
                     "\cf0 " + _
                     "\ul\b Range Entries\ulnone\par " + _
                     "\par " + _
                     "\cf2 " + _
                     outputr + _
                     "}"
                     
                     End Function

        Function:    cdDateTimeDiff
            Code:    Function (datetimevar startdate, datetimevar enddate)
                     
                     
                     if enddate - startdate > 0 then
                     (
                     numbervar ds:= (date(enddate) - date(startdate))*86400;
                     numbervar hs:= (hour(enddate) - hour(startdate))*3600;
                     numbervar ms:= (minute(enddate) - minute(startdate))*60;
                     numbervar ss:= second(enddate) - second(startdate);
                     numbervar ts:= ds+hs+ms+ss;
                     
                     ds:= truncate(ts/86400);
                     hs:= truncate((remainder(ts,86400))/3600);
                     ms:= truncate((remainder(ts,3600))/60);
                     ss:= truncate(remainder(ts,60));
                     
                     stringvar dsd;
                     stringvar hsd;
                     stringvar msd;
                     stringvar ssd;
                     
                     if ds < 10 then dsd:= "0" + totext(ds,0,"") else dsd:= totext(ds,0,"");
                     if hs < 10 then hsd:= "0" + totext(hs,0,"") else hsd:= totext(hs,0,"");
                     if ms < 10 then msd:= "0" + totext(ms,0,"") else msd:= totext(ms,0,"");
                     if ss < 10 then ssd:= "0" + totext(ss,0,"") else ssd:= totext(ss,0,"");
                     
                     stringvar display:= " " + dsd + ":" + hsd + ":" + msd + ":" + ssd;
                     )
                     
                     else
                     
                     (
                     numbervar ds:= (date(startdate) - date(enddate))*86400;
                     numbervar hs:= (hour(startdate) - hour(enddate))*3600;
                     numbervar ms:= (minute(startdate) - minute(enddate))*60;
                     numbervar ss:= second(startdate) - second(enddate);
                     numbervar ts:= ds+hs+ms+ss;
                     
                     ds:= truncate(ts/86400);
                     hs:= truncate((remainder(ts,86400))/3600);
                     ms:= truncate((remainder(ts,3600))/60);
                     ss:= truncate(remainder(ts,60));
                     
                     stringvar dsd;
                     stringvar hsd;
                     stringvar msd;
                     stringvar ssd;
                     
                     if ds < 10 then dsd:= "0" + totext(ds,0,"") else dsd:= totext(ds,0,"");
                     if hs < 10 then hsd:= "0" + totext(hs,0,"") else hsd:= totext(hs,0,"");
                     if ms < 10 then msd:= "0" + totext(ms,0,"") else msd:= totext(ms,0,"");
                     if ss < 10 then ssd:= "0" + totext(ss,0,"") else ssd:= totext(ss,0,"");
                     
                     stringvar display:= "-" + dsd + ":" + hsd + ":" + msd + ":" + ssd;
                     );
                     
                     display;

        Function:    cdCurrencyScalerChoice
            Code:    Function (currencyvar currencyfield, stringvar scaler, numbervar decimals)
                     if scaler = "K" then totext(currencyfield/1000,decimals) + "K" else
                     if scaler = "M" then totext(currencyfield/1000000,decimals) + "M"
                     

    Formula Fields

        Field:    Parameter Values Display
            Formula:    cdStringParamDisplay ({?Customers}, "Customers Entered via Parameter:")
                        

        Field:    Order Date
            Formula:    // a formula is used to create this DateTime field as the Xtreme sample data contains only 12:00:00 as a time
                        
                        datetimevar orderdate:= 
                        date({Orders.Order Date}) + 
                        time((Int(Rnd*24)), (Int(Rnd*59)), (Int(Rnd*59)))

        Field:    Required Date
            Formula:    // a formula is used to create this DateTime field as the Xtreme sample data contains only 12:00:00 as a time
                        
                        datetimevar requireddate:= 
                        date({Orders.Required Date}) + 
                        time((Int(Rnd*24)), 0, 0);
                        
                        if requireddate <= {@Order Date} then datetime(date({@Order Date}) + 2, time(12,00,00)) else requireddate

        Field:    Received Date
            Formula:    // a formula is used to create this DateTime field as the Xtreme sample data contains only 12:00:00 as a time
                        
                        datetimevar receiveddate:= 
                        date(dateadd("d", Int(1.1/Rnd), {Orders.Ship Date})) + 
                        time((Int(Rnd*24)), (Int(Rnd*59)), 0);
                        
                        if receiveddate <= {@Order Date} then {@Order Date} + 4 else receiveddate

        Field:    Efficiency
            Formula:    cdDateTimeDiff ({@Required Date},{@Received Date})

        Field:    On-Time Orders
            Formula:    if {@Required Date} - {@Received Date} >= 0 
                        then {Orders.Order Amount}

        Field:    Late Orders
            Formula:    if {@Required Date} - {@Received Date} < 0 
                        then {Orders.Order Amount}

        Field:    On-Time Orders Grand Total
            Formula:    if sum({@On-Time Orders}) > 100000
                        then cdCurrencyScalerChoice (sum({@On-Time Orders}), "M", 2)
                        else cdCurrencyScalerChoice (sum({@On-Time Orders}), "K", 1)

        Field:    Late Orders Grand Total
            Formula:    if {@Late Orders} > 10000 
                        then cdCurrencyScalerChoice (sum({@Late Orders}), "K", 0)
                        else cdCurrencyScalerChoice (sum({@Late Orders}), "K", 2)

        Field:    Late Orders Running Total
            Formula:    whileprintingrecords;
                        if {@Required Date} - {@Received Date} < 0
                        then stringvar lateorders:= lateorders + totext({Orders.Order ID},0,"") + "^";
                        lateorders

        Field:    Late or On Time
            Formula:    if {@Required Date} - {@Received Date} >= 0 
                        then "On Time" else "Late"

        Field:    Group 1
            Formula:    whilereadingrecords;
                        "Report Details"

        Field:    Report Details
            Formula:    "Double-click here to see a detailed report."

    Unused Formula Fields

        Field:    Xtreme Address
            Formula:    "2001 Meridian Way, Vancouver, BC, Canada  V6G 3G6"

        Field:    Xtreme phone/fax
            Formula:    "Phone: (604) 681-3435     Fax: (604) 681-2934"

    Summary Fields

        Field:    Efficiency
            Formula:    Maximum ({@Efficiency}, {Customer.Customer Name})

    Running Totals

        Running Total:    LateOrdersCount
            Field:    LateOrdersCount
            Type:    LateOrdersCount
            Evaluate:    LateOrdersCount
            Evaluate Condition:    LateOrdersCount
            Reset:    LateOrdersCount
            Reset Condition:    LateOrdersCount

        Running Total:    OnTimeOrdersCount
            Field:    OnTimeOrdersCount
            Type:    OnTimeOrdersCount
            Evaluate:    OnTimeOrdersCount
            Evaluate Condition:    OnTimeOrdersCount
            Reset:    OnTimeOrdersCount
            Reset Condition:    OnTimeOrdersCount

    Report Header

        Section:    Section a

            Conditional Formulas

                Condition:    EnableSuppress
                    Formula:    DrillDownGroupLevel <> 0

            Fields

                Field:    ParameterValuesDisplay1
                    Data Source:    {@Parameter Values Display}
                    Data Type:    String

            Pictures

                Picture:    RO_Xtreme_Logo
                    Size:    279x111
                    Hyperlink:    http://www.businessobjects.com

            Charts

                Chart:    Graph3
                    Chart Type:    Gauge
                    Show value(s):    Count (Orders.Order ID, @Late or On Time)
                    Evaluate On:    @Late or On Time

    Page Header

        Section:    Section a

            Conditional Formulas

                Condition:    EnableSuppress
                    Formula:    DrillDownGroupLevel = 0

            Text Fields

                Text Field:    Text6
                    Text:    Efficiency measured in (Days:Hours:Minutes: Seconds)
                    Suppression Formula:    Pagenumber = TotalPageCount

                Text Field:    Text9
                    Text:    Order Processing Efficiency
                    Tool Tip Formula:    "This report demonstrates the usage of Custom Functions."

            Pictures

                Picture:    Picture2
                    Size:    279x111
                    Hyperlink:    http://www.businessobjects.com
                    Tool Tip Formula:    "http://www.crystaldecisions.com"
                                         

    Groups

        Group:    Group #1
            Grouped By:    {@Group 1}

            Group Header

                Section:    Section a

                    Conditional Formulas

                        Condition:    EnableSuppress
                            Formula:    DrillDownGroupLevel > 0

                    Fields

                        Field:    Field2
                            Data Source:    {@Report Details}
                            Data Type:    String
                            Tool Tip Formula:    "Double-click here to see a detailed report."

                    Text Fields

                        Text Field:    Text4
                            Text:    Order Processing Efficiency
                            Tool Tip Formula:    "This report demonstrates the usage of Custom Functions."

        Group:    Group #2
            Grouped By:    {Customer.Customer Name}

            Group Header

                Section:    Section a

                    Fields

                        Field:    Field1
                            Data Source:    GroupName ({Customer.Customer Name})
                            Data Type:    String

                    Headings

                        Heading:    Text11
                            Text:    Efficiency

                        Heading:    Text10
                            Text:    Received Date

                        Heading:    Text8
                            Text:    Required Date

                        Heading:    Text7
                            Text:    Order Date

                        Heading:    Text1
                            Text:    Order ID

            Group Footer

                Section:    Section a

                    Fields

                        Field:    Field8
                            Data Source:    Maximum ({@Efficiency}, {Customer.Customer Name})
                            Data Type:    String

    Detail

        Section:    Section a

            Conditional Formulas

                Condition:    EnableSuppress
                    Formula:    DrillDownGroupLevel = 0

            Fields

                Field:    Field3
                    Data Source:    {Orders.Order ID}
                    Data Type:    Number
                    Format:    Number
                        Currency Symbol:    None
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    (5555555)

                Field:    Field11
                    Data Source:    {@Order Date}
                    Data Type:    DateTime
                    Format:    Date and Time
                        Order:    Date Time
                        Date Type:    System Default
                        DateTime Format:    DD/MM/YYYY h:mm:ss 

                Field:    Field12
                    Data Source:    {@Required Date}
                    Data Type:    DateTime
                    Format:    Date and Time
                        Order:    Date Time
                        Date Type:    System Default
                        DateTime Format:    DD/MM/YYYY h:mm:ss 

                Field:    Field13
                    Data Source:    {@Received Date}
                    Data Type:    DateTime
                    Format:    Date and Time
                        Order:    Date Time
                        Date Type:    System Default
                        DateTime Format:    DD/MM/YYYY h:mm:ss 

                Field:    Field14
                    Data Source:    {@Efficiency}
                    Data Type:    String
                    Tool Tip Formula:    "This custom function displays a DateTime Difference formula in the format DD:HH:MM:SS."

            Text Fields

                Text Field:    Text2
                    Text:    LATE
                    Suppression Formula:    {@Required Date} - {@Received Date} > 0

        Section:    Section b

            Fields

                Field:    Field4
                    Data Source:    {@On-Time Orders}
                    Data Type:    Number
                    Format:    Number
                        Currency Type:    Floating
                        Currency Symbol:    $
                        Currency Position:    Leading Outside Negative $-123
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    $-5,555,555.

                Field:    Field5
                    Data Source:    {@Late Orders}
                    Data Type:    Number
                    Format:    Number
                        Currency Type:    Floating
                        Currency Symbol:    $
                        Currency Position:    Leading Outside Negative $-123
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    $-5,555,555.

                Field:    Field16
                    Data Source:    {@Late Orders Running Total}
                    Data Type:    String

    Page Footer

        Section:    Section a

            Fields

                Field:    Field6
                    Data Source:    PageNumber
                    Data Type:    Number
                    Format:    Number
                        Currency Symbol:    None
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    -5,555,555

            Text Fields

                Text Field:    Text15
                    Text:    Business Objects Technical Support Site
                    Hyperlink:    http://support.businessobjects.com

                Text Field:    Text16
                    Text:    Copyright 2004 Business Objects Software Limited. All rights reserved. Business Objects, the Business Objects logo, Crystal Reports, Crystal Enterprise, Crystal Analysis, WebIntelligence, RapidMarts, and BusinessQuery are trademarks or registered trademarks of Business Objects and its affiliates in the United States and/or other countries. Other trademarks are the property of their respective owners. Business Objects owns the following U.S. patents, which may cover products that are offered and sold by Business Objects: 5,555,403, 6,247,008 B1, 6,578,027 B2, 6,490,593 and 6,289,352. 

                Text Field:    Text17
                    Text:    Feedback on Samples by E-mail
                    Hyperlink:    mailto:crfeedback@businessobjects.com

            Pictures

                Picture:    Picture3
                    Size:    150x40
                    Hyperlink:    http://www.businessobjects.com

            Lines

                Line:    Line1
                    Ends in Section:    Section9
                    Line Type:    Single
                    Line Thickness:    10

    Report Footer

        Conditional Formulas

            Condition:    EnableSuppress
                Formula:    DrillDownGroupLevel > 0

        Section:    Section a

            Text Fields

                Text Field:    Text12
                    Text:    Summary Information

                Text Field:    Text3
                    Text:    Total $ Amount of On-Time Orders: {@On-Time Orders Grand Total} 

                Text Field:    Text5
                    Text:    Total $ Amount of Late Orders: {@Late Orders Grand Total}

                Text Field:    Text13
                    Text:    Number of Late Orders: {#LateOrdersCount}

                Text Field:    Text14
                    Text:    Number of On-Time Orders: {#OnTimeOrdersCount} 

            SubReports

                SubReport:    Late Orders by Supplier.rpt
                    Links:    {@Late Orders Running Total} => {?Pm-@Late Orders Running Total}

                SubReport:    Late Orders by Shipper.rpt
                    Links:    {@Late Orders Running Total} => {?Pm-@Late Orders Running Total}

                SubReport:    Late Orders by Product Type.rpt
                    Links:    {@Late Orders Running Total} => {?Pm-@Late Orders Running Total}

            Charts

                Chart:    Graph1
                    Chart Type:    Pie
                    Show value(s):    Sum of (Orders.Order Amount, @Late or On Time)
                    Evaluate On:    @Late or On Time

        Section:    Section b

            Charts

                Chart:    Graph2
                    Chart Type:    Bar
                    Show value(s):    Count (Orders.Order ID, @Late or On Time)
                    Evaluate On:    Orders.Ship Date
                                    @Late or On Time

Subreport:    Late Orders by Product Type.rpt

    Data Sources

        Source:    Connection #1
            Database DLL:    crdb_odbc.dll
            Database Type:    ODBC (RDO)
            Server:    Xtreme Sample Database 11.5

            Properties:    QE_LogonProperties
                DSN:    Xtreme Sample Database 11.5
                UseDSNProperties:    False
            QE_SQLDB:    True
            SSO Enabled:    False

    Report Parameters

        Parameter:    Group By
            Data Type:    String
            Description:    How do you want to analyze the report? (Please enter in grouping order.)
            List Type:    Static
            List Values:    By Product Type
                            By Region Product Is From
                            By Supplier
                            By Shipping Co.
                            By Area Shipped To
            Default Values:    By Product Type
                               By Region Product Is From
                               By Supplier
                               By Shipping Co.
                               By Area Shipped To

        Parameter:    Pm-@Late Orders Running Total
            Data Type:    String
            Description:    Pm-@Late Orders Running Total
            List Type:    Static

    Tables

        Table:    Customer
            Connection:    Connection #1
            Used Columns:    {Customer.Customer ID} : Number

        Table:    Orders
            Connection:    Connection #1
            Used Columns:    {Orders.Order ID} : Number
                             {Orders.Customer ID} : Number

        Table:    Orders Detail
            Connection:    Connection #1
            Report Alias:    Orders_Detail
            Used Columns:    {Orders_Detail.Order ID} : Number

        Table:    Product
            Connection:    Connection #1
            Used Columns:    {Product.Product ID} : Number
                             {Product.Product Type ID} : Number
                             {Product.Product Class} : String[102]
                             {Product.Supplier ID} : Number

        Table:    Product Type
            Connection:    Connection #1
            Report Alias:    Product_Type
            Used Columns:    {Product_Type.Product Type Name} : String[102]

        Table:    Supplier
            Connection:    Connection #1
            Used Columns:    {Supplier.Supplier ID} : Number

    Table Links
        Joins:    Customer INNER JOIN Orders ON Customer.[Customer ID] = Orders.[Customer ID]
                  Orders INNER JOIN [Orders Detail] Orders_Detail ON Orders.[Order ID] = Orders_Detail.[Order ID]
                  [Orders Detail] Orders_Detail INNER JOIN Product ON Orders_Detail.[Product ID] = Product.[Product ID]
                  Product INNER JOIN [Product Type] Product_Type ON Product.[Product Type ID] = Product_Type.[Product Type ID]
                  Product INNER JOIN Supplier ON Product.[Supplier ID] = Supplier.[Supplier ID]

    Record Selection Formulas
        Formula:    instr({?Pm-@Late Orders Running Total}, "^" + totext({Orders_Detail.Order ID},0,"") + "^") > 0

    Record Sorting
        Sort By:    Count (Orders_Detail.Order ID, @Group 1) -- Descending Order 
                    Orders_Detail.Order ID -- Ascending Order 

    Formula Fields

        Field:    Group 1
            Formula:    {@Product}

        Field:    Product
            Formula:    {Product.Product Class} + ", " + {Product_Type.Product Type Name}

    Summary Fields

        Field:    Order ID
            Formula:    Count ({Orders_Detail.Order ID}, {@Group 1})

    Report Header

        Section:    Section a

            Text Fields

                Text Field:    Text4
                    Text:    Count of Late Orders
                             by Product Type

    Groups

        Group:    Group #1
            Grouped By:    {@Group 1}

            Group Header

                Section:    Section a

                    Fields

                        Field:    Field9
                            Data Source:    GroupName ({@Group 1})
                            Data Type:    String

                        Field:    Field1
                            Data Source:    Count ({Orders_Detail.Order ID}, {@Group 1})
                            Data Type:    Number
                            Format:    Number
                                Currency Symbol:    None
                                Suppress if Zero:    False
                                Leading Zero:    True
                                Reverse Sign:    False
                                Number Style:    -5555555

    Detail

        Section:    Section a

            Fields

                Field:    Field3
                    Data Source:    {Orders_Detail.Order ID}
                    Data Type:    Number
                    Format:    Number
                        Currency Symbol:    None
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    -5,555,555

                Field:    Field4
                    Data Source:    {@Product}
                    Data Type:    String

Subreport:    Late Orders by Shipper.rpt

    Data Sources

        Source:    Connection #1
            Database DLL:    crdb_odbc.dll
            Database Type:    ODBC (RDO)
            Server:    Xtreme Sample Database 11.5

            Properties:    QE_LogonProperties
                DSN:    Xtreme Sample Database 11.5
                UseDSNProperties:    False
            QE_SQLDB:    True
            SSO Enabled:    False

    Report Parameters

        Parameter:    Group By
            Data Type:    String
            Description:    How do you want to analyze the report? (Please enter in grouping order.)
            List Type:    Static
            List Values:    By Product Type
                            By Region Product Is From
                            By Supplier
                            By Shipping Co.
                            By Area Shipped To
            Default Values:    By Product Type
                               By Region Product Is From
                               By Supplier
                               By Shipping Co.
                               By Area Shipped To

        Parameter:    Pm-@Late Orders Running Total
            Data Type:    String
            Description:    Pm-@Late Orders Running Total
            List Type:    Static

    Tables

        Table:    Customer
            Connection:    Connection #1
            Used Columns:    {Customer.Customer ID} : Number

        Table:    Orders
            Connection:    Connection #1
            Used Columns:    {Orders.Order ID} : Number
                             {Orders.Customer ID} : Number
                             {Orders.Ship Via} : String[42]

        Table:    Orders Detail
            Connection:    Connection #1
            Report Alias:    Orders_Detail
            Used Columns:    {Orders_Detail.Order ID} : Number

        Table:    Product
            Connection:    Connection #1
            Used Columns:    {Product.Product ID} : Number
                             {Product.Product Type ID} : Number
                             {Product.Supplier ID} : Number

        Table:    Product Type
            Connection:    Connection #1
            Report Alias:    Product_Type

        Table:    Supplier
            Connection:    Connection #1
            Used Columns:    {Supplier.Supplier ID} : Number

    Table Links
        Joins:    Customer INNER JOIN Orders ON Customer.[Customer ID] = Orders.[Customer ID]
                  Orders INNER JOIN [Orders Detail] Orders_Detail ON Orders.[Order ID] = Orders_Detail.[Order ID]
                  [Orders Detail] Orders_Detail INNER JOIN Product ON Orders_Detail.[Product ID] = Product.[Product ID]
                  Product INNER JOIN [Product Type] Product_Type ON Product.[Product Type ID] = Product_Type.[Product Type ID]
                  Product INNER JOIN Supplier ON Product.[Supplier ID] = Supplier.[Supplier ID]

    Record Selection Formulas
        Formula:    instr({?Pm-@Late Orders Running Total}, "^" + totext({Orders_Detail.Order ID},0,"") + "^") > 0
                    

    Record Sorting
        Sort By:    Count (Orders_Detail.Order ID, @Group 1) -- Descending Order 
                    Orders_Detail.Order ID -- Ascending Order 

    Formula Fields

        Field:    Group 1
            Formula:    {Orders.Ship Via}

    Summary Fields

        Field:    Order ID
            Formula:    Count ({Orders_Detail.Order ID}, {@Group 1})

    Report Header

        Section:    Section a

            Text Fields

                Text Field:    Text4
                    Text:    Count of Late Orders
                             by Shipper

    Groups

        Group:    Group #1
            Grouped By:    {@Group 1}

            Group Header

                Section:    Section a

                    Fields

                        Field:    Field9
                            Data Source:    GroupName ({@Group 1})
                            Data Type:    String

                        Field:    Field1
                            Data Source:    Count ({Orders_Detail.Order ID}, {@Group 1})
                            Data Type:    Number
                            Format:    Number
                                Currency Symbol:    None
                                Suppress if Zero:    False
                                Leading Zero:    True
                                Reverse Sign:    False
                                Number Style:    -5,555,555

    Detail

        Section:    Section a

            Fields

                Field:    Field3
                    Data Source:    {Orders_Detail.Order ID}
                    Data Type:    Number
                    Format:    Number
                        Currency Symbol:    None
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    -5,555,555

Subreport:    Late Orders by Supplier.rpt

    Data Sources

        Source:    Connection #1
            Database DLL:    crdb_odbc.dll
            Database Type:    ODBC (RDO)
            Server:    Xtreme Sample Database 11.5

            Properties:    QE_LogonProperties
                DSN:    Xtreme Sample Database 11.5
                UseDSNProperties:    False
            QE_SQLDB:    True
            SSO Enabled:    False

    Report Parameters

        Parameter:    Group By
            Data Type:    String
            Description:    How do you want to analyze the report? (Please enter in grouping order.)
            List Type:    Static
            List Values:    By Product Type
                            By Region Product Is From
                            By Supplier
                            By Shipping Co.
                            By Area Shipped To
            Default Values:    By Product Type
                               By Region Product Is From
                               By Supplier
                               By Shipping Co.
                               By Area Shipped To

        Parameter:    Pm-@Late Orders Running Total
            Data Type:    String
            Description:    Pm-@Late Orders Running Total
            List Type:    Static

    Tables

        Table:    Customer
            Connection:    Connection #1
            Used Columns:    {Customer.Customer ID} : Number

        Table:    Orders
            Connection:    Connection #1
            Used Columns:    {Orders.Order ID} : Number
                             {Orders.Customer ID} : Number

        Table:    Orders Detail
            Connection:    Connection #1
            Report Alias:    Orders_Detail
            Used Columns:    {Orders_Detail.Order ID} : Number

        Table:    Product
            Connection:    Connection #1
            Used Columns:    {Product.Product ID} : Number
                             {Product.Product Type ID} : Number
                             {Product.Supplier ID} : Number

        Table:    Product Type
            Connection:    Connection #1
            Report Alias:    Product_Type

        Table:    Supplier
            Connection:    Connection #1
            Used Columns:    {Supplier.Supplier ID} : Number
                             {Supplier.Supplier Name} : String[102]

    Table Links
        Joins:    Customer INNER JOIN Orders ON Customer.[Customer ID] = Orders.[Customer ID]
                  Orders INNER JOIN [Orders Detail] Orders_Detail ON Orders.[Order ID] = Orders_Detail.[Order ID]
                  [Orders Detail] Orders_Detail INNER JOIN Product ON Orders_Detail.[Product ID] = Product.[Product ID]
                  Product INNER JOIN [Product Type] Product_Type ON Product.[Product Type ID] = Product_Type.[Product Type ID]
                  Product INNER JOIN Supplier ON Product.[Supplier ID] = Supplier.[Supplier ID]

    Record Selection Formulas
        Formula:    instr({?Pm-@Late Orders Running Total}, "^" + totext({Orders_Detail.Order ID},0,"") + "^") > 0
                    

    Record Sorting
        Sort By:    Count (Orders_Detail.Order ID, @Group 1) -- Descending Order 
                    Orders_Detail.Order ID -- Ascending Order 

    Formula Fields

        Field:    Group 1
            Formula:    {Supplier.Supplier Name}

    Summary Fields

        Field:    Order ID
            Formula:    Count ({Orders_Detail.Order ID}, {@Group 1})

    Report Header

        Section:    Section a

            Text Fields

                Text Field:    Text4
                    Text:    Count of Late Orders
                             by Supplier

    Groups

        Group:    Group #1
            Grouped By:    {@Group 1}

            Group Header

                Section:    Section a

                    Fields

                        Field:    Field9
                            Data Source:    GroupName ({@Group 1})
                            Data Type:    String

                        Field:    Field1
                            Data Source:    Count ({Orders_Detail.Order ID}, {@Group 1})
                            Data Type:    Number
                            Format:    Number
                                Currency Symbol:    None
                                Suppress if Zero:    False
                                Leading Zero:    True
                                Reverse Sign:    False
                                Number Style:    -5,555,555

    Detail

        Section:    Section a

            Fields

                Field:    Field3
                    Data Source:    {Orders_Detail.Order ID}
                    Data Type:    Number
                    Format:    Number
                        Currency Symbol:    None
                        Suppress if Zero:    False
                        Leading Zero:    True
                        Reverse Sign:    False
                        Number Style:    -5,555,555