Multiple date parameters

Morning all,
I have created a report which is based on 2 sub and one main report. The main report uses, date range from one database field, the sub reports take date range from their respective date fields.
Now when I run the main report I have to put the same date range on all 6 date parameters.
I am wondering if there is a way to merge all 6 into 2 date parameters, though the date range fields should stay with their respective reports.
The reason is because, the date field in sub report is not the same as the date field in other two sub and main report.
For example
Main report - rework_date (from rework_groups table)
Sub report1 - date_entered (from order_header table)
Sub report2 - date_created (from order_progressed table).
Any ideas?
Regards
Jehanzeb

Ok I tried the following but that brought up 0 records from each sub report however the main report brought correct results.
1: I have a record selection formula in the main report like this
({foccredsum.date_created} in {?Start Date} to {?End Date})
2: I have similar record selection formulas for 2 sub reports like this
Subreport 1
({order_progressed.date_created} in {?Start Date} to {?End Date})
Subreport 2
({order_header.date_entered} in {?Start Date} to {?End Date})
3: I removed the date range parameters from both sub reports and linked my main report parameters to the two sub reports date fields and they show up like this under record selection formula
Main report stays the same.
Sub report 1 becomes
({order_progressed.date_created} = {?Pm-?Start Date}
and
{order_progressed.date_created} = {?Pm-?End Date})
Subreport 2 becomes
({order_header.date_entered} = {?Pm-?Start Date}
and
{order_header.date_entered} = {?Pm-?End Date})
Now when I run the report it only asks me once for the date range, upon putting the date range, it shows, 0 records for two sub reports and some records of main report.
Hence it looks like it does not passes date query across to the sub report.
Any ideas?
Regards
Jehanzeb

Similar Messages

  • How to use multiple selection parameters in the data model

    Hi, after have looked all the previous threads about how to use multiple selection parameters , I still have a problem;
    I'm using Oracle BI Publisher 10.1.3.3.2 and I'm tried to define more than one multiple selection parameters inside the data template;
    Inside a simple SQL queries they work perfectly....but inside the data template I have errors.
    My data template is the following (it's very simple...I am just testing how the parameters work):
    <dataTemplate name="Test" defaultPackage="bip_departments_2_parameters">
    <parameters>
    <parameter name="p_dep_2_param" include_in_output="false" datatype="character"/>
    <parameter name="p_loc_1_param" include_in_output="false" datatype="character"/>
    </parameters>
    <dataTrigger name="beforeReport" source="bip_departments_2_parameters.beforeReportTrigger"/>
    <dataQuery>
    <sqlStatement name="Q2">
    <![CDATA[
    select deptno, dname,loc
    from dept
    &p_where_clause
    ]]>
    </sqlStatement>
    </dataQuery>
    <dataStructure>
    <group name="G_DEPT" source="Q2">
    <element name="deptno" value="deptno"/>
    <element name="dname" value="dname"/>
    <element name="loc" value="loc"/>
    </group>
    </dataStructure>
    </dataTemplate>
    The 2 parameters are based on these LOV:
    1) select distinct dname from dept (p_dep_2_param)
    2) select distinct loc from dept (p_loc_1_param)
    and both of them have checked the "Multiple selection" and "Can select all" boxes
    The package I created, in order to use the lexical refence is:
    CREATE OR REPLACE package SCOTT.bip_departments_2_parameters
    as
    p_dep_2_param varchar2(14);
    p_loc_1_param varchar2(20);
    p_where_clause varchar2(100);
    function beforereporttrigger
    return boolean;
    end bip_departments_2_parameters;
    CREATE OR REPLACE package body SCOTT.bip_departments_2_parameters
    as
    function beforereporttrigger
    return boolean
    is
    l_return boolean := true;
    begin
    if (p_dep_2_param is not null) --and (p_loc_1_param is not null)
    then
    p_where_clause := 'where (dname in (' || replace (p_dep_1_param, '''') || ') and loc in (' || replace (p_loc_1_param, '''') || '))';
    else
    p_where_clause := 'where 1=1';
    end if;
    return (l_return);
    end beforereporttrigger;
    end bip_departments_2_parameters;
    As you see, I tried to have only one p_where_clause (with more than one parameter inside)....but it doesn't work...
    Using only the first parameter (based on deptno (which is number), the p_where_clause is: p_where_clause := 'where (deptno in (' || replace (p_dep_2_param, '''') || '))';
    it works perfectly....
    Now I don't know if the problem is the datatype, but I noticed that with a single parameter (deptno is number), the lexical refence (inside the data template) works.....with a varchar parameter it doesn't work....
    So my questions are these:
    1) how can I define the p_where_clause (inside the package) with a single varchar parameter (for example, the department location name)
    2) how can I define the p_where_clause using more than one parameter (for example, the department location name and the department name) not number.
    Thanks in advance for any suggestion
    Alex

    Alex,
    the missing thing in your example is the fact, that if only one value is selected, the parameter has exact this value like BOSTON. If you choose more than one value, the parameter includes the *'*, so that it looks like *'BOSTON','NEW YORK'*. So you need to check in the package, if there's a *,* in the parameter or not. If yes there's more than one value, if not it's only one value or it's null.
    So change your package to (you need to expand your variables)
    create or replace package bip_departments_2_parameters
    as
    p_dep_2_param varchar2(1000);
    p_loc_1_param varchar2(1000);
    p_where_clause varchar2(1000);
    function beforereporttrigger
    return boolean;
    end bip_departments_2_parameters;
    create or replace package body bip_departments_2_parameters
    as
    function beforereporttrigger
    return boolean
    is
    l_return boolean := true;
    begin
    p_where_clause := ' ';
    if p_dep_2_param is not null then
    if instr(p_dep_2_param,',')>0 then
    p_where_clause := 'WHERE DNAME in ('||p_dep_2_param||')';
    else
    p_where_clause := 'WHERE DNAME = '''||p_dep_2_param||'''';
    end if;
    if p_loc_1_param is not null then
    if instr(p_loc_1_param,',')>0 then
    p_where_clause := p_where_clause || ' AND LOC IN ('||p_loc_1_param||')';
    else
    p_where_clause := p_where_clause || ' AND LOC = '''||p_loc_1_param||'''';
    end if;
    end if;
    else
    if p_loc_1_param is not null then
    if instr(p_loc_1_param,',')>0 then
    p_where_clause := p_where_clause || 'WHERE LOC in ('||p_loc_1_param||')';
    else
    p_where_clause := p_where_clause || 'WHERE LOC = '''||p_loc_1_param||'''';
    end if;
    end if;
    end if;
    return (l_return);
    end beforereporttrigger;
    end bip_departments_2_parameters;
    I've written a similar example at http://www.oracle.com/global/de/community/bip/tipps/Dynamische_Queries/index.html ... but it's in german.
    Regards
    Rainer

  • Date Parameters

    Hi,
    Please see my query below,
    I'm having a bit of trouble with my date parameters.
    If $P{from_date} = 01-Jan-2010
    and $P{to_date} = 02-Jan-2010
    Is there a reason why i'm not getting any data for 02-Jan-2010?
    It's probably something simple that i'm missing.
    select
    count(tag_id),
    itl.sku_id,
    itl.client_id,
    itl.reference_id,
    sum(itl.update_qty),
    to_char(trunc(itl.dstamp), 'DD-Mon-YYYY') rec_date,
    to_char(sysdate, 'DD-Mon-YYYY | HH24:MI:SS') as systemdate,
    to_char(trunc(itl.expiry_dstamp), 'DD-Mon-YYYY') exp_date,
    s.ship_shelf_life as sku_shelf_life,
    s.ship_shelf_life + 2 as plus_shelf_life,
    (trunc(itl.expiry_dstamp) - (s.ship_shelf_life + 2)) - trunc(sysdate) as plus_days_left,
    (trunc(itl.expiry_dstamp) - (s.ship_shelf_life + 2)) - trunc(itl.dstamp) as plus_days_left_when_rec,
    (trunc(itl.expiry_dstamp) - trunc(itl.dstamp)) as clear_days
    from inventory_transaction itl, sku s
    where s.sku_id = itl.sku_id
    and ($P{from_date} is null or ($P{from_date} is not null and itl.dstamp >= to_date($P{from_date}, 'DD-Mon-YYYY')))
    and ($P{to_date} is null or ($P{to_date} is not null and itl.dstamp <= to_date($P{to_date}, 'DD-Mon-YYYY')))
    and itl.code = 'Receipt'
    group by itl.sku_id, itl.client_id, to_char(trunc(itl.expiry_dstamp), 'DD-Mon-YYYY'), to_char(trunc(itl.dstamp), 'DD-Mon-YYYY'),
    itl.reference_id, s.ship_shelf_life, s.ship_shelf_life + 2, (trunc(itl.expiry_dstamp) - (s.ship_shelf_life + 2)) - trunc(sysdate),
    (trunc(itl.expiry_dstamp) - (s.ship_shelf_life + 2)) - trunc(itl.dstamp), (trunc(itl.expiry_dstamp) - trunc(itl.dstamp))
    order by itl.client_id, itl.sku_idThanks in advance,
    SM.

    Sam Mardell wrote:
    Is there a reason why i'm not getting any data for 02-Jan-2010?Yes :) Every date has an hours, minutes and seconds component. When you apply the TO_DATE() function on a character string that just contains month, day, and year the time component defaults to midnight (00:00:00). There are multiple methods to get around this:
    < to_date($P{to_date}, 'DD-Mon-YYYY') + 1
    <= to_date($P{to_date} || '23:59:59', 'DD-Mon-YYYY HH24:MI:SS')
    <= to_date($P{to_date}, 'DD-Mon-YYYY') + (60*60*24 - 1)Above are just examples, there are many more ways to achieve this.
    HTH!

  • SQL and Multiple Values Parameters

    Hi,
    I've pretty much exhausted my search (google and in this forum) with finding a solution to my problem... So now I'm hoping that any of you will be able to help me out.
    I am writing an Oracle SQL query to get the data for a Crystal Report (Product Ver. 11.5.8.826).
    What I am trying to do is to allow a parameter to be entered by the user based on three possibilities:
    1. user enters a single value (eg. '66200')
    2. user enters multiple values (eg. '66200, 66201')
    or
    3. user leaves the parameter alone (eg. '' )
    The query works up to when I try do the following...
    Select
    From
    Where
    and ({?param_id} IS NULL OR table1.ID IN ({?param_id}))
    {?param_id} settings:
    'List of Values' = Static
    'Allow multiple values' = False
    'Value Type' = String
    with no Default Value
    table1.ID is of type Integer
    Using the above query, it works when I enter a single value such as '66200', but I get the following error when I leave the param_id blank:
    "Failed to retrieve data from the database.
    Details: HY000:(Oracle)(ODBC)(Ora)ORA-00936: missing expression
    (Database Vendor Code: 936 )"
    When I try to enter the value '66200, 66201' (yes, I know I have Allow multiple values set to False, and I do want the user to be able to enter more than one ID by using comma as a separator), I get the following error:
    "Failed to retrieve data from the database.
    Details: HY000:(Oracle)(ODBC)(Ora) ORA-00920: invalid relational operator
    (Database Vendor Code: 920 )"
    But when I have the following query:
    Select
    From
    Where
    and (table1.ID IN ({?param_id}))
    and enter the value '66200' it works, or if I enter the value '66200, 66201' this works too ('66200, 66201' will return the correct data result).
    However, if I leave the param_id to be blank, I get the error:
    "Failed to retrieve data from the database.
    Details: HY000:(Oracle)(ODBC)(Ora)ORA-00936: missing expression
    (Database Vendor Code: 936 )"
    What I want to try and do is to allow the user to leave the param_id empty and have the SQL query return all ID values by checking if that param_id is empty.
    I understand that I can just add a Value to the param_id to have "ALL" and just let the user select it, but the problem with that is then I will need to have the SQL Query potentially return thousands of data before I can even do the Record Selection - obviously not good on report performance and all.  I do have four (4) other parameters that I am using for the report, with two of them being required Date parameters:
    {?param_startdate}
    {?param_enddate}
    {?param_title}
    {?param_refnum}
    These four parameters are also in the SQL query, and returns with no problem at all:
    WHERE
    and ( {?param_startdate} IS NULL OR {?param_startdate}='' OR table.startdate >= {?param_startdate} )
    and ( {?param_enddate} IS NULL OR {?param_enddate}='' OR table.enddate <= {?param_enddate} +1)
    and ( '{?param_refnum}' IS NULL OR table.refnum= TO_NUMBER('{?param_refnum}') )
    and ( '{?param_title}' IS NULL OR UPPER(table.title) = UPPER('{?param_title}) )
    So, my question is:
    Is there a way to have the param_id be left blank thus allowing the SQL query to return all the ids?
    Any help would be much appreciated... thanks in advance.
    Edited by: Suolon Hu on Oct 16, 2008 6:13 PM
    Edited by: Suolon Hu on Oct 16, 2008 7:28 PM

    Hi Mohamed,
    Thanks again!  This does the job, but I find that it runs much slower than if I were to have it in the SQL query instead.  I guess there isn't a way to have a check condition in the SQL query instead of having it in the Record Selection?
    I was trying the CASE WHEN in the WHERE clause of the SQL query, but not being a SQL expert, I wasn't successful with this method - I was able to get it to work with one entry, but not multiple values '66200, 66201' or blank (all values))
    WHERE
    and table.ID IN
    (CASE
    WHEN {?param_ID} IS NULL THEN table.ID
    ELSE {?param_ID}
    END)

  • Error when using Date Parameters...

    Hi everybody,
    I have a little issue.
    Ever since I upgraded my CRXI R2 to SP4 I've had a little problem using date parameters.
    The little calendar icon next to the parameter field no longer works.
    When I click it I get the following error message:
    An error has occurred in the script on this page.
    Line:       79
    Char:      1
    Error:      Object Expected
    Code:      0
    URL:       file://C:\Documents and Settings\jlong\Local Settings\Temp\prompting1.html
    I'm thinking this is probable a quick registry fix, but I have no idea where to start looking.
    Hopefully one of you CR guru's knows the answer.
    Thanks in advance,
    Jason

    It seems you are having a scripting issue.
    Go onto the Internet explorer settings (internet options under control panel)
    click on security and then click on Internet and then Custom tab.
    Scroll right down where it says Scripting and enable it.
    That should resolve the issue.
    Here is the full list of browsers with scripting options:
    Windows Internet Explorer
    (all versions except Pocket Internet Explorer)
    Note To allow scripting on this Web site only, and to leave scripting disabled in the Internet zone, add this Web site to the Trusted sites zone.
    1. On the Tools menu, click Internet Options, and then click the Security tab
    2. Click the Internet zone.
    3. If you do not have to customize your Internet security settings, click Default Level. Then do step 4
    If you have to customize your Internet security settings, follow these steps:
    a. Click Custom Level
    b. In the Security Settings u2013 Internet Zone dialog box, click Enable for Active Scripting in the Scripting section.
    4. Click the Back button to return to the previous page, and then click the Refresh button to run scripts.
    ===========
    Mozilla Corporationu2019s Firefox version 2
    1. On the Tools menu, click Options.
    2. On the Content tab, click to select the Enable JavaScript check box.
    3. Click the Go back one page button to return to the previous page, and then click the Reload current page button to run scripts.
    ===========
    Opera Softwareu2019s Opera version 9
    1. On the Tools menu, click Preferences.
    2. On the Advanced tab, click Content.
    3. Click to select the Enable JavaScript check box, and then click OK.
    4. Click the Back button to return to the previous page, and then click the Reload button to run scripts.
    ===========
    Netscape browsers
    1. Select Edit, Preferences,Advanced
    2. Click to select Enable JavaScript option
    Hope this helps.
    Regards
    Jehanzeb
    Edited by: Jehanzeb Navid on Jul 28, 2008 4:38 PM
    Ok I think I got this totally wrong. this isn't what you are looking for.
    Sorry!!! can't delete this reply arggghh!!!
    Edited by: Jehanzeb Navid on Jul 28, 2008 4:40 PM
    Maybe this might help?
    Remove Web Customization
    If multiple folders are causing the script error, remove Web customization from any folder that generates the error message.
    To remove customization from a folder, use the following steps:
    1. Open the appropriate folder.
    2. On the View menu, click Customize This Folder, click Remove Customization, click Next, and then click Finish.
    3. Close the folder.

  • How to use Count with Date Parameters

    Hello,
    I am having issues using the Count() function in conjunction with date parameters.
    This is a Siebel report and in my report I have 2 date parameters(From Date, To Date). In a nutshell I am basically trying to count Opportunities that has a start date within the given date period. However I don't see a reasonable way to put my date parameters within the Count() function. The reason being is that I need to have a huge chunk of code to convert the dates into a common format that can be compared, and it won't even fit within the code block in my rtf template. I am not even sure how to put multiple conditional statements inside a Count() function since all the examples I have seen are very simple.
    Anyone have a suggestion on how to use Count() with date parameters?
    Thanks.

    Any chance you can get the date formats in the correct format from siebel?
    I don't know Siebel - so I can't help you with that. If you get the correct format it is just
    <?count(row[(FromDate>=date) and  (date<=ToDate))?>
    Otherwise the approach would probably need to use string function to get year/monthd/day from the date
    and store it into a varialbe and compare later the same way
    <?variable@incontext:from; ....?>
    <?variable@incontext:to; ...?>
    <?count(row[($from>=date) and  (date<=$to))?>
    Potentially you can use the date functions such as xdofx:to_date to do the conversion
    [http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12187/T421739T481158.htm]
    But I am not sure if they are available in your siebel implementation.
    Hope that helps

  • Handling Multiple Output Parameters

    Howdy.
    What is the concensus approach for handling multiple output parameters in Java?
    We have a legacy C API that we are porting to Java. All API routines already return an error value as an int. i.e.:
    int foo(...);
    What if we wanted to return additional info, such as a length and binary (not text) data?
    int foo(...,int* len,char** data);
    We use a char** for data cause we don't know in advance how long the data will be and we don't want callers to have to allocate arbitrary-sized arrays. In other words, we allocate the output data buffer internally.
    How do you do this in Java? Obviously, we can use an Integer object to return the length, but passing in a byte[] for data will not return the internally allocated array to the caller:
    public int foo(...,Integer len,byte[] data); // can't allocate data internally
    We also thought about using ByteArrayOutputStream, but since the class does not provide direct access to the internal array, it requires an inefficient copy through the toByteArray() method in order to retrieve our data.
    Any ideas?
    Ricardo

    Yes, that is the approach that we are currently
    using. We have defined an Out class that incorporates
    all possible output types as data members:Huh? One class that is used for all possible output types? I'm not quite sure what you mean by that. Classes should be meaningful in and of themselves, not just to encapsulate a bunch of unrelated fields. Sounds non-OO.
    public class Out
    byte[] out_bytes;
    int      out_int;
    }I guess we feel this is somewhat inelegant...
    The only real problem is with the byte[] arguments.
    Any thoughts on that?
    Thanks,
    RicardoThere's nothing inherently wrong with a byte array - else there may not be such an animal in the language. Other than the comments above about maybe it being non-OO, the only other comment I could make on this without really seeing the whole context (how this class is really used, etc) would be that yes it looks like it is just encapsulating all possible output types. Not good. If a method is going to return a byte array, it should do so - not return a meaningless "Out" object which happens to contain that array. And another method returning an int should return the int, not this "Out" object containing the int. These don't appear to be related fields belonging to an object in an OO sense.

  • Problem to apply date parameters

    Hi All,
    I have a report in which i am facing issues with how to apply the date parameters.
    We have two feilds in the report as WO Creation date and SR Creation Date.
    Now the date parameters have to be applied as
    1. From date which should should filter records both from WO Creation date and SR Creation Date.
    2. To date which should should filter records both from WO Creation date and SR Creation Date.
    Along with this these date parameters i.e. From Date and To Date are not mandatory.
    I am unable to find out how do we apply these date parameters and what feilds to base this on, or what conditions to apply.
    Any quick help for this will be highly appreciated.
    Regards,
    Shruti

    Do the users really want to filter on both dates, or just one of the dates each time? I am wondering if you created multiple sheets in the workboo. One sheet where you would have a from and to date parameter for creation date. A second sheet where the from and to date parameter based on the SR Creation date. A third sheet with no date parameter (since you said this can be optional). The users then pick which sheet they want to use. The tricky one is if the users truly want to data select on both dates. Would this be an OR relationship or an AND relationship? You really need to detail out exactly how the users want to data select the data. Give us an example of how they want to select.
    John Dickey

  • How can I reference records outside the two date parameters?

    Hi all,
    I have a query that fetches records based on the two date parameters defined (Startdate and Enddate).
    If the Startdate is 2014-12-01 and the Enddate is 2014-12-12, I want to pull records outside these two date parameters, that is      2014-09-01 and 2014-11-30.
    I want to add up the records from  2014-09-01 and 2014-11-30 and include them in one of the columns in my report.
    I tried using this query:
     SUM(CASE WHEN FilteredIncident.Statuscodename IN ('QUEUED', 'ASSIGNED') AND (EnteredOn >= '2014-09-01' AND EnteredOn<= @StartDate) THEN 1 ELSE 0 END) AS OpenRecords
    Please help with any ideas..thanks

    Please follow basic Netiquette and post the DDL we need to answer this. Follow industry and ANSI/ISO standards in your data. You should follow ISO-11179 rules for naming data elements. You should follow ISO-8601 rules for displaying temporal data. We need
    to know the data types, keys and constraints on the table. Avoid dialect in favor of ANSI/ISO Standard SQL. And you probably need to read and download the PDF for: 
    https://www.simple-talk.com/books/sql-books/119-sql-code-smells/
    There is no such crap as a “status_code_name” in RDBMS. It has to be a “<something in particular>_status”; think about how silly that data element name is! Want to keep going and have a “status_code_name_value_id”? LOL! 
    The name “Filtered_Incident” is also wrong. Tables are sets, so unless you have only one element in this set, the table name should be a plural or (better) collective name. But a better question is why  did you split out “Filtered_Incidents” from “Incidents”?
    Would you also split “Male_Personnel” and “Male_Personnel” from “Personnel”? 
    Get a book on data modeling and learn some basics. 
    >> I have a query that fetches records [sic: rows are nor records] based on the two date parameters defined (report_start_date and report_end_date). If the report_start_date is 2014-12-01 and the report_end_date is 2014-12-12, I want to pull records [sic]
    outside these two date parameters, that is 2014-09-01 and 2014-11-30. I want to add up the records [sic] from 2014-09-01 and 2014-11-30 and include them in one of the columns in my report. <<
    Having no DDL and no sample data makes this hard. Does your boss make you program without any documentation, DDL, etc? This spec is vague; you say to do a total, but show a count, etc. 
    One of the many nice things about DATE data types is that the BETWEEN predicate works with them, so you can quite writing 1960's BASIC predicates with primitive logic operators. 
    Here is a guess: 
    SELECT SUM(CASE WHEN incident_date BETWEEN '2014-09-01' 
               AND @report_start_date THEN 1 ELSE 0 END)
           AS open_record_cnt 
      FROM Incidents
     WHERE incident_status IN ('QUEUED', 'ASSIGNED')
        AND incident_date <= @report_end_date; 
    --CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
    in Sets / Trees and Hierarchies in SQL

  • Problem with passing date parameters in cursor

    Is there any problem in passing date parameters and like clause as below
    CURSOR eftcursor(start_date DATE, end_date DATE, where_clause varchar2) IS
    select * from r_records
    where created_date between start_date and end_date and description like where_clause;
    and in the open statement
    select to_date('01/06/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into startDate from dual;
    select to_date('01/07/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into endDate from dual;
    str := '%something%aaaaa%';
    open eftcursor(startDate ,endDate , str);
    Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.

    Almora wrote:
    Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.No, your code looks correct -- ou're passing a date to the cursor.
    You might consider whether you really need an explicit cursor though. An implicit cursor is easier to code and performs better.

  • Increase performance in a multiple data source report

    Post Author: ArturoFromPeru
    CA Forum: General
    Hi everybody.
    I have a big problem, when i make a report that have multiple data sources the performance decrease considerably, i still don't know the reason. Is it true that using multiple data sources is too slow?.
    I tell you a fact: I made the report connecting via "Field Definition File", and it take at least 2 minutes to show itself but it only have 170 records, and i'm very sure that the sql statements to each data source were executed very faster.
    I even heard about index, but i think they only are useful when i connect directly to the database.
    All my partner told me, that Cristal Report
    Thanks you in advance
    Regards.
    Arturo

    Post Author: ArturoFromPeru
    CA Forum: General
    Thanks you, but I explain better what i was doing.
    I've made a report called "Kardex de Producto" which show the behavior of the products according to its sales, purchases.
    The end result which is showed by the report is correct. I used three data source in the report, so links between each table is correct. The only problem i have is the performance because i still don't know why is too slow. In fact the sql statement is very heavy, but i think it doesn't matter to the report because when it takes the data from the database (connecting via Field Definition File) even if the very heavy sql statement returns twenty record Cristal Report must show itself very quickly. I don't want to believe that Cristal Report is very slow when it works with multiple data sources.
    Do you mind if i give you my report? if not please leave me your email address.
    Email: [email protected] / [email protected]
    Thank you in advance
    Regards
    Arturo

  • Report Viewer and Multiple Data Sources

    I know that it is possible to create a report in Crystal Reports using multiple data sources.  But is it possible to use just the Free  Report Viewer to view a report with Multiple Data Sources?
    Our company uses Crystal Reports XI.  I do not use the program myself, I am in the IT Department.  I have limited knowledge of Crystal and do not do any of the report writing.
    If this is possible, and if someone could help me out with what would need to be done, or point me in the right direction of a Knowledge Base or Help Topic that explains this, that would be great.
    Thanks.

    I believe it can but both data sources need to be set up. Ask a report designer to help you use the Designer to test this and see what is required.

  • Any examples of a data template using multiple data sources?

    I'm looking for an example report using multiple data sources. I've seen one where they do a master/detail but I'm just looking to combine results in sorted order (sorted across all data sources). The master/detail used a bind variable to link the two defined queries, I'm thinking what I want won't have that, so I'm lost on how to make that happen. I have reports using multiple sql queries and there is a way in the data source pulldown to tell it to combine the data sources. It appears to be a more manual process with data templates, if it's even possible.
    Any pointers/links would be appreciated.
    Gaff

    Hi Vetsrini :
    That's just it. Mine is simpler than that. There is no master/detail relationship between the two queries. I have the same exact query that I run in two databases and I want to merge the results (ordered, by, say eventTime) in one report. So I think my results are going to be two separate groups (one for each data source) which I'll have to let BI merge vis XSLT or whatever it uses. That's fine for small result sets but for larger ones, it would be nice if the database did the sorting/merging.
    Gaff

  • How to retrieve multiple data from table and represent it in jsp page

    Hi
    The below JavaScript code is used to add row in the table when I want to add multiple row data into table for single entry no field.
      <html>  function addRow()
                i++;
                var newRow = document.all("tblGrid").insertRow();
                var oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='srno"+i+"' type='text' id='srno"+i+"' size=10>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='itmcd"+i+"' type='text' id='itmcd"+i+"' size='10'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='itmnm"+i+"' type='text' id='itmnm"+i+"' size='15'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='indentqty"+i+"' type='text' id='indentqty"+i+"' size='10'>";
                oCell = newRow.insertCell();
                    oCell.innerHTML = "<input name='uom"+i+"' type='text' id='uom"+i+"' size='10'><input type='hidden' name='mcode"+i+"'id='mcode"+i+"'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='packqty"+i+"' type='text' id='packqty"+i+"' size='10'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='packuom"+i+"' type='text' id='packuom"+i+"' size='10'><input type='hidden' name='pack"+i+"' id='pack"+i+"'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='rate"+i+"' type='text' id='rate"+i+"' size='10'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='dor"+i+"' type='text' id='dor"+i+"' size='0' onClick='"+putdate(this.name)+"'>";           
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='bccode"+i+"' type='text' id='bccode"+i+"' size='10'></td><input type='hidden' name='bcc"+i+"' id='bcc"+i+"'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='cccode"+i+"' type='text' id='cccode"+i+"' size='10'></td><input type='hidden' name='ccc"+i+"' id='ccc"+i+"'>";
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input name='remark2"+i+"' type='text' id='remark2"+i+"' size='20'>";           
                oCell = newRow.insertCell();
                oCell.innerHTML = "<input type='button' value='Delete' onclick='removeRow(this);' />";
               // oCell = newRow.insertCell();
               // oCell.innerHTML = "<input type='button' value='Clear' onclick='clearRow(this);' />";
            }<html>  Then this data are send to the next Servlet for adding into two table.
    My header portion data are added into one table which added only one row in table. while footer section data are added into the no of rows in another table dependent on No. of
    Rows added into jsp page.
    Here is an code for that logic.
    <html>
    ArrayList<String> mucode = new ArrayList<String>();
                                ArrayList<Integer> serials = new ArrayList<Integer>();
                                ArrayList<Integer> apxrate = new ArrayList<Integer>();
                                ArrayList<Integer> srname = new ArrayList<Integer>();
                                ArrayList<String> itcode = new ArrayList<String>();
                                ArrayList<String> itname = new ArrayList<String>();
                                ArrayList<Integer> iqnty = new ArrayList<Integer>();
                                ArrayList<String> iuom = new ArrayList<String>();
                                ArrayList<Integer> pqnty = new ArrayList<Integer>();
                                ArrayList<String> puom1 = new ArrayList<String>();
                               ArrayList<Integer> arate = new ArrayList<Integer>();
                                ArrayList<String> rdate = new ArrayList<String>();
                                ArrayList<String> bcs = new ArrayList<String>();
                                ArrayList<String> ccs = new ArrayList<String>();
                                ArrayList<String> remarkss = new ArrayList<String>();
                                //ArrayList<Integer> qtyrecs = new ArrayList<Integer>();
                                //ArrayList<String> dors = new ArrayList<String>();
                                //ArrayList<String> remarks = new ArrayList<String>();
                     String entryn = request.getParameter("entryno");       
                        String rows = request.getParameter("rows");
                        out.println(rows);  
                        //String Entryno = request.getParameter("entryno");
                       // out.println(Entryno);
                      int entryno = 0,reqqty = 0,srno = 0,deprequest = 0,rowcount = 0;
                                if(!Entryno.equals("")){
                                        entryno = Integer.valueOf(Entryno);
                                if(!rows.equals("")){
                                        rowcount = Integer.valueOf(rows);
                               for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("srno"+i)!=null){
                                                serials.add(Integer.valueOf(request.getParameter("srno"+i).trim()));
                                                out.println(serials.size());
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("srno"+i)!=null){
                                                srname.add(Integer.valueOf(request.getParameter("srno"+i).trim()));
                                out.println(srname.get(0));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("itmcd"+i)!=null){
                                                itcode.add(request.getParameter("itmcd"+i).trim());
                                        } //out.println(itcode.get(i));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("itmnm"+i)!=null){
                                                itname.add(request.getParameter("itmnm"+i).trim());
                                        }//out.println(itname.get(i));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("indentqty"+i)!=null){
                                                iqnty.add(Integer.valueOf(request.getParameter("indentqty"+i).trim()));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("uom"+i)!=null){
                                                iuom.add(request.getParameter("uom"+i).trim());
                                        }//out.println(iuom.get(i));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("mcode"+i)!=null){
                                                mucode.add(request.getParameter("mcode"+i).trim());
                               for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("packqty"+i).equals("")){
                                          pqnty.add(0);
                                        }else
                                            pqnty.add(Integer.valueOf(request.getParameter("packqty"+i).trim()));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("pack"+i)!=null){
                                                puom1.add(request.getParameter("pack"+i).trim());
                                       }else
                                        puom1.add("");
                               for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("rate"+i).equals("")){                                     
                                            arate.add(0);
                                        }else
                                        arate.add(Integer.valueOf(request.getParameter("rate"+i).trim()));   
                     /* for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("rate"+i)!=null){
                                                arate.add(Integer.valueOf(request.getParameter("rate"+i).trim()));
                              for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("dor"+i)!=null){
                                                try{
                                                        rdate.add(dashdate.format(slashdate.parse(request.getParameter("dor"+i).trim())));
                                                }catch(ParseException p){p.printStackTrace();}
                                        }else
                                           { rdate.add("");}
                                   for(int i=1;i<=rowcount;i++){
                                 if(request.getParameter("bcc"+i)!=null){
                                                bcs.add(request.getParameter("bcc"+i).trim());
                                        }out.println(bcs.get(0));
                                for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("ccc"+i)!=null){
                                                ccs.add(request.getParameter("ccc"+i).trim());
                                        }out.println(ccs.get(0));
                                for(int i=1;i<=rowcount;i++){
                                    out.println("remark2");
                                        if(request.getParameter("remark2"+i)!=null){
                                                remarkss.add(request.getParameter("remark2"+i).trim());
                                        }out.println(remarkss.get(0));
                        ArrayList<String> Idate = new ArrayList<String>();
                        for(int i=1;i<=rowcount;i++){
                                        if(request.getParameter("dateindent"+i)!=null){
                                                try{
                                                        Idate.add(dashdate.format(dashdate.parse(request.getParameter("dateindent"+i).trim())));
                                                }catch(ParseException p){p.printStackTrace();}
                    String Rdate = dashdate.format(new java.util.Date());
                     String tdate = dashdate.format(new java.util.Date());    
                     // String Indentdate = dashdate.format(new java.util.Date());
                   //  String ApprovedT1 = dashdate.format(new java.util.Date());
                   //  String ApprovedT2 = dashdate.format(new java.util.Date());
                       // String ApprovedT1=" ";
                        //String ApprovedT2="";*/
                    String ApprovedT1= dashdate.format(new java.util.Date());
                   out.println (ApprovedT1);
                      String ApprovedT2=dashdate.format(new java.util.Date());
                       out.println(ApprovedT2);
                    String Indentdate=(dashdate.format(slashdate.parse(request.getParameter("dateindent").trim())));
                       out.println(Indentdate);
                        String Cocode ="BML001";  
                        out.println(Cocode);
                        String Deptcode = request.getParameter("dept1");
                        out.println(Deptcode);
                        String Empcode = request.getParameter("emp");
                        out.println(Empcode);
                        String Refno =request.getParameter("rtype"); 
                         out.println(Refno);
                        String Divcode = request.getParameter("todiv1");
                        out.println(Divcode);
                        String Usercode = "CIRIUS";    
                         String Whcode = request.getParameter("stor");
                        out.println(Whcode);
                        // String Itemgroupcode = request.getParameter("");
                         String Itemgroupcode ="120000";
                         out.println(Itemgroupcode);
                        String Supplytypecode = request.getParameter("stype");
                        out.println(Supplytypecode);
                        String Delcode = request.getParameter("deliverycode");
                        out.println(Delcode);
                        String Itemclass="WS";
                        out.println(Itemclass);
                        // String Itemclass = request.getParameter("iclass");
                       // out.println(Itemclass);
                        String unitcode = request.getParameter("uni");
                        out.println(unitcode);
                         String Todivcode = request.getParameter("todiv1");
                        out.println(Todivcode);
                        String Appxrate = request.getParameter("rate");
                        out.println(Appxrate);
                        String Srno = request.getParameter("srno");
                        out.println(Srno);                
                    /*    String Indqty = request.getParameter("indentqty");
                      out.println(Indqty);*/
                  String Itemcode = request.getParameter("itmcd");
                       out.println(Itemcode);
                       String Othersp = request.getParameter("remark1");
                        out.println(Othersp);
                        String Reqdt = request.getParameter("dor");
                        out.println(Reqdt);
                        String Munitcode = request.getParameter("mcode");
                        out.println(Munitcode);
                        String Packqty = request.getParameter("packqty");
                        out.println(Packqty);               
                        String Packuom = request.getParameter("pack");
                        out.println(Packuom);
                        String Remark2 = request.getParameter("remark2");
                        out.println(Remark2);
                        String BC = request.getParameter("bcc");
                        out.println(BC);
                        String CC = request.getParameter("ccc");
                        out.println(CC);
                        try{
                            st=connection.createStatement();
                            connection.setAutoCommit(false);
                            String sql="INSERT INTO PTXNINDHDR(COCODE,DEPTCODE,EMPCODE,APPROVEDT1,APPROVEDT2,INDDT,ENTRYNO,REFNO,REMARKS,DIVCODE,USERCODE,WHCODE,ITEMGROUPCODE,SUPTYPECODE,DELCODE,UNITCODE,TODIVCODE,ITEMCLASS)VALUES('"+Cocode+"','"+Deptcode+"','"+Empcode+"','"+ApprovedT1+"','"+ApprovedT2+"','"+Indentdate+"',"+Entryno+",'"+Refno+"','"+Othersp+"','"+Divcode+"','"+Usercode+"','"+Whcode+"','"+Itemgroupcode+"','"+Supplytypecode+"','"+Delcode+"','"+unitcode+"','"+Todivcode+"','"+Itemclass+"')";
                            out.println(sql);
                            st.addBatch(sql);
                            for(int i=0;i<serials.size();i++){
                                out.println("Inside the Statement");
                                String query3="test query for u";
                                out.println(query3);
                               String queryx="Insert into PTXNINDDTL(APXRATE,ENTRYNO,BRKNO,INDQTY,ITEMCODE,OTHERSPFCS,MUNITCODE,PACKQTY,PACKUOM,REMARKS,DIMSUBGRPCODE,DIMCODE,REQDT)VALUES("+arate.get(i)+","+entryno+","+srname.get(i)+","+iqnty.get(i)+","+itcode.get(i)+",'"+Othersp+"','"+mucode.get(i)+"',"+pqnty.get(i)+",'"+puom1.get(i)+"','"+remarkss.get(i)+"','"+bcs.get(i)+"','"+ccs.get(i)+"','"+rdate.get(i)+"')";
                               out.println(queryx);
                                st.addBatch(queryx);
                           int[] result=st.executeBatch();
                           connection.commit();
                           for(int k=0;k<result.length;k++)
                           out.println("rows updated by "+(k+1)+"insert sta:"+result[k]+"");
                        catch(BatchUpdateException bue)
                        out.println("error1;"+bue+"");
                        catch(SQLException sql)
                        out.println("error2;"+sql+"");
                        catch(Exception l)
                        out.println("error3;"+l+"");
    </html>
       Now I looking for to retrieve this footer section data available in multiple rows from footer table and present it in jsp page .
    I am finding difficulties in how to show this multiple row data for dynamic no of rows .i.e. variable no. of rows.
    I have able to show the data in Header portions of page in this ways
    here i am adding the part of code which shows the data from header part of table i.e from Header table
      <html>
    <h2 align="center"><b>Indent Preparation</b></h2>
        <div align="left">
            <table width="849" border="0" cellspacing="3" cellpadding="3" align="center">
                <tr>
                    <td ><div align="left"><b>Indent No.</b></div></td>
                    <td ><label>
                            <input name="indentno" type="text" id="indentno" size="15" value="" /><input type="hidden" name="no" id="no">
                    </label></td>
                    <td ><div align="center"><strong>Indent Date</strong></div></td>
                    <td ><label>
                            <div align="center">
                                <input name="dateindent" type="text" id="dateindent"value="<%=date1%>"/><input type="hidden" name="no" id="no">
                            </div>
                    </label></td>
                    <td> </td>
                    <td><div align="right"><strong>Entry No.</strong></div></td>
                     <%if(oper!=null && oper.equals("view") && hdrcode!=null && hdrdetails!=null){%>
            <td><input type="text" value="<%=hdrcode.get(3)%>" size="10"></td>
    <%}else{%>
                   <td><input type="text" name="entryno" id="entryno" value="<%=entryNo%>"/></td>
                             <%}%>
                            <div align="right"></div>
                </tr>
                <tr>
                    <td><b>Division</b></td>
                    <%if(oper!=null && oper.equals("view") && hdrcode!=null && hdrdetails!=null){%>
    <td><input type="text" value="<%=hdrdetails.get(9)%>" size="20"</td>
    <td><input type="hidden" name="div1" id="div1" value='<%=hdrcode.get(10)%>'></td>
    <%}else{%>
                   <td><input type="text" name="div" id="div" /></td>
                   <td><input type="hidden" name="div1" id="div1" /> </td>
              <%}%>
                    <td> </td>
                    <td> </td>
                    <td><div align="right"><strong>Unit</strong></div></td>
                   <%if(oper!=null && oper.equals("view") && hdrcode!=null && hdrdetails!=null){%>
    <td><input type="text" value="<%=hdrdetails.get(14)%>" size="20"</td>
    <td><input type="hidden" name="uni" id="uni" value='<%=hdrcode.get(12)%>'></td>
    <%}else{%>
                   <td><input type="text" name="unit" id="unit" /></td>
                   <td><input type="hidden" name="uni" id="uni" /> </td>
              <%}%>
                </tr>
                <tr>
    </html>
      Any suggestion on any above works is highly appreciated.
    Thanks and regards
    harshal

    Too much code. It's also not well intented nor formatted. I don't see a question either or it got lost in that heap of unformatted code.
    I will only answer the question in the thread's subject:
    How to retrieve multiple data from table and represent it in jsp pageTo retrieve, make use of HttpServletRequest#getParameterValues() and/or #getParameter().
    To display, make use of JSTL's c:forEach.

  • Custom components that accept multiple data types

    The components that come with Flex, such as Datagrid, can
    accept
    multiple data types as a data source. For instance, you can
    bind a
    Datagrid to XML return from an HTTPService request or you can
    build an
    array and bind to that. I'd like to build my own component
    that does
    something similar, but I can't find any examples of this. I
    don't
    really even know what terms I'd search under to find it.
    Can anyone out there give me any idea of how this is done?
    Also, I'm a
    bit hazy on how the column definitions you set up in the MXML
    tag get
    received inside the class. I'd appreciate any insight on how
    this
    works.
    Thanks;
    Amy

    "Amy Blankenship *AdobeCommunityExpert*"
    <[email protected]>
    wrote in message news:[email protected]...
    >
    > "rvollmar" <[email protected]> wrote in
    message
    > news:[email protected]...
    >> For the second part of your post, are you asking how
    to set up columns in
    >> ActionScript? e.g.
    >>
    >> private function setColumnConfig1(dg:DataGrid):void{
    >> colArray = new Array();
    >> var col1:DataGridColumn = new DataGridColumn();
    >> var col2:DataGridColumn = new DataGridColumn();
    >> var col3:DataGridColumn = new DataGridColumn();
    >> var col4:DataGridColumn = new DataGridColumn();
    >> var col5:DataGridColumn = new DataGridColumn();
    >> var col6:DataGridColumn = new DataGridColumn();
    >>
    >> col1.dataField = "recordName";
    >> col2.dataField = "image";
    >> col3.dataField = "recordAmount";
    >> col4.dataField = "who";
    >> col5.dataField = "where";
    >> col6.dataField = "when";
    >>
    >> col2.itemRenderer = application.ImageRenderer;
    >>
    >> colArray.push(col1);
    >> colArray.push(col2);
    >> colArray.push(col3);
    >> colArray.push(col4);
    >> colArray.push(col5);
    >> colArray.push(col6);
    >>
    >> dg.columns = colArray;
    >> }
    >>
    >> Or were you wondering, when one writes this in mxml:
    >>
    >> <mx:columns>
    >> <mx:DataGridColumn ...>
    >> ...
    >> </mx:columns>
    >>
    >> how do you then have the control use that
    information?
    >
    > The latter. But the fact is that I was misreading the
    example I was
    > looking at.
    >
    > <?xml version="1.0"?>
    > <!-- dpcontrols/DataGridSimpleAttributes.mxml -->
    > <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml">
    > <mx:DataGrid>
    > <mx:ArrayCollection>
    > <mx:Object Artist="Pavement"
    > Album="Slanted and Enchanted" Price="11.99" />
    > <mx:Object Artist="Pavement"
    > Album="Brighten the Corners" Price="11.99" />
    > </mx:ArrayCollection>
    > </mx:DataGrid>
    > </mx:Application>
    > I was thinking the ArrayCollection was going to the
    columns, but of course
    > it is the dataProvider. Am I right in thinking that
    internally the
    > control has a defaultProperty metatag that enables the
    contents of the
    > parent DataGrid tag to just come in and populate the
    dataProvider through
    > PFM?Thanks;Amy
    OK, I have looked at the source file, and it looks like the
    [DefaultProperty] metatdata tag is at least not used in the
    ListBase.as
    class. So I am guessing it is either higher or lower in the
    heirarchy...?
    -Amy

Maybe you are looking for