Multi-select list to select with in clause

I have a multi-select list that the user can select from. P200_NODE_SELECTION.
I take the value(s) of that list and parse them out in a process using this code:
declare
l_selected HTMLDB_APPLICATION_GLOBAL.VC_ARR2;
v_char varchar2(2000);
begin
l_selected:=HTMLDB_UTIL.STRING_TO_TABLE(to_char(:P200_NODE_SELECTION) );
for i in 1..l_selected.count
loop
if i=1
then
:P200_LIST_OF_NODES:=to_char(l_selected(i) );
else
:P200_LIST_OF_NODES:=to_char(:P200_LIST_OF_NODES)||','||to_char(l_selected(i) );
end if;
end loop;
end;
This PL/SQL is trying to create the in-list string to be used in as the LOV to populate another select list. The LOV query for the second multi-select list looks like this:
select instance_name DISP, instance_id RET
from instance
where to_char(node_id) in (:P200_LIST_OF_NODES)
I've tried this a couple of different ways. Without the to_char in the where clause (a terrible thing to do to a query I know) I get a numeric conversion error.
When I do it with the to_char, it works if I select one record in the multi-select list, but if there are more than one then the in list fails.
I'm sure there must be a better way to do this (or at least a way that works!).... anyone want to help me here?

Robert - Try  where instr(','||:P200_LIST_OF_NODES||',',','||to_char(node_id)||',') > 0...and do get rid of all those to_chars in the process.
Scott

