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
Michaelname 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 Ramname 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.
-
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 PMunfortuantely(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
MauricePlease, 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; -
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"?
- MarkI 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.
-
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?
-ZachWow 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
-
Help! None of the music on that iPod is on my computer ever since I had to reinstall my os. The iPod has massive amounts of unused space, but I can't access it. What do I do?
-
INSTEAD of Trigger View for an Oracle EBS New form development
Hello, I am developing a new EBS form based on a database view. This form is an EBS form will run in an 11.5.10.2 environment and developed using 6i. The form has one data block that is based on the view. The view is joined and based on following tab
-
Placed rasters shift colors in PDF output
Hi all, New to the forum but been working with CS tools for many years now. I'm sure this problem is fairly straightforward but it has me completely stumped. This problem has surfaced recently; I've noticed it before but the situations were never as
-
SQL server express 2005 Creating a "user instance"
How do you create a user instance so that you dont have to be logged on as administrator?
-
I have installed LifeCycle trial version . and trying to convert pdf to rtf using following initialization Properties connectionProps = new Properties(); connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "jnp://loca