Dynamic LOV Columns

Hello.
Is it possible to make the column name and the return item also dynamical?
Especially the return item is important for me.
At the moment the only things I can manipulate are the column title and the width.
(set_lov_column_property)
Thank you for your help and sorry for my bad english. ;)
Stefan

Thanks for the Info about the Forms parameter. I've never seen them before.
But I stay at my solution because I need the dummy block also for other things and the whole project becomes an .olb at the end. And there it is better to user an dummy block instead of single parameters.

Similar Messages

  • Creating a dynamic lov based on a column

    Hi,
    I want to create a dynamic lov based on a column in a database-table.
    Eg. the query
    'select code, description from code_table'
    is the contents of the column 'lov_query' in the table 'parameters'.
    For every parameter there can be a different lov-query, but the result is always
    two columns (code and description, number and name, etc.), exactly what you need to use in a lov.
    I've written a (dbms_sql) function that takes the parameter-id and returns the lov_query.
    create or replace function "GET_PMR_LOV"
    (pmr_id in NUMBER)
    return VARCHAR2
    is
    cur INTEGER := DBMS_SQL.OPEN_CURSOR;
    fdbk INTEGER;
    l_pmr_id NUMBER(9) := pmr_id;
    l_stmnt VARCHAR2(2000);
    begin
    DBMS_SQL.PARSE
    (cur, 'select pmr.lov_query from parameters pmr where pmr.ID ' || ' = 'L_PMR_ID', DBMS_SQL.NATIVE);
    DBMS_SQL.BIND_VARIABLE (cur, 'L_PMR_ID', l_pmr_id);
    DBMS_SQL.DEFINE_COLUMN (cur, 1, l_stmnt, 2000);
    fdbk := DBMS_SQL.EXECUTE (cur);
    fdbk := DBMS_SQL.FETCH_ROWS (cur);
    IF fdbk > 0
    THEN
    DBMS_SQL.COLUMN_VALUE (cur, 1, l_stmnt);
    return (l_stmnt);
    ELSE     
    return null;
    END IF;
    DBMS_SQL.CLOSE_CURSOR (cur);
    END;
    But now I'm stuck on how to pass on this statement in HTMLDB
    as an dynamic lov, I don't seem to be able to execute this statement
    into the two display and return columns. Any ideas?

    Hello again,
    This lov is on an updatable report-column where the user has to make a choice from an non-named, popup and query-based lov. In the lov-query box I have just put:
    "return get_pmr_lov(:p41_param_id)" (without the quotes ;-)
    Here's my latest version plus an alternative, which both seem to work fine:
    create or replace function "GET_PMR_LOV"
    (pmr_id in NUMBER)
    return VARCHAR2
    is
    cur INTEGER := DBMS_SQL.OPEN_CURSOR;
    fdbk INTEGER;
    l_pmr_id NUMBER(9) := pmr_id;
    l_stmnt VARCHAR2(1000);
    begin
    DBMS_SQL.PARSE (cur, 'select pmr.lov_query from paramaters pmr where pmr.ID ' || '= :L_PMR_ID', DBMS_SQL.NATIVE);
    DBMS_SQL.BIND_VARIABLE (cur, 'L_PMR_ID', l_pmr_id);
    DBMS_SQL.DEFINE_COLUMN (cur, 1, l_stmnt, 1000);
    fdbk := DBMS_SQL.EXECUTE (cur);
    fdbk := DBMS_SQL.FETCH_ROWS (cur);
    IF fdbk > 0 THEN
    DBMS_SQL.COLUMN_VALUE (cur, 1, l_stmnt);
    return (l_stmnt);
    ELSE
    return null;
    END IF;
    DBMS_SQL.CLOSE_CURSOR (cur);
    END;
    create or replace function "GET_PMR_LOV2"
    (pmr_id in NUMBER)
    return VARCHAR2
    is
    l_pmr_id NUMBER(9) := pmr_id;
    l_stmnt VARCHAR2(1000);
    BEGIN
    EXECUTE IMMEDIATE 'select pmr.lov_query from parameters pmr where pmr.ID = :1'
    INTO l_stmnt USING l_pmr_id;
    return l_stmnt;
    END;
    The error-message remains the same, unable to bind :p41_param_id !

  • Problem with dynamic LOV and function

    Hello all!
    I'm having a problem with a dynamic lov in APEX 3.0.1.00.08. Hope you can help me!
    I have Report and Form application. On the Form page i have a Page Item (Popup Key LOV (Displays description, returns key value)).
    When i submit the sql code in the 'List of vaules defention' box. I get the following message;
    1 error has occurred
    LOV query is invalid, a display and a return value are needed, the column names need to be different. If your query contains an in-line query, the first FROM clause in the SQL statement must not belong to the in-line query.
    When i excecute the code below in TOAD or in the SQL Workshop it returns the values i want to see. But somehow APEX doesn't like the sql....
    SELECT REC_OMSCHRIJVING d, REC_DNS_ID r FROM
    TABLE(CAST(return_dns_lov_fn(:P2_DNS_ID) AS dns_table_type)) order by 1
    returns_dns_lov_fn is a function, code is below;
    CREATE OR REPLACE FUNCTION DRSSYS.return_dns_lov_fn (p2_dns_id number)
    RETURN dns_table_type
    AS
    v_data dns_table_type := dns_table_type ();
    BEGIN
    IF p2_dns_id = 2
    THEN
    FOR c IN (SELECT dns_id dns, omschrijving oms
    FROM d_status dst
    WHERE dst.dns_id IN (8, 10))
    LOOP
    v_data.EXTEND;
    v_data (v_data.COUNT) := dns_rectype (c.dns, c.oms);
    END LOOP;
    RETURN v_data;
    END IF;
    END;
    and the types;
    CREATE OR REPLACE TYPE DRSSYS.dns_rectype AS OBJECT (rec_dns_id NUMBER, rec_omschrijving VARCHAR2(255));
    CREATE OR REPLACE TYPE DRSSYS.dns_table_type AS TABLE OF dns_rectype;
    I tried some things i found on this forum, but they didn't work as well;
    SELECT REC_OMSCHRIJVING display_value, REC_DNS_ID result_display FROM
    TABLE(CAST(return_dns_lov_fn(:P2_DNS_ID) AS dns_table_type)) order by 1
    SELECT REC_OMSCHRIJVING display_value d, REC_DNS_ID result_display r FROM
    TABLE(CAST(return_dns_lov_fn(:P2_DNS_ID) AS dns_table_type)) order by 1
    SELECT a.REC_OMSCHRIJVING display_value, a.REC_DNS_ID result_display FROM
    TABLE(CAST(return_dns_lov_fn(:P2_DNS_ID) AS dns_table_type)) a order by 1
    Edited by: rajan.arkenbout on 8-mei-2009 14:41
    Edited by: rajan.arkenbout on 8-mei-2009 14:51

    I just had the same problem when I used a function in a where clause.
    I have a function that checks if the current user has acces or not (returning varchar 'Y' or 'N').
    In where clause I have this:
    where myFunction(:user, somePK) = 'Y'
    It seems that when APEX checked if my query was valid, my function triggered and exception.
    As Varad pointed out, check for exception that could be triggered by a null 'p2_dns_id'
    Hope that helped you out.
    Max

  • Dynamic LOV based on Current user

    How do i make a dynamic LOV based on the user id of the current user.
    Also how to insert values from a form into a database
    Can anyone please help me out.
    Thanks

    Use portal.wwctx_api.get_user to get the currently logged in userid.
    The simplest example of a form manipulating data is to create the form based on a table. All DML works automagically. You can base your form on a procedure with dummy columns and do your own DML if you wish. Lots more flexibility that way...

  • Item Selection on a dynamic LOV (SQL Query)

    Hi,
    I've a dynamic LOV with an SQL query who return a list of data (one column). When i select a data in this LOV to be use as an item (sql query) in the same page the data is always null. In debug mode substitution string is null.
    FYI : when the data is selected, a button is clik to perform an sql query for a report in another page.
    Thanks. Sorry Abasolute beginner
    Message was edited by:
    user581765

    Thanks for Your help.
    The date is in fact a CHAR display (not really a date) so that is not the error.
    For your information when i select a row in the list (format char YYYYMMDD_HHMM) it seems that Apex do not catch my select in the Session state.
    I've change the item name with P2_DATE_FLOW but the problem remain.
    This is the debug log if can help
    0.03: Application 114, Authentication: CUSTOM2, Page Template: 3644802034190382
    0.06: ...Session ID 1868105032215374 can be used
    0.06: ...Application session: 1868105032215374, user=Neop
    0.06: ...Determine if user "Neop" workspace "2859608277950243" can develop application "114" in workspace "2859608277950243"
    0.06: Session: Fetch session header information
    0.06: ...Metadata: Fetch page attributes for application 114, page 3
    0.06: Fetch session state from database
    0.06: Branch point: BEFORE_HEADER
    0.06: Fetch application meta data
    0.08: Computation point: BEFORE_HEADER
    0.08: Processing point: BEFORE_HEADER
    0.08: Show page template header
    0.08: Computation point: AFTER_HEADER
    0.08: Processing point: AFTER_HEADER
    0.08: Computation point: BEFORE_BOX_BODY
    0.08: Processing point: BEFORE_BOX_BODY
    0.08: Region: Report 1
    Report 1
    0.08: show report
    0.09: determine column headings
    0.09: parse query as: CFM_MDRE
    0.12: binding: ":P2_DATE_FLOW"="P2_DATE_FLOW" value="0"
    0.14: print column headings
    0.14: rows loop: 15 row(s)
    No data found.

  • Dynamic LOV in a Tabular Form

    Can somebody please tell me if there is a easy way to code a
    dynamic LOV in a Tabular Form?
    I need the ability to access a column value in the table row, to use in the WHERE clause of LOV query for another column in the row? Seems
    like that should be easy , but not finding an answer.
    Thanks for any help.
    Carol

    Hi Carol,
    You can add the select list's definition directly into your SQL statement using APEX_ITEM.SELECT_LIST_FROM_QUERY - see: [http://download.oracle.com/docs/cd/E10513_01/doc/apirefs.310/e12855/apex_item.htm#CHDIDGDA]
    If you first run your page with your existing select list on it, then do a View Source and look for the select list, you will see a "name" attribute of something like "f01" or "f02" etc. Make a note of the number part of this.
    Then update your SQL statement to include the above and using the number you noted as the Index value (say, 4):
    SELECT EMPNO,
    ENAME,
    DEPTNO,
    APEX_ITEM.SELECT_LIST_FROM_QUERY(4,MGR,'SELECT ENAME d, EMPNO r FROM EMP WHERE DEPTNO = ' || DEPTNO || ' AND EMPNO <> ' || EMPNO) MGR
    FROM EMPThat would give you a select list of employees in the same department as the current employee (excluding that employee themself)
    Andy

  • Select item on a Tabular form with a different dynamic LOV on each row

    I would like to use a tabular form where one of the columns is a dynamic LOV based Select, and where that dynamic LOV refers to one of the column values on each row.
    So if the tabular form represented a list of teams and the LOV-based Select column was the current team leader, I would want that select list to be populated only with the members of that team (different for each row). Since the list of team members is in some other table (all_players or something) I would want to populate the LOV with a query with a where clause that selected only those players records with a team-membership equal to the current tabular form's team id. So, on each row that select list's contents would be different.
    -- Justin

    I'm beating a dead horse here but I did get something to work with "less" code. My current needs do not require me to cascade drop downs, I only want 1. You can use the query like the in the first reply (but I don't have a table with joins) I created a simple two column table dept_emp with 4 records 10,null 20,null .... I want to fill the nulls with an employee but ONLY an employee that matches the dept. (Same concept of team leader and members).
    Here's the query:
    select apex_item.display_and_save(1,dept) dept,
    apex_item.select_list_from_query(2, name, 'select ename from emp where deptno='||dept) name
    from dept_emp
    I removed the code that was there already (ApplyMRU) and just put in this code:
    BEGIN
    FOR i IN 1..HTMLDB_APPLICATION.G_F01.COUNT LOOP
    UPDATE dept_emp
    SET
    name=HTMLDB_APPLICATION.G_F02(i)
    WHERE dept=to_number(HTMLDB_APPLICATION.G_F01(i));
    END LOOP;
    END;
    The G_F01 matches the column 1 and so forth. There's more documentation but little explanation at:
    http://download.oracle.com/docs/cd/B25329_01/doc/appdev.102/b25309/api.htm#sthref2171
    The thing I could not get to work was a dynamic message
    #MRU_COUNT# row(s) updated, #MRI_COUNT# row(s) inserted.
    Not sure when the MRU_COUNT gets populated (probably in the routine I removed ;))
    You're probably way past me by now but I like to have as little code as possible when it comes to maintaining an app. That's why I liked oracle forms so much. This kind of stuff was pretty easy to do.
    Thanks again everybody!

  • Problem - Creating a Dynamic LOV using duplicate value in select statement

    I am trying to create a Dynamic LOV by attempting to follow a pattern similar to the following:
    select shop_name d, shop_id r
    from shops
    order by 1
    However, I want to use the shop_name twice as in the following because I do not have any other unique identifier available such as a shop_id to associate with the shop name:
    select shop_name d, shop_name r
    from shops
    order by 1
    But I get an error where I am not allowed to duplicate the shop_name in the select statement. I read somewhere on this forum where it can be done but I can't find exactly how.
    Can someone tell or show me how to accomplish this?
    Thanks in anticipation for your answer.
    Thanks,
    Ric

    Ric,
    I just tried to do this on APEX 3.0, and it worked just fine with this SQL:
    select ename d, ename r from emp order by 1Perhaps you could put an example on apex.oracle.com or specify the error message that you're getting.
    So as long as you have uniquely aliased both columns, this should not present a problem.
    Thanks,
    - Scott -

  • Creating dynamic LOV in form builder 6i

    Hi All,
    I am new to form builder.
    I want to create dynamic lov, means
    Project type
    Client
    Work_type(thsi is also lov) ->> 1) Billable
    Reason (this is also lov) ->> 1) Billable
    Work_type(thsi is also lov) ->> 2) Non-Billable
    Reason (this is also lov) ->> 1) Fresher
    2) Project Manager
    As shown above, Suppose the project type is client then I will select either "Billable" or "Non-Billable" value.
    If I am selecting Work_type LOV as "Billable" then it should display "Billable" value in reason LOV
    or if I am selecting Non-Billable value from Work_type LOV then reason LOV will display the list of value as Fresher and Project Manager.
    Please help me, its very urgent.
    Thanks in advance.
    Regards,
    Bluetooth

    Bluetooth,
    This can be accomplished by creating two seperate record groups; one for Billable and one for Non-Billable. Then - in the WORK_TYPE When-Validate-Item (WVI)trigger - when the value is "Billable" you assign the Billable Record Group to your LOV or if the value is Non-Billable, then you assign the Non-Billable record group to your LOV. Your Record Group queries must return the same number of columns and the column names must match. If your record groups need to have a different number of columns and column names, then I would just use two seperate LOV's and assign them to the item accordingly. For example:
    /* Sample WVI trigger */
    DECLARE
      lov_id    LOV;
      item_id   ITEM;
    BEGIN
      lov_id := Find_LOV('YOUR_LOV_NAME');
      /* Option 1: Change Record Group of LOV */
      IF ( :YOUR_BLOCK.WORK_TYPE = 'BILLABLE' ) THEN
        IF ( Get_LOV_Property(lov_id, GROUP_NAME) != 'BILLABLE_RG' ) THEN
          Set_LOV_Property(lov_id, GROUP_NAME, 'BILLABLE_RG');
        END IF;
      ELSIF ( :YOUR_BLOCK.WORK_TYPE = 'NONBILLABLE' ) THEN
        IF ( Get_LOV_Property(lov_id, GROUP_NAME) != 'NONBILLABLE_RG' ) THEN
          Set_LOV_Property(lov_id, GROUP_NAME, 'NONBILLABLE_RG');
        END IF;
      END IF;
      item_id := Find_Item('YOUR_BLOCK.REASON');
      /* Option 2: Seperate LOV's */
      IF ( :YOUR_BLOCK.WORK_TYPE = 'BILLABLE' ) THEN
        IF ( Get_Item_Property(item_id, LOV_NAME) != 'BILLABLE_LOV' ) THEN
          Set_Item_Property(item_id, LOV_NAME, 'BILLABLE_LOV');
        END IF;
      ELSIF ( :YOUR_BLOCK.WORK_TYPE = 'NONBILLABLE' ) THEN
        IF ( Get_Item_Property(item_id, LOV_NAME) != 'NONBILLABLE_LOV' ) THEN
          Set_Item_Property(item_id, LOV_NAME, 'NONBILLABLE_LOV');
        END IF;
      END IF;Hope this helps,
    Craig B-)
    If someone's response is helpful or correct, please mark it accordingly.

  • Dynamic LOV on portlet

    I have a dynamic LOV as the only item in a portlet. The page is a 2 column layout with 2 tabs. When I click on the second tab I get 'There is currently no HTML content' message where the LOV should appear. Why?

    Hi, I'm using Discoverer portlet on my Portal. As far as I know you need to map your form parameters to the page parameters and page parameters to Discoverer Portlet parameter. (Form > Page > Discoverer). There seems to be no direct way to pass parameters to Discoverer portlet.
    Can you explain how did you build Custom Form with dynamic LOV and use session variables. I tried but I was unable to do so.
    Please, provide steps to do the task. This would be of great help.
    Thanks in advance.

  • Dynamic lov Creation.....

    hi
    how i can create a dynamic lov whose columns i will be knowing only at runtime
    ie sometimes the the columns in the select statement will be 2 some times it will be 5 sometimes 9...etc..to say n number.
    regards
    Kris

    Have not personally tried it, but could you not just create one lov with say 10 (or the max desired) columns and one record group with same number of columns, then at runtime change the record group to query what ever you wanted filling in the extra columns with nulls, then just set the column width of the null columns in the lov to 0.
    Should work.
    --pat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Dynamic LOV giving error

    Hi ,
    I have a dynamic LOV like this
    IF :P1_IND_MGR = 'I' THEN
    RETURN
    'SELECT DISTINCT(first_name||' '||last_name) a ,
    (first_name) b
    FROM MIS_CDR_HR_EMPLOYEES_MV
    ORDER BY 1';
    ELSE
    RETURN
    'SELECT DISTINCT(manager_name) a ,
    manager_name b
    FROM MIS_CDR_HR_EMPLOYEES_MV
    ORDER BY manager_name';
    END IF;
    When I run the application I get an error message like this , and its due to concatinating a space between first_name and last_name. How can I get the desired results ?
    " ORA-06550: line 3, column 34: PLS-00103: Encountered the symbol "||last_name) a , (first_name) b FROM MIS_CDR_HR_" when expecting one of the following: . ( * @ % & = - + ; < / > at in is mod remainder not rem <> or != or ~= >= <= <> and or like between || multiset member SUBMULTISET_ The symbol "." was substituted for "||last_name) a , (first_name) b FROM MIS_CDR_HR_" to continue.

    I think you need extra sinble quotes around your space in the first line:
    'SELECT DISTINCT(first_name||'' ''||last_name) a ,
    Jon.

  • Dynamic lov, Select List in Report

    Hi all,
    I have searched the APEX forum for dynamic lov but somehow no topic could really solve my problem.
    I have a report and 2 columns in this report are displayed as a select list. I want one of the select list show some values depending on the other select list in this report. If the value of the first select list is equal to some data the second select list should show a lov and otherwise nothing.
    All examples i have found so far seem to explain a solution for a select list item on the page and not for a select list in a report like in my case.
    Are there any advices or some links you can give?
    Thanks in advance
    Markus

    See http://htmldb.oracle.com/pls/otn/f?p=18326:54:1415328128204513::::P54_ID:1282
    and http://forums.oracle.com/forums/thread.jspa?messageID=1222153&#1222153

  • Return statment for dynamic LOV - exception handling

    Hello All,
    Good Morning.
    Oracle 11g, apex 3.2.1
    I am having an dynamic LOV with a return statement.
    code :-
    ==========================
    declare
    owner varchar2(12) :='';
    stmt varchar2(4000) :='';
    No_Records_Exception exception ;
    phase varchar2(30);
    year varchar2(30);
    month_quarter varchar2(30);
    begin
    stmt :='select distinct famid d, famid r from '
    ||:P1_SCHEMA||'.'||'FMLY';
    return stmt;
    exception
    when No_Records_Exception then
    raise_application_error (-20998 , ' Schema does not exist ' );
    when OTHERS then
    raise_application_error (-20999,' Select the schema first ' );
    end;
    ===================
    My question is - why the exception is not handled when there are no table found.
    Am getting the following errr ..
    Error: ORA-06550: line 1, column 120: PL/SQL: ORA-00903: invalid table name ORA-06550: line 1, column 7: PL/SQL: SQL Statement ignored performing List of Values query: "select distinct famid d, famid r from .FMLY".
    Pls let me know how to handle this error.. if the table is invalid.
    scenario for poping this error:-
    ==================
    I am having three "select list with redirect" items and one radio group ( having two Radion buttons - Relation , Famid )
    The requirement is when the user selects Famid radio then the lov is suppose to populate the multiselect list with famid values from table P2D2008M05.FMLY and the schema P2D2008M05 is selected from three list items
    P2D, 2008 , M05 one from each item .
    If the schema is not selected and the user selects radio famid , then the error is coming , I need to put a validation or error handling mechanism when in which ,if the user selects famid radio and the schema is not selected , I need to raise an exception with proper error message to the user saying that the schema is not selected.
    Pls helpin this regard.
    Thanks/kumar.

    Hi,
    Your exception is for function that return select.
    Error is raised when Apex procedures try use select your function returns.
    You need test your select inside function or create validations
    Your function could look something like this
    DECLARE
      stmt    VARCHAR2(4000);
      l_count NUMBER;
    BEGIN
      IF NVL(:P1_SCHEMA,'%'||'null%') = '%'||'null%' THEN
        raise_application_error (-20999,' Select the schema first ' );
      END IF;
      SELECT COUNT(1) INTO l_count FROM all_users WHERE username = :P1_SCHEMA ;
      IF l_count = 0 THEN
        raise_application_error (-20998 , ' Schema does not exist ' );
      END IF;
      stmt :='select distinct famid d, famid r from ' ||:P1_SCHEMA ||'.' ||'FMLY';
      RETURN stmt;
    END;That is just example, I did not test it. And I think it is not good idea raise errors inside LOV function.
    You should use Apex after submit validations
    Br,Jari

  • Read only item populated by dynamic LOV

    Since I'm using artificial keys in most of my table FKs, I need to use a lot of LOVs to provide the user with discernible data.
    Many of the columns I use an LOV for I need to be read only items. However, whenever I use a dynamic LOV, I do not see how to make it read only. It sets the value of the item to [].
    I know this can be accomplished in some cases with a join in the underlying query. However, many of the pages where I need to make this change are not based on a query.
    Is there a way to make an item populated by an LOV read only while still retaining the value?
    Thanks for your help!
    -Reid

    I'm using apex 3.2.1. Your testing and replies have helped me realize that the problem is that the column indeed did not have a value. When I had the item "display as" set to "select list" the LOV was also setup for allow NULL=NO. Thus, it was showing some value in the LOV in that item. But, when I switched to the "display as text" and set the always read only, then it gave the double brackets []. When I changed the allow NULL=YES, it worked fine and gave me a blank value.
    Thanks again!
    -Reid

Maybe you are looking for