Pass column-name as a parameter to reports

Hello,
the code below calls a report. But now I want to sort the rows in the report. For example I have a text-item in my form-modul. If I type a column-name and press the button then the rows should be sorted in the report. Is it possible tp pass column-names as parameter to reports?
DECLARE
repid REPORT_OBJECT;
v_rep VARCHAR2(100);
rep_status VARCHAR2(20);
BEGIN
repid := find_report_object('STATIONSTOPOLOGIE');
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,RUNTIME);
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE);
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'html');
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,'rep_oracle-dev');
-- SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,'paramform=no pdeptno='||:dept.deptno);
v_rep := RUN_REPORT_OBJECT(repid);
rep_status := REPORT_OBJECT_STATUS(v_rep);
WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED')
LOOP
rep_status := report_object_status(v_rep);
END LOOP;
IF rep_status = 'FINISHED' THEN
WEB.SHOW_DOCUMENT('http://oracle-dev:8888/reports/rwservlet/getjobid'||
substr(v_rep,instr(v_rep,'_',-1)+1)||'?'||'server=rep_oracle-dev','_blank');
ELSE
message('Error when running report');
END IF;
END;

Hi,
the work has been done in reports. You can use a lexical parameter in reports to add a condition for sorting to the query like:
select .. from .. where ... &p_order.
Then add another parameter to the report (for example p_param). Fill p_param via your interface in forms (SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER, ....) with the column name. Then build a report trigger like:
if :p_param is null
then
:p_order:= null;
else
:p_order:= 'order by '||:p_param;
end if;
But have a look, that p_param can only get correct values.
Rainer