Similar Messages

  • JPA - Select with where clause

    Hi
    I have 2 classes:
    -Class A
    -Class B with a member which holds a reference to an object of Class A --> unidirectional one-to-one relation. The mapping is the following:
                   <one-to-one name="a">
                        target-entity="domain.A" fetch="LAZY"
                        optional="false">
                        <join-column name="ID" table="A" />
                   </one-to-one>
    Now i want to find all objects of B which have a certain instance of A. I tried this, but it doesn't work:
         <named-query name="findBsByA">
              <query>select b from B b where b.a = ?1</query>
         </named-query>
    Any suggestions?
    Thanks for help
    Michael

    name or ID might be reserved words in access. Either change the name of the column or put [] around them. Also, you ar looking for a record where fields name and name1 are equal. You probably don't have a name1 field.
    String name1=nameTextfield.getText().trim();
    String query="SELECT [ID] from Suppliers WHERE [name]='"+name1+"';"
    Pay attention to the single and double quotes I have.

  • SELECT with WHERE clause for MSAccess from JDBC

    Hi,
    I am new user of MSAccess.I am getting exception: Invalid user type when i was trying the following code:
    String name1=nameTextfield.getText().trim();
    String query="SELECT ID from Suppliers WHERE name=name1;"
    Statement stmt=con.createStatement();
    ResultSet rs=stmt.executeQuery(query);
    while(rs.next())
    String id1=rs.getInt(1);
    System.out.println(id1);
    nameTextField is JTextField in my GUI.
    ID id auto field in table Suppliers.
    I am using MSAccess 97.
    I came to know that the JDBC SQL queries will be different for Access.
    Any body help me how to write SELECT statement?
    Thanks in advance,
    Sai Ram

    name or ID might be reserved words in access. Either change the name of the column or put [] around them. Also, you ar looking for a record where fields name and name1 are equal. You probably don't have a name1 field.
    String name1=nameTextfield.getText().trim();
    String query="SELECT [ID] from Suppliers WHERE [name]='"+name1+"';"
    Pay attention to the single and double quotes I have.

  • Preview - multi select with instant alpha? Possible

    Hi,
    I have an image that is non-contiguous. I want to crop it out of its white background. I used instant alpha to select the solid black image. But there are two of them and I want them both to stay apart of one another. I tried "command" selecting the second one, but it seems to be an either/or situation. How do I get both solid black images at the same time. How would I get 3 or 4 or 5? Like if I wanted to take off big block text from a white background. I tried selecting the white background, but then the islands of white inside of D and P and B etc don't get selected. I know there's a way to do this, isn't there?
    Much thanks!

    Thanks Topher. I guess the point was that Preview used to do it (at least in Leopard, I skipped Snow and am new to Lion) and I was wondering if they had just hidden the feature under new key combinations or some checkbox I needed to tick, but I couldn't find anything (or rather, Google couldn't find anything).
    It was nice to be able to open a PNG and quickly make it transparent without waiting for Photoshop to load, although now that my MacBook has a SSD that point is pretty moot.

  • File Browser with multi select....

    Is it possible to have a file browser with multi- select??? I have several (possibly dozens) of files in a directory that I'd like to up load using a file browser style item, but be able to select several at a time to up load rather that doing them on at a time. Is this possible???

    Different idea, look at this thread, where you could just have multiple file upload capacity in a form.. The multi-select with browser I believe is NOT possible with current version of APEX.
    how to Upload Multiple Files
    Thank you,
    Tony Miller
    Webster, TX

  • The Control A key is not working. I cannot multi-select my songs. I'm not sure if it is the problem with iTunes 10.6.1.7 or my PC settings encounter issues. Also, i cannot find Album Artwork online using iTunes and i cannot select any view form but List.

    The Control A key is not working. I cannot multi-select my songs. I'm not sure if it is the problem with iTunes 10.6.1.7 or my PC settings encounter issues. Also, i cannot find Album Artwork online using iTunes and i cannot select any view form but List.

    The Control A key is not working. I cannot multi-select my songs. I'm not sure if it is the problem with iTunes 10.6.1.7 or my PC settings encounter issues. Also, i cannot find Album Artwork online using iTunes and i cannot select any view form but List.

  • Upgrade to 10.1.3.4: Problems with multi-select list

    Hi,
    We upgraded from BiseSEone (10.1.3.2) to 10.1.3.4 (using BI EE). One of the features we were longing for was the improved multi-select list in the dashboard prompts (with a efficient search support). But after the Installation the multi-select list doesn't work at all. There are no data offered and the frames are missing. What could be go wrong here ? There were no problems during the installation. I told the installation to keep the configurations.
    regards
    Thomas
    Hi guru's,
    is there anybody around who experienced a similar phenomenon !!!
    regards
    Thomas
    Edited by: tdombrow10 on Jun 7, 2009 10:04 PM

    unfortuantely(i beleive i had the same problem)
    you have to rebuild them
    i hope i helped....
    http://greekoraclebi.blogspot.com/
    ///////////////////////////////////////

  • Populate multi select list  in on demand application process

    Hi all,
    To populate a multi select list we use this code:
    DECLARE
    l_counter number;
    l_o_name varchar2(2000);
    l_val varchar2(100);
    BEGIN
    l_val := wwv_flow.g_x01;
    owa_util.mime_header('text/xml', FALSE );
    htp.p('Cache-Control: no-cache');
    htp.p('Pragma: no-cache');
    owa_util.http_header_close;
    htp.prn('<select>');
    FOR rec IN (
    SELECT DISTINCT DECODE(districtscode,NULL,'- Onbekend -',districtscode) as "NAME"
    , DECODE(districtscode,NULL,'-2',districtscode)as "ID"
    FROM table
    WHERE (UPPER(dienstcode) =(l_val)
    or l_val = '-1')
    and objectsubcategorie_id in (select objectsubcategorie_id from table where ind_actief = 'J')
    and ind_uitgesloten is null
    UNION
    SELECT '- Alle districten -', '-1'
    FROM DUAL
    ORDER BY 1
    LOOP
    htp.prn('<option value="' || rec.ID || '">' || rec.NAME
    || '</option>');
    END LOOP;
    htp.prn('</select>');
    END;
    However: L_val is determined by a multiselect list. So, L_id can be: 'A:B:C'. I can convert the value of l_id to 'A','B','C' (with eg replace function). However in a where clause one cannot say: WHERE UPPER(dienstcode) in l_val. So I created a refcursor which I put in a pl/qsl table. Then I looped through the pl/sql table.
    Somehow this did not have the same results. Eventhough the refcursor gave back the same data which I tested by logging the values of the pl/sql table just before the htp.prn command, the htp.prn did not return the values.
    Does anyone know why this happens? Is there a difference between the for loop in this code and looping through a self defined pl/sql table?
    Thanks in advance
    Maurice

    Please, anybody could help me with this?
    Thank you!

  • Implementing multi-select lists in Oracle Forms

    Can anyone of you please tell me how to do multi select list in forms. I used picklist.fmb from oracle demo forms but it is not working fine. If someone could provide a working form I will be grateful to them.
    My mail id is [email protected]

    Some years ago I wrote (using Forms6i) utility MSLOV for such purposes, and even wrote an article about using it, but, of course, in Russian :-)
    I successfully use it in my Web Forms6i project and also test it in C-S Forms6i and Forms9i.
    If someone interesting, I also have short english usage description.
    It will be nice to hear your comments.
    At first, you need a code, which can be downloaded from http://www.geocities.com/luzanovp/mslov.html
    At the end of article there is a link to mslov.zip. Get it.
    Compile MSLOV.fmb and MSLOV.pll
    Run demo forms: EMP_DEMO.fmb, ORD_DEMO.fmb and see how it works.
    It requires Scott's tables: emp, dept, ord, item, product. You can create these tables from demobld.sql
    Below description about how to use it.
    You can show to user only one column, actually it can be expression (so, you
    are not limited here to one database column only ).
    Specify this column/expression by label_in parameter to fp_mslov.show_lov
    For example, if EMP table contains first_name and last_name columns and
    you want to show to the user full name do this:
    IF fp_mslov.show_lov (
       label_in => 'first_name || '' '' || last_name',
    Parameter id_in - this is what will be returned to you as a developer after user
    made his choice.
    For example, you want to receive array of EMPNO:
    IF fp_mslov.show_lov (
       label_in => 'first_name || '' '' || last_name',
       id_in => 'empno'
    In some cases you need to return more that one column.
    You can specify up to five additional columns for such purposes.
    For example, you want to return not only EMPNO, but also SAL and COMM columns:
    IF fp_mslov.show_lov (
       label_in => 'first_name || '' '' || last_name',
       id_in => 'empno',
       col1_in => 'sal',
       col2_in => 'comm'
    Also, you can use expressions in place of these columns:
       col3_in => 'sal + NVL(comm, 0)'
    From which table we must query?
    How to order by or specify some conditions(Where clause)?
    Where the place for GROUP BY?
    For all these questions you must use from_clause_in parameter.
    In our example we will query emp table and want order by salary in descending
    order:
    IF fp_mslov.show_lov (
       from_clause_in => 'FROM emp ORDER BY sal DESC',
    Parameter title_in to fp_mslov.show_lov is a self documented.
    This is a title for MSLOV dialog.
    So, to invoke mslov utility, we construct such call:
    IF fp_mslov.show_lov (
       label_in => 'first_name || '' '' || last_name',
       id_in => 'empno',
       col1_in => 'sal',
       col2_in => 'comm'
       col3_in => 'sal + NVL(comm, 0)',
       from_clause_in => 'FROM emp ORDER BY sal DESC',
       title_in => 'Select employees'
    THEN
    This function fp_mslov.show_lov will return TRUE if user made selection and
    FALSE if user press CANCEL (similar to SHOW_LOV builtin).
    Now, if it return TRUE we need to process returned rows (selected by user).
    I store it in global record group.
    But to work with this record group, you can use fp_mslov package, which
    provide desired API for this purpose.
    At first, you need to declare a variable of FP_MSLOV.OUT_RECORD_TYPE type.
    Actually this is a record type declared in fp_mslov package specification.
    DECLARE
       returned_rec  FP_MSLOV.OUT_RECORD_TYPE;
    To process selected rows we need a loop from 1 to a number of selected rows.
    Such number can be received by fp_mslov.rowcount function:
    FOR i IN 1 .. fp_mslov.rowcount
    LOOP
    END LOOP;
    To return one row we can use fp_mslov.get_row function.
    FOR i IN 1 .. fp_mslov.rowcount
    LOOP
       returned_rec := fp_mslov.get_row(i);
    END LOOP;
    Now, you can do what you want with returned row.
    RETURNED_REC record has the following fields which correspond to parameters of
    the
    fp_mslov.show_lov function: id, col1, col2, col3, col4, col5
    You know that in id field will be empno column, in col1 -> sal, etc
    So, you can process them:
    FOR i IN 1 .. fp_mslov.rowcount
    LOOP
       returned_rec := fp_mslov.get_row(i);
       message('Empno: ' || returned_rec.id);
       message('Sal: ' || returned_rec.col1);
       message('Comm: ' || returned_rec.col2);
       message('Sal+Comm: ' || returned_rec.col3);
    END LOOP;
    Remember that returned values always are varchar2 values.
    So if you need, for example, a date you need explicitly convert it to char when
    invoking
    fp_mslov.show_lov and then (after fp_mslov.get_row) convert it to date with the
    same format mask.
    For example:
       IF fp_mslov.show_lov (
          col4_in => 'TO_CHAR(hiredate, ''DD.MM.YYYY HH24:MI:SS'')',
       ... TO_DATE(returned_rec.col4, 'DD.MM.YYYY HH24:MI:SS');
    To clear memory structures which used by global record group and others
    variables,
    you need to use fp_mslov.clear procedure.
    And now all together:
    DECLARE
       returned_rec  FP_MSLOV.OUT_RECORD_TYPE;
    BEGIN
       IF fp_mslov.show_lov (
          label_in => 'first_name || '' '' || last_name',
          id_in => 'empno',
          col1_in => 'sal',
          col2_in => 'comm'
          col3_in => 'sal + NVL(comm, 0)',
          from_clause_in => 'FROM emp ORDER BY sal DESC',
          title_in => 'Select employees'
       THEN
          FOR i IN 1 .. fp_mslov.rowcount
          LOOP
             returned_rec := fp_mslov.get_row(i);
             message('Empno: ' || returned_rec.id);
             message('Sal: ' || returned_rec.col1);
             message('Comm: ' || returned_rec.col2);
             message('Sal+Comm: ' || returned_rec.col3);
          END LOOP;
       ELSE
          NULL; -- User press Cancel
       END IF;
       fp_mslov.clear;
    END;

  • SSRS 2012: How to get a "Select All" that returns NULL instead of an actual list of all values from a multi-select parameter?

    I have a multi-select parameter that can have a list of thousands of entries. In general, the user will pick a few entries from the list or "Select All". If they check "Select All", I would much prefer that I get a NULL or an empty string
    instead of a list of all values. Is there any way to do that?
    In experimenting with a work-around, I tried putting an "All" label with a null value in the list, but it is ignored (does not display in the drop-down). If I use an empty string for the value, my "All" entry does get displayed, but so
    does "Select All", which is confusing. Is there a way to suppress "Select All"?
    - Mark

    I adapted the following from a workaround posted by JNeo on 4/16/2010 at 11:14 AM at
    http://connect.microsoft.com/SQLServer/feedback/details/249227/multi-value-select-all-parameter-in-reporting-services
    To get a null value instead of the full list of all values when "Select All" is chosen:
    1) Add a multi-value parameter "MyParam" that lists the values to choose.
    2) Add a DataSet "ParamCount" identical to the one used by "MyParam", except that it returns a single column named [Count] that is a COUNT(*) of the same data
    3) Add a parameter "MyParamCount", set it to hidden and internal, then set the default value to 'Get values from a query', choosing "ParamCount" for the Dataset and the one [Count] column for the Value field.
    4) Change the parameter for the main report DataSet so that instead of using [@MyParam], it uses this expression:
    =IIF(Parameters!MyParam.Count =
    Parameters!ParamCount.Value, Nothing, Join(Parameters!MyParam.Value, ","))

  • Set Default Value of Multi-select list item

    I have a multi-select list item I want to default the value of to '%' (which is really '%null%') and have it selected. I tried setting default value of item, but it doesn't take '%null%'. I also tried a computation with a static of
    :P507_ITEM := '%null%'; How do you get the default value set and selected?

    Hi
    Shijesh is right, you need to change your null return value and use that return value as your default. Try and use something of the same datatype as your real return values if you plan to use '%' to display all as it will make your queries simpler. eg.
    Company A returns 1
    Company B return 2
    % returns 0
    Then your query would be...
    SELECT ...
    FROM ...
    WHERE company_id = DECODE(:P_COMPANY,1,1,2,2,0,company_id)
    Hope this makes sense.
    Cheers
    Ben

  • Values from a Multi-Select in the where clause of a Select statement

    I have a web page that solicits query parameters from the user.
    The selections that the user makes will populate the WHERE clause of a Select statement.
    One of the controls on the page is a multi-select control.
    When this page posts, I would like to execute a Select statement wherein the selected values from this control appear in the .. Column IN ( <list here> ) portion of the WHERE clause.
    This is an extremely common scenario, but I cannot seem to locate a how-to or message thread that addresses this specific case.
    I have an idea that it may involve dynamic SQL or Execute Immediate, but cannot seem to pin down the answer.
    Any help would be greatly appreciated!

    anonymous - As illustrated here: Re: Search on a typed in list of values
    Scott

  • Bug while saving multi select list

    Hi,
    My requirement is to construct a region where user can select their answer from available option. answer field can be multiple select/single select or text area.
    I have written below query to achieve different type of answer field.
    /**query****/
    DECLARE
    v_sql VARCHAR2 (32767);
    v_answer VARCHAR2 (32767);
    v_main_sql VARCHAR2 (32767);
    BEGIN
    FOR cur IN (SELECT question_id, question, answer_type, available_answer FROM question WHERE status= 'ACTV')
    LOOP
    v_sql := 'SELECT ';
    v_sql := v_sql || ' APEX_ITEM.hidden(4,question_id)||question question, '; /*do not show question id as per requirement*/
    IF cur.answer_type = 'MS' -- Multi Select List
    THEN
    v_answer := cur.available_answer;
    v_sql :=
    v_sql
    || ' APEX_ITEM.SELECT_LIST_FROM_QUERY(3,null,''SELECT * from table(
    AU_F_LOV_FN('''''
    || v_answer
    || '''''))'',''class="multiselect" multiple="multiple"'',''NO'') Answer ';
    ELSIF cur.answer_type = 'SS'
    THEN -- Single Select List
    v_answer := cur.available_answer;
    v_sql :=
    v_sql
    || ' APEX_ITEM.SELECT_LIST_FROM_QUERY(3,null,''SELECT * from table(
    AU_F_LOV_FN('''''
    || v_answer
    || '''''))'') Answer ';
    ELSE -- Free text
    v_sql := v_sql || ' apex_item.textarea(3,available_answer,2,20) Answer ';
    END IF;
    v_sql := v_sql || ' from question ';
    v_sql := v_sql || ' where question_id=' || cur.question_id;
    IF v_main_sql IS NULL THEN
    v_main_sql := v_sql;
    ELSE
    v_main_sql := v_main_sql ||' UNION ' || v_sql;
    END IF;
    END LOOP;
    RETURN v_main_sql;
    END;
    /***end of query***/
    If I select two options from multiple select list it is saving two records into table instead of saving one record with colon delimeter.
    /**query to save**/
    FOR i IN 1 .. APEX_APPLICATION.G_F03.COUNT
    LOOP
    IF APEX_APPLICATION.G_F03(i) IS NOT NULL THEN
    UPDATE question_answer
    SET answer = v_answer
    WHERE question_id = APEX_APPLICATION.G_F04(i)
    and call_id=p_sourceid;
    IF sql%rowcount =0 then
    INSERT INTO question_answer (question_id,
    answer,
    call_id,
    status,
    customer_id)
    VALUES (APEX_APPLICATION.G_F04(i),
    nvl(v_answer,APEX_APPLICATION.G_F03(i)),
    p_sourceid,
    'ACTV',
    p_customer_id);
    END if;
    END IF;
    END LOOP;
    /**End**/
    Can anyone please help me? Why is it happening? How to tweak my query so that it saves one record with colon delimeter.

    Technically, my understanding is that a Shuttle is just two multiselect lists where javascript moves the items from one to the other. Technically its the same thing, just different presentation and methods for selection. When you go to process, its seen the same way as you initially had your code setup so no code changes would have been necessary. As it's a built in item type and with APEX's backwards compatibility policies, if your code works now it should continue to work.

  • How Do I Filter a Report Using a Multi Select List Box and Specifying Date Between Begin Date and End Date

    Hope someone can help.  I have tried to find the best way to do this and can't seem to make sense of anything.  I'm using an Access 2013 Database and I have a report that is based on a query.  I've created a Report Criteria Form.  I
    need the user to be able to select multiple items in a list box and also to enter a Begin Date and End Date.  I then need my report to return only the records that meet all selected criteria.  It works fine with a ComboBox and 1 selection but can't
    get it to work with a List Box so they can select multiple items.  Any help is greatly appreciated while I still have hair left. 

    The query should return all records.
    Let's say you have the following controls on your report criteria form:
    txtStart: text box, formatted as a date.
    txtEnd: text box, formatted as a date.
    lbxMulti: multi-select list box.
    cmdOpenReport: command button used to open the report.
    The text boxes are used to filter the date/time field DateField, and the list box to filter the number field SomeField.
    The report to be opened is rptReport.
    The On Click event procedure for the command button could look like this:
    Private Sub cmdOpenReport_Click()
    Dim strWhere As String
    Dim strIn As String
    Dim varItm As Variant
    On Error GoTo ErrHandler
    If Not IsNull(Me.txtStart) Then
    strWhere = strWhere & " AND [DateField]>=#" & Format(Me.txtStart, "yyyy-mm-dd") & "#"
    End If
    If Not IsNull(Me.txtEnd) Then
    strWhere = strWhere & " AND [DateField]<=#" & Format(Me.txtEnd, "yyyy-mm-dd") & "#"
    End If
    For Each varItm In Me.lbxMulti.ItemsSelected
    strIn = strIn & "," & Me.lbxMulti.ItemData(varItm)
    Next varItm
    If strIn <> "" Then
    ' Remove initial comma
    strIn = Mid(strIn, 2)
    strWhere = strWhere & " AND [SomeField] In (" & strWhere & ")"
    End If
    If strWhere <> "" Then
    ' Remove initial " AND "
    strWhere = Mid(strWhere, 6)
    End If
    DoCmd.OpenReport ReportName:="rptMyReport", View:=acViewPreview, WhereCondition:=strWhere
    Exit Sub
    ErrHandler:
    If Err = 2501 Then
    ' Report cancelled - ignore
    Else
    MsgBox Err.Description, vbExclamation
    End If
    End Sub
    If SomeField is a text field instead of a number field, change the line
            strIn = strIn & "," & Me.lbxMulti.ItemData(varItm)
    to
            strIn = strIn & "," & Chr(34) & Me.lbxMulti.ItemData(varItm) & Chr(34)
    Regards, Hans Vogelaar (http://www.eileenslounge.com)

  • Multi Selection from a List Box to a Text Box

    So I want to be able to make Multi Selections within List box and export it to the Text box. Right now I have a Script running on the cal of the Text Box
    event.value = getField("LISTBOX").valueAsString;
    Which is able to do one selection but I cant find anybody that can grab two selecitons and put into a text box with commas for something. Is there a way to do this?
    -Zach

    Wow over my head a little. I understand what an array is with script but not how to write the script to handle it. I made this:
    event.value = getField("LISTBOX").value;
    But still no change in the behavior with multi selections. Example below if you want to check it out.
    https://dl.dropboxusercontent.com/u/2944617/formtext2.pdf

Maybe you are looking for