Re: PageItem in Report-SQL übergeben
geschrieben von:
christian_goto (---.dip0.t-ipconnect.de)
Datum:
moin,
hier im beispiel nicht mit textfeld ,sondern mit shuttle-item.
im shuttle kann man ja rechts auch mehrfachauswahl haben,kommt also aufs selbe raus.
beispiel:
1. shuttle anlegen, P10_SHUTTLE
2. report anlegen.
3. im report oben bei typ auf "sql abfrage (plsql-funktions-body,der eine sql abfrage zurückgibt umstellen)
4.report regionsquelle:
-------------------------------------------------
DECLARE
TEST_SQL VARCHAR2(32767) := 'select NACHNAME from TABELLE where ID IN (';
SHUTTLE_TEST APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
SHUTTLE_TEST := APEX_UTIL.STRING_TO_TABLE(:P10_SHUTTLE);
FOR I IN 1..SHUTTLE_TEST.COUNT LOOP
SHUTTLE_TEST(I) := DBMS_ASSERT.ENQUOTE_LITERAL(SHUTTLE_TEST(I));
END LOOP;
TEST_SQL := TEST_SQL||APEX_UTIL.TABLE_TO_STRING(SHUTTLE_TEST,',') ||')';
RETURN TEST_SQL;
END;
-------------------------------------------------
5.unter der regionsquelle noch umstellen auf:
generische spaltennamen verwenden (abfrage nur zur laufzeit parsen)
6.button zum abfeuern.
hier och meine shuttlewerteliste:
select NACHNAME display_value, ID return_value from TABELLE
order by 1
erklärung:
APEX_UTIL.STRING_TO_TABLE
Given a string, this function returns a PL/SQL array of type APEX_APPLICATION_GLOBAL.VC_ARR2. This array is a VARCHAR2(32767) table.
daher mache ich eine mehrfachauswahl mit dem shuttle, den shuttle-return wert(hier im beispiel ID) pack ich mit der APEX_UTIL.STRING_TO_TABLE funktion in ein table (nur zur laufzeit) und vergleiche mit der where clause die ID's der beiden tables.
edit: genauer gesagt stehen ja die ID's in der apex_util tabelle, mit der where clause übergebe ich die nachnamen einer echten tabelle,in der die ID's mit denen der apex_util tabelle übereinstimmen....
funktioniert einwandfrei :)
g/c
1 mal bearbeitet. Zuletzt am .