Similar Messages

  • Passing a column name as a parameter

    Good afternoon,
    I was wondering if any of you ever encountered the following situation and found a method to get around it...
    I recently created a pivot table using the SQL Query (PL/SQL function body returning SQL query) option.
    The table consisted of the following information:
    - Date range, Object Type and count.
    The final table looks something like this (pardon the lack of fancy markup, hopefully it will get the point across):
    Date        Object A    Object B    Object D    Object G
    01-apr-09   10           16         50          43
    02-apr-09   1            15         77          35
    03-apr-09   19           0          14          17
    04-apr-09   15           7          70          20
    05-apr-09   7            6          65          50And it goes on like that.
    I had to create the code dynamically because I don't know what Objects I will get in any given date range (for example: I could have something for Object C and nothing for Object D in the month of March). I had a cursor loop through the object types before creating the SQL query that builds the table above.
    The table is now working fine. What I'm trying to do now is do a little bit of drilling down in data.
    Since everything is dynamically built, I can't give actual column names in my report. Is there any way that, when I click on, for example, the "10" on April 1st in Object A that the column header "Object A" gets passed? #COL02# only passes the value "10" which isn't what I want, and I tried the other variations such as :COL02 and &COL02. without much luck.
    If you could shed some light on this problem, that would be greatly appreciated!
    Thank you for your time.
    Ivan

    Hi,
    You can achieve passing column name as parameter with the help of jquery.
    Below is the sample code
    <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript"> 
       google.load("jquery", "1.2.6"); 
    </script>
    <script type="text/javascript">
        //<![CDATA[
        $(document).ready( function() {
            $('.t20data').each( function(i) {
                $td =$(this);
                colHeader = $(this).attr("headers");
                $td.html('<a href="f?p=' + &APP_ID. + ':3' + ':' + &APP_SESSION. + '::NO:3:P3_COLUMN_HEADER,P3_COLUMN_VALUE:' + colHeader +',' +$td.text()+ '">' + $td.html() + '</a>');
        });                                  //]]>
    </script>Note - U need to change t20data , :p3_column_header , :p3_column_value to match you application.
    No need to add link individually by going into column attributes
    [E X A M P L E |http://apex.oracle.com/pls/otn/f?p=62171:2]
    Regards,
    Shijesh

  • How to pass column name as a   values from one page  to another

    hi
    i have created a report(pivot) from a table
    SQL> SELECT * FROM T;
    C1  C2          C3 D                SEQ
    A   AA           2                    1
    A   AB           3                    2
    A   AC           2                    3
    B   AB           5                    4
    B   AC           6                    5
    SQL> SELECT C1
      2  ,NVL(MAX(CASE WHEN C2='AA' THEN C3 END),'') AA
      3  ,NVL(MAX(CASE WHEN C2='AB' THEN C3 END),'') AB
      4  ,NVL(MAX(CASE WHEN C2='AC' THEN C3 END),'') AC
      5  ,SUM(C3) FROM T GROUP BY C1;
    C1          AA         AB         AC    SUM(C3)
    A            2          3          2          7
    B                       5          6         11
    SQL>
    my requirement in Apex is like this(reverse)
    eg-
    when i click on cell values '2' then,it should return
    C1  C2          C3 D                SEQ
    A   AA           2                    1
    {quote}how to pass column name as a  values from one page to another
    for example i have to pass 'c2' as a value to next page{quote}for report pivot you can reffer below link
    Report
    Amu

    thanks for your reply
    i 'm doing what exactly you mention here .
    my problem here is
    i have 15 columns
    i am executing a query based on the values of the column(column name)  in the target page
    1)here i am passing(all) the column values to the next page-but  i want to pass only one column values(column name)
    when i click on any cell of that  column
    OR
    2)i can pass all column name to target page -there(in the target page) i can filter out
    i think option 1 would good if you filter out the unwanted columns
    Regards
    Amul

  • How to pass column name at run time in function.

    how to pass column name at run time in function as parameter.
    thank in advance
    pramod patel

    Hello,
    Using dynamic sql you can pass column name to function. well I am not getting what you really want to do ? Please write in more detail. By the way I am providing one example here. see it uses dynamic sql.
    Create or replace function fun_updtest (p_columnname_varchar2 in varchar2,
    p_value_number in number)
    return number is
    v_stmt varchar2(500);
    begin
    v_stmt := 'update emp
    set '||p_columnname_varchar2||' = '||to_char(p_value_number)||'
              where empno = 7369';
    execute immediate v_stmt;
    return 0;
    commit;
    end;
    call to this function can be like this..
    declare
    v_number               number;
    begin
    v_number := fun_updtest('SAL',5000);
    end;
    Adinath Kamode

  • Execute immediate with using clause to pass column name dynamically

    Hai,
    Is there any way using execute immeidate to pass the column name dynamically. I used to pass the column value as dynamic with the help of "Using clause" . But if i use to pass column name, it is giving numberic error at run time. Eg,. for testing has been given below.
    1. Column value as dynamic, which is working correctly.
    create or replace function testexeimm (acctnum char)
    return number as
    acctbal number;
    begin
    execute immediate 'select balance from acct_master where acct_no=:a' into acctbal using acctnum;
    return acctbal;
    end;
    2. Column name as dynamic which is not working
    create or replace function testexeimm (colnam char)
    return char as
    acctbal char;
    begin
    execute immediate 'select :a from ch_acct_mast where rownum=1' into acctbal using colnam;
    return acctbal;
    end;
    Any help in this regard will be highly appericated.
    Regards
    Sridhar

    So the variable has to be numeric too:
    create or replace function testexeimm (colnam char)
    return number as
    acctbal number;
    begin
    execute immediate 'select '|||colnam||' from ch_acct_mast where rownum=1' into acctbal;
    return acctbal;
    end;Max
    http://oracleitalia.wordpress.com

  • Pass table name as a parameter to function

    Is there a way to pass table name as a parameter to functions? Then update the table in the function.
    Thanks a lot.
    Jiaxin

    Hi, Harm,
    Thank you very much for your suggestion and example. But to get my program work, i need to realise code like follows:
    CREATE OR REPLACE FUNCTION delstu_func(stuno char) RETURN NUMBER AS
    BEGIN
    EXECUTE IMMEDIATE 'DELETE FROM student s' ||
    'WHERE' || 's.student_number' || '=' || stuno;
    LOOP
    DBMS_OUTPUT.PUT_LINE('record deleted');
    END LOOP;
    END;
    SELECT delstu_func('s11') FROM STUDENT;
    The intention is to check if such a function can perform operations such as update, delete and insert on occurence of certain values. When executing the above statement, the system returns an error message:
    ERROR at line 1:
    ORA-00933: SQL command not properly ended
    ORA-06512: at "SCMJD1.DELSTU_FUNC", line 3
    Could you tell me where is wrong?
    Jiaxin

  • Passing Column name(String) in setting CallableStatement

    Is it possible to pass Column Name while setting the CallableStatement while using drivers for JDK 1.4, if yes how do I do it.
    Thanks!

    You don't necessarily need to use dynamic SQL;
    create or replace procedure p
      p_a number default null,
      p_b number default null,
      p_c number default null
    ) is
    begin
      insert into t
      values
        (p_a, p_b, p_c);
    end;
    Procedure createdUsing named notation;
    exec p(p_a =>1, p_c => 3);
    PL/SQL procedure successfully completed
    exec p(p_b =>20, p_c => 30);
    PL/SQL procedure successfully completedPassing NULLs;
    exec p(4, null, 6);
    PL/SQL procedure successfully completed
    exec p(40, 50, null);
    PL/SQL procedure successfully completed
    select * from t;
             A          B          C
             1                     3
                       20         30
             4                     6
            40         50

  • Script to stop running SQL Agent job without passing job name as a parameter

    Looking for script to stop running job and don’t want to pass job name as a parameter, any job which is in running state I want that to be stop/disable.
    I have script to disable all jobs however if any jobs are in running state my requirement is to stop that job immediately and gets disable.
    Rahul

    Try the below scripts and then apply script to disable all jobs.
    execute xp_cmdshell 'net stop sqlserveragent'
    execute xp_cmdshell 'net start sqlserveragent'
    Regards, RSingh

  • Pass column names dynamically in report

    Hello experts,
    I am creating an ALV report where i need to pass the column names dynamically. if the current month is March and year is 2009. the column names should be as below
    March 2009 April 2009 May 2009 June 2009 ..............till Feb 2010 (total columns are 12)
    if the current month is June and year is 2010 it shoud be displayed as
    June 2010 July 2010 Aug 2010................till May2011
    I am actually calculating the forecast qty for each month and displaying in a report from the current month.
    How to write field catelog for this requirement?
    Thanks in Advance.
    Rajesh.

    I think in the fieldcat, at the time of declearation, you can alter the field description depending on the present month.
    If present_month = January
    wa_fieldcat-reptext_ddic = 'January'.       " Field description
    elseif present month = February.
    wa_fieldcat-reptext_ddic = 'February'.       " Field description
    on so on.....................
    Kuntal

  • Column name in link on sql report?

    Hey guys -
    Is there some way to put the column name of a report in a link?
    When you define a link on a column you have the ability to use a substition string for the VALUE of a particular column... but I want to somehow pass the string value of the column.... anyone know how to do this?
    Thanks

    Not the value of the column.. I want the actual column name...
    i.e.
    Items on page to set:
    txtbox1
    txtbox2
    Query:
    Channel          INS1     INS2     INS3     INS4
    Retail          13     1     333     55
    Wholesale     4234     23     1     44Okay, so I want to make a link on the values in the query (the #'s) to set the values of the txtboxes...
    example would be if I click on 333 I want it to set txtbox1="Retail" and txtbox2="INS3"
    The channel one is fine I just use the substition string of #COL1# in the link and it replaces the value... but nothing that I can find on how ot set txtbox2="INS3"
    Edited by: nferreri on May 15, 2009 9:51 AM

  • How to pass printer name as a parameter to Bursting control file

    We are on 11.5.10.2 using XML Publisher 5.6.3. We ahve a requirement, where we need to print our invoices to different printers.
    How do we pass the printer name as a parameter to Bursting control file. Can the bursting control file be created to use the printer parameter.
    If it can, can you please provide some examples.
    - Vasu -

    Hi.
    I have created Formula column and it is coming in xml data.
    Like this way
    <CP_TAX_NO>CZ27813941</CP_TAX_NO>
    <CP_CUST_TAX_REG>CZ680527617</CP_CUST_TAX_REG>
    <CF_PRINTER_NAME>ABC_hp4250</CF_PRINTER_NAME>
    <C_REQ_ID>12310217</C_REQ_ID>
    </ISOPTWSHRDPAK>
    But while i passed it bursting directory, it is not printing, if i hardcode over there then it is printing.
    Bursting file code
    <xapi:delivery>
         <xapi:print id="printer1" printer="ipp://localhost:631/printers/${CF_PRINTER_NAME}" copies="1" />
    </xapi:delivery>
    In bursting program file It is display like :
    [1]printer-uri:ipp://localhost:631/printers/null
    If i pass hardcode value instead of cf_printer_name then it is working fine
    [1]printer-uri:ipp://localhost:631/printers/ABC_hp4250
    Pls suggest what to do?

  • How to pass column name in slect statement in query

    hi,
    i want to make a report where in query select statement using variable as a column name. but its not working plz guide me how can i do this.
    i have created a function which return column name through variable & that variable i want to to use in select statement
    select :m1 from table1;
    regards

    Hi,
    Create a user parameter (say P_field), and assign a valid field name as initial value (say NAME), And In the Query, write
    SELECT CODE, &P_field FN_FIELD FROM <table_name> WHERE <condition>And in the BEFORE PARAMETER FORM Trigger under the Report Triggers, write,
    function BeforePForm return boolean is
    begin
      :P_field := <your_function_call>;
      return (TRUE);
    end;And use that FN_FIELD field in the report.
    Hope this will clear your issue.
    Regards,
    Manu.

  • Passing column names in as a variable

    I know in SQL server there is a way you can pass a variable in to the procedure and put that variable as a column name, Oracle doesn't seem to pick the variable up as a column name. Can anyone show me how with a simple select statement

    bgulcu wrote:
    I'm having a similar problem. I didn't want to open up another thread since it's related.
    Problem:
    I have 107 columns on a table. The number of columns increases almost every month.
    I have an array of columns, which I have gathered from the db. I need to pivot the whole table, but due to indefinite number of columns, it had to be dynamic sql.
    Premature Solution:
    Right now, the solution that we have runs through the array of columns and uses dynamic sql to query for every single cell to get the value. Considering that we have 1000+ rows on this table, in order to do the transformation, we send 107000+ queries which is just ugly. It works, but I don't feel comfortable about it.
    Solution:
    Since we are able to get a single row of 107 columns, why don't we gather the whole row, and get the information out from it instead of tiring up the server? The indefinite number of columns is a problem, but we have the whole list in an array, lets say feature_array. So what I want to do is to get the date from the row, ie myRow.feature_array(1), myRow.feature_array(2), ..., myRow.feature_array(i).
    I just learned that it's not possible to do it (from this thread).You just misunderstood the contents of this thread. What we said is that you can't do such things with static SQL, so you need to use dynamic sql.
    What has also been told was that using dynamic sql for such a purpose is just the result of a bad design. Use a relational table as a bi-dimensional array is not right, it is possible but it's not right for the simple reason that you need a procedural language to process the dynamic SQL that is needed to retrieve data.
    Probably on database programming there's only a rule of thumb and it says: "Maximize SQL minimize PL/SQL" (or any procedural language like java). The only exceptions to keep code in procedural language must depend on a complexity reduction determined by its use. In your case there is no complexity reduction determined by the use of a procedural language.
    In the thread on this link(Schema integrity I discussed about how to implement a solution you can use as alternative for submitting queries with variable column names.
    If you introduce parameter management in your model probably you could have your problem solved with the use of only a single SQL statement. And that may be a good designed model.
    Bye Alessandro

  • Passing column name dianamically in an insert query

    i have a procedure hwre i used an inser query.eg
    insert into table (a,b,c) values(...)
    i need to pass a,b,c ie column names as parameter.depending upon the condition the column name will change.

    You don't necessarily need to use dynamic SQL;
    create or replace procedure p
      p_a number default null,
      p_b number default null,
      p_c number default null
    ) is
    begin
      insert into t
      values
        (p_a, p_b, p_c);
    end;
    Procedure createdUsing named notation;
    exec p(p_a =>1, p_c => 3);
    PL/SQL procedure successfully completed
    exec p(p_b =>20, p_c => 30);
    PL/SQL procedure successfully completedPassing NULLs;
    exec p(4, null, 6);
    PL/SQL procedure successfully completed
    exec p(40, 50, null);
    PL/SQL procedure successfully completed
    select * from t;
             A          B          C
             1                     3
                       20         30
             4                     6
            40         50

  • How to rename C00n generic column names in a Dynamic SQL report

    I have a an interface whereby the user can select 1 to 60 (upper limit) columns out of 90 possible columns (using a shuttle) from one table before running a report.
    To construct the SQL that will eventually execute, I'm using a "PLSQL function body returning SQL query" with dynamic SQL. The only problem is that I have to use "Generic Column Names" option to be able to compile the code and end up with c001 to c060 as the column names.
    How can I use the names of the selected columns as the report headings rather than c001, C002... etc?
    I do not know beforehand which columns, or how many columns or the order of the selected columns.
    I know Denes K has a demo called Pick Columns but I can't access his code. I have a hunch though that he may be just using conditions to hide/show the apropriate columns.
    thanks in advance
    PaulP

    Hi Paul
    I would change the Heading Type in the Report Details screen to PLSQL and use the shuttle item to return the column values. e.g.
    RETURN :p1_shuttle;
    I'm assuming the shuttle already has a colon separated list of the column headings in the correct order?
    I hope that helps
    Shunt

Maybe you are looking for

  • IWeb "Original Size" download option? -- Not Even Close!

    Unless I'm doing something very wrong -- which I sincerely hope is the case -- then iWeb's photo prefs are guilty of seriously false advertising. I'm trying to create a "My Albums" page, such that the photos in the various albums it indexes can be do

  • Flash Player plug-in has stopped working

    Hello, It's about 1-2 months that I have this constant problem with Flash Player plug-in. It occurs me (sometimes as soon as the page charges) everytime while I'm playing browser games (like FB ones, Anno-Online, Drakensang Online...) and, maybe, twi

  • Early 08 MBPro-TCP/IP settings are not saved

    On my home wireless network I have MAC address filtering enabled and broadcast SSID disabled. All MAC addresses are entered in the router's filter. An early 08 MBPro does not retain network settings for Verizon router on the network. When I look at t

  • Cannot perform rounding for invoices with a currency other than the documen

    Hi all, I need some one to help me I want to process the incoming payment. The AR Invoice is using USD In Incoming Payment i want to pay using SGD, I already set the BP in all currency I also set the Bank account in Bank transfer payment mean in all

  • Best setup for me with Audig

    Hi, a couple of questions if I may : I have a SB Audigy card (the model sticker end with 090 - this I cannot find on the list) - it has a firewire connector at the end..... ) What is the best way to connect this to my Sony TA-KSl7 amplifier ? The son