Select All problems on an updateable report
Greetings. I have a problem with the Updateable Report functionality in Apex version 3.0.1.00.07. I'd love to demonstrate the problem, but my account at apex.oracle.com is version 3.2.0.00.27, and apparently, the Updateable Report functionality has been removed from that version. Does anyone know if there's a way to create an Oracle account using older versions?
My problems, in brief, are that when you have more than one updateable report region on the same page, clicking Select All on either table selects all rows of both tables; and that if both tables have only one row, clicking on Select all does nothing.
Please see http://docs.google.com/Doc?id=dccf36js_40gmczpddd for a more detailed problem description.
Any thoughts on how to solve either or both of these problems is much appreciated. Thanks!
Hi,
Firstly, you can still create Updatable reports in the latest version of Apex. Create a Report using the SQL Wizard and, when the report region has been created, change the report type.
Secondly, the checkboxes for both reports are being ticked/unticked together as the javascript being run assumes that there is only one updatable report on the page and, therefore, only one set of "f01" checkboxes. You can get around this by overriding the javascript by adding your own version.
Create a new region in the Before Footer region of the page and using No Template (so that the region is hidden) and use the following as the source:
<script type="text/javascript">
function checkAll(masterCheckbox) {
var p = masterCheckbox.parentNode;
while (p.tagName != 'TABLE')
p = p.parentNode;
var f = p.getElementsByTagName("input");
if (masterCheckbox.checked) {
for (var i = 0; i < f.length; i++) {
if (f.type == "checkbox") {
if (f[i].checked==false) {
f[i].checked=true;
highlight_row(f[i],i);
} else {
for (var i = 0; i< f.length; i++) {
if (f[i].type == "checkbox") {
if (f[i].checked == true) {
f[i].checked = false;
highlight_row(f[i],i);
</script>
I have done this here: [http://apex.oracle.com/pls/otn/f?p=267:82]
One thing though... What happens when the user submits the page? Both reports will have "f01" checkboxes with values starting from 1 and only those that are ticked are submitted with the page. Thus, a checkbox with a value of 1 could refer to either report.
Andy
Similar Messages
-
Spool requests -- select all problems
Good Day all:
I am running into a interesting problem with the SAP Spool. The Tax Reporter generates several identical tax forms across company codes. For instance, an unemployment tax form is generated across company codes 1111 to 9999 and one form is generated for each company code within that range. What's happening is this, when the users "select all" then print, the first company code is showing up on print queue for all of the printed forms. So for instance there are 20 company codes and the each company code has 1 form. The first company (1111) will show up in each subsequent print job, even though each form has a different spool number assigned to it. Wheras I would expect to see 1111 for the first form, 2222 for the next and so on .
So my question is this. If the user chooses to select-all, then how would we go about separating the spool numbers and jobs as they entered the queue?
Thank you in advance for your help.
JohnJohn,
try this, just to make sure that there is no printer issue. after selecting all the spool use 'Print with changed parameters (Shift + F1) (small printer icon) and make sure there is only one copy in the next screen. -
Select all check box in interactve report
Hi,
I am writing an interactive report. The second screen will display the check box for thye user to select the items.
Now the requrement is to create an option like select all means it should select all the check boxes.
How can I create this option of select all.
Thanks.Hi,
Please check this example.
<
REPORT Z_TEST NO STANDARD PAGE HEADING.
DATA: t_flag TYPE STANDARD TABLE OF xfeld,
s_flag TYPE xfeld.
START-OF-SELECTION.
DO 10 TIMES.
WRITE:/ s_flag AS CHECKBOX,
sy-index.
APPEND s_flag TO t_flag.
HIDE s_flag.
ENDDO.
AT LINE-SELECTION.
LOOP AT t_flag INTO s_flag.
s_flag = 'X'.
MODIFY LINE sy-tabix LINE VALUE FROM s_flag.
ENDLOOP.
Thanks
Naren -
Selecting all hierarchy nodes in the report
Hi Friends,
In my report I have a Hierarchy 0ORGUNIT, there are a few sub nodes under this hierarchy.
When the user runs the report if they want to see all the nodes under a top node, they have to expand each node till the last node and select them one by one.
My question is, is it possible to select all the sub nodes under a node just by selecting the top node?.
If yes can someone please let me know how to do this?.
I did check the sdn, but could get anything.
Thanks in adv.
Regards
BNHi,
You can do that for the initial display i.e. the very first time you execute the query but once you collapse all the nodes you will not be able to expand all the nodes with one click.
For showing different levels in the first display go to the characteristic properties on which you have hierarchy maintained, in the hierarchy properties section set the option 'Expand to Level' and hierarchy will be expaned for all the nodes till the level you select.
Regards,
Durgesh. -
Store all values from updateable report on clientside for later use
apex 4.2 , 11xe
hello,
it is possible to store all values from an updateable report to something like an cache BEFORE sent it to DB ?
Background:
i have an modified updateable report ,look the jpg
http://www10.pic-upload.de/25.06.13/3zq5wr23awwg.jpg
updateable report have ever 29 rows. as example i make time entrys for an employee. very often the next employee have the same timeentrys. now iam thinking about to make the entrys for the first employee, then click a button to store the values from ALL cells into somting like a javascript cache or jquery.data() . when i pull another employee from lov i have a fresh empty report( with 29 rows) and now i want to call the data back from cache to the cells (with another button). the cache shouldnt be destroyed when refresh the page,cause there is a page refresh when pull another employee from lov.
is it possible to store all cell values(empty or not) from report all in one?
what is the best and simplest way ?
good would be an example for the code or method i should use.
or is somthing inside apex i could use for that. i looked in apex.api but didnt found something.
my report based on a view with iof trigger and apex collection.
greets/christianthx for answer jarola and sorry for my bad english.
apex collection will not work.
let me explain why not and i think something like javascript/jquery is better for that.
there is a table MAZEIT and i have this updateable report. when i select an employee from lov, a collection will be created. the collection look in MAZEIT ,perhaps there are real timeentrys, in this case the collection will be modified and give me 29 rows,some are filled. or there are no real entrys and the collection give me 29 empty rows.
here my report sql:
select
"HID_SEQ_ID",
"DATUM",
"WOTAG",
"WOTAGNR",
"KNDABT_ID",
"ZEIT",
"BEGINN",
"ENDE",
"PAUSE",
"ZUSCHLAG",
"BEM",
"MELDUNG"
from "#OWNER#"."V_COLL_MAZEIT"
here the v_coll_mazeit (view) sql
CREATE OR REPLACE VIEW V_COLL_MAZEIT AS
SELECT seq_id HID_SEQ_ID -- APEX_COLLECTIONS.SEQ_ID
,C001 HID_MAZEIT_ID -- MAZEIT.ID
,C002 DATUM -- Datum DD.MM.YYYY
,C003 WOTAG -- Wochentag Mo/Di/...
,C004 WOTAGNR -- Wochentag 1/2/...
,C005 KNDABT_ID -- Abteilung
,C006 ZEIT -- Zeit in HH24:MI
,C007 BEGINN -- Beginn in HH24:MI
,C008 ENDE -- Ende in HH24:MI
,C009 PAUSE -- Pause in HH24:MI
,C010 ZUSCHLAG
,C011 BEM
,C040 HID_MANDANT_ID
,C041 HID_KND_ID
,C042 HID_MA_ID
,C043 HID_KW
,C048 HID_HASH4CHECK -- Hash für Check auf Änderungen MAZEIT
,C049 HID_SORTIER -- für ORDER BY hier Arbeitsbeginn
,C050 MELDUNG -- für FehlerMeldungen
FROM APEX_COLLECTIONS
WHERE COLLECTION_NAME='V_COLL_MAZEIT'
ORDER BY HID_SORTIER;
here the trigger (iof) from v_coll_mazeit
CREATE OR REPLACE TRIGGER "V_COLL_MAZEIT_IOF_U_TRG"
INSTEAD OF UPDATE ON V_COLL_MAZEIT
FOR EACH ROW
BEGIN
--RAISE_APPLICATION_ERROR(-20004,'NIX DA');
CM_MEAT.V_COLL_MAZEIT_IOF_U_TRG(
:NEW.HID_SEQ_ID
,:NEW.HID_MAZEIT_ID
,:NEW.DATUM
,:NEW.WOTAG
,:NEW.WOTAGNR
,:NEW.KNDABT_ID
,:NEW.ZEIT
,:NEW.BEGINN
,:NEW.ENDE
,:NEW.PAUSE
,:NEW.ZUSCHLAG
,:NEW.BEM
,:NEW.HID_HASH4CHECK
,:NEW.HID_SORTIER
,:NEW.MELDUNG
END V_COLL_MAZEIT_IOF_U_TRG;
and here a package procedure when i select an employee:
PROCEDURE V_COLL_MAZEIT_PROC(
iAction IN PLS_INTEGER,
iDatum IN DATE DEFAULT SYSDATE,
iMandantId IN MAZEIT.MANDANT_ID%TYPE,
iKndId IN MAZEIT.KND_ID%TYPE,
iMaId IN MAZEIT.MA_ID%TYPE,
oCollName OUT VARCHAR2)
IS
TK_FUNC_NAME CONSTANT USER_OBJECTS.OBJECT_NAME%TYPE := 'V_COLL_MAZEIT_PROC';
TK_COLL_NAME CONSTANT APEX_COLLECTIONS.COLLECTION_NAME%TYPE := 'V_COLL_MAZEIT';
TK_MD5 CONSTANT VARCHAR2(2) := 'NO';
TYPE t_Tage_TAB IS TABLE OF DATE INDEX BY BINARY_INTEGER;
TYPE t_TageVC_TAB IS TABLE OF VARCHAR2(8) INDEX BY BINARY_INTEGER;
TYPE t_TageI_TAB IS TABLE OF PLS_INTEGER INDEX BY BINARY_INTEGER;
tTage t_Tage_TAB;
tTageVC t_TageVC_TAB;
tTageI t_TageI_TAB;
vDatum DATE;
vDatumCh VARCHAR2(8);
vKW4Db MAZEIT.KW%TYPE;
vI PLS_INTEGER := 0;
vAnz PLS_INTEGER := 0;
BEGIN
FOR rec IN (SELECT * FROM NLS_SESSION_PARAMETERS)
LOOP
InsProto(rec.PARAMETER||'=['||rec.VALUE||']',
QK_PACK_NAME,TK_FUNC_NAME);
END LOOP;
CMT.InsProto('iAction='||iAction||', iDatum='||iDatum||', iMandantId='||iMandantId||', iKndId='||iKndId||', iMaId'||iMaId,
QK_PACK_NAME,TK_FUNC_NAME);
oCollName := TK_COLL_NAME;
IF iAction=0 THEN -- löschen
IF APEX_COLLECTION.COLLECTION_EXISTS(p_collection_name=>TK_COLL_NAME) THEN
APEX_COLLECTION.TRUNCATE_COLLECTION(TK_COLL_NAME);
APEX_COLLECTION.DELETE_COLLECTION(TK_COLL_NAME);
END IF;
|| Säubern und anlegen
ELSIF iAction=1 THEN
IF APEX_COLLECTION.COLLECTION_EXISTS(p_collection_name=>TK_COLL_NAME) THEN
APEX_COLLECTION.TRUNCATE_COLLECTION(p_collection_name=>TK_COLL_NAME);
ELSE
APEX_COLLECTION.CREATE_COLLECTION(p_collection_name=>TK_COLL_NAME);
END IF;
vDatum := NVL(iDATUM,SYSDATE);
vDatum := TO_DATE(TO_CHAR(vDatum,'YYYYMMDD')||'000000','YYYYMMDDHH24MISS');
vKW4Db := GetKW4Db(vDatum);
tTage(1) := CMT.GetMonday(vDATUM,0);
SELECT tTage(1) + 1DAY,tTage(1) + 2DAY,tTage(1) + 3DAY,tTage(1) + 4DAY,tTage(1) + 5DAY,tTage(1) + 6DAY
INTO tTage(2),tTage(3),tTage(4),tTage(5),tTage(6),tTage(7)
FROM DUAL;
FOR i IN 1..7 LOOP tTageI(i) := 0; tTageVC(i) := TO_CHAR(tTage(i),'YYYYMMDD'); END LOOP;
-- erste Zeile enthält Default-Werte
APEX_COLLECTION.add_member( p_COLLECTION_name=> TK_COLL_NAME,p_generate_md5=>TK_MD5
,P_C001 => 0 -- MAZEIT.ID
,P_C002 => '<b>Vorgabe</b>' -- Datum DD.MM.YYYY
,P_C003 => ' ' -- Wochentag Mo/Di/...
,P_C004 => ' ' -- Wochentag 1/2/...
,P_C005 => 0 -- MAZEIT.KNDABT_ID
,P_C006 => NULL -- Zeit in HH24:MI
,P_C007 => NULL -- Beginn in HH24:MI
,P_C008 => NULL -- Ende in HH24:MI
,P_C009 => NULL -- Pause in HH24:MI
,P_C010 => NULL -- Zuschlag
,P_C011 => NULL -- Bem
,P_C040 => iMandantId
,P_C041 => iKndId
,P_C042 => iMaId
,P_C043 => vKW4Db
,P_C048 => '-1' -- Hash für Check auf Änderungen MAZEIT
,P_C049 => ' ' -- für ORDER BY hier Arbeitsbeginn
,P_C050 => NULL
FOR rec IN (SELECT z.*,
TO_CHAR(DBMS_UTILITY.get_hash_value(
z.id||'|'||
z.mandant_id||'|'||
z.majob_id||'|'||
z.ma_id||'|'||
z.knd_id||'|'||
z.kndabt_id||'|'||
z.kw||'|'||
z.arb_beg||'|'||
z.arb_end||'|'||
z.zeit||'|'||
z.pause||'|'||
z.zuschlag||'|'||
z.stk_anz||'|'||
z.stk_kg||'|'||
z.stk_gemuur||'|'||
z.stk_bezahlt||'|'||
z.bem||'|'||
z.ART4RECH
,1,POWER(2,30))) AS HID_HASH4CHECK
FROM MAZEIT z
WHERE z.MANDANT_ID=iMandantId AND
z.KND_ID=iKndId AND
z.MA_ID=iMaId AND
z.KW = GetKW4Db(tTage(1)) AND
z.ART4RECH IN (CMT.GetTCVNum('MAZEIT_ART4RECH_STD'),CMT.GetTCVNum('MAZEIT_ART4RECH_STK'),CMT.GetTCVNum('MAZEIT_ART4RECH_KG'))
ORDER BY z.ARB_BEG)
LOOP
IF rec.ZUSCHLAG=0 THEN
rec.ZUSCHLAG := NULL;
END IF;
vI := 0;
vDatumCh := TO_CHAR(rec.ARB_BEG,'YYYYMMDD');
FOR i IN 1..7 LOOP
IF tTageVC(i)=vDatumCh THEN
tTageI(i) := tTageI(i) + 1;
vI := i;
EXIT;
END IF;
END LOOP;
-- Stücklohn kommt an den Anfang der Bemerkung gekennzeichnet mit QK_COLL_MAZEIT_STK_KZ ursprüngliche Bemekuung nach dem :
rec.BEM := RTRIM(rec.BEM);
IF rec.ART4RECH = CMT.GetTCVNum('MAZEIT_ART4RECH_STK') THEN
DECLARE
vBem MAZEIT.BEM%TYPE := QK_COLL_MAZEIT_STK_KZ;
BEGIN
IF rec.STK_BEZAHLT > 0. THEN
vBem := QK_COLL_MAZEIT_STK_KZ||TO_CHAR(rec.stk_bezahlt,'FM9999D00');
ELSIF rec.STK_ANZ > 0 THEN
vBem := QK_COLL_MAZEIT_STA_KZ||TO_CHAR(rec.stk_anz,'FM9999');
END IF;
IF rec.BEM IS NULL THEN
rec.BEM := vBem;
ELSE
rec.BEM := SUBSTR(vBem||':'||rec.BEM,1,CMT.GetColLen('MAZEIT','BEM'));
END IF;
END;
ELSIF rec.ART4RECH = CMT.GetTCVNum('MAZEIT_ART4RECH_KG') THEN
DECLARE
vBem MAZEIT.BEM%TYPE := QK_COLL_MAZEIT_KG_KZ;
BEGIN
IF rec.STK_KG > 0. THEN
vBem := QK_COLL_MAZEIT_KG_KZ||TO_CHAR(rec.stk_kg,'FM999999D000');
END IF;
IF rec.BEM IS NULL THEN
rec.BEM := vBem;
ELSE
rec.BEM := SUBSTR(vBem||':'||rec.BEM,1,CMT.GetColLen('MAZEIT','BEM'));
END IF;
END;
END IF;
IF vI>0 THEN
IF tTageI(vI)=1 THEN
APEX_COLLECTION.add_member( p_COLLECTION_name=> TK_COLL_NAME,p_generate_md5=>TK_MD5
,P_C001 => rec.id -- MAZEIT.ID
,P_C002 => TO_CHAR(rec.ARB_BEG,'DD.MM.YYYY') -- Datum DD.MM.YYYY
,P_C003 => CMT.WoTag(rec.ARB_BEG) -- Wochentag Mo/Di/...
,P_C004 => CMT.WoTagNr(rec.ARB_BEG) -- Wochentag 1/2/...
,P_C005 => rec.KNDABT_ID -- MAZEIT.KNDABT_ID
,P_C006 => CMT.Minuten2InduZeit(rec.ZEIT) -- Zeit als InduZeit in HH24,MI
,P_C007 => TO_CHAR(rec.ARB_BEG,'HH24:MI') -- Beginn in HH24:MI
,P_C008 => TO_CHAR(rec.ARB_END,'HH24:MI') -- Ende in HH24:MI
,P_C009 => CMT.Minuten2HHMI(rec.PAUSE,TRUE) -- Pause in HH24:MI
,P_C010 => rec.ZUSCHLAG
,P_C011 => rec.BEM
,P_C040 => iMandantId
,P_C041 => iKndId
,P_C042 => iMaId
,P_C043 => vKW4Db
,P_C048 => rec.HID_HASH4CHECK -- Hash für Check auf Änderungen MAZEIT
,P_C049 => TO_CHAR(rec.ARB_BEG,'YYYYMMDDHH24MI') -- für ORDER BY hier Arbeitsbeginn
,P_C050 => NULL -- für FehlerMeldungen
ELSE
APEX_COLLECTION.add_member( p_COLLECTION_name=> TK_COLL_NAME,p_generate_md5=>TK_MD5
,P_C001 => rec.id -- MAZEIT.ID
,P_C002 => NULL -- Datum DD.MM.YYYY
,P_C003 => NULL -- Wochentag Mo/Di/...
,P_C004 => NULL -- Wochentag 1/2/...
,P_C005 => rec.KNDABT_ID -- MAZEIT.KNDABT_ID
,P_C006 => CMT.Minuten2InduZeit(rec.ZEIT) -- Zeit als InduZeit in HH24,MI
,P_C007 => TO_CHAR(rec.ARB_BEG,'HH24:MI') -- Beginn in HH24:MI
,P_C008 => TO_CHAR(rec.ARB_END,'HH24:MI') -- Ende in HH24:MI
,P_C009 => CMT.Minuten2HHMI(rec.PAUSE,TRUE) -- Pause in HH24:MI
,P_C010 => rec.ZUSCHLAG
,P_C011 => rec.BEM
,P_C040 => iMandantId
,P_C041 => iKndId
,P_C042 => iMaId
,P_C043 => vKW4Db
,P_C048 => rec.HID_HASH4CHECK -- Hash für Check auf Änderungen MAZEIT
,P_C049 => TO_CHAR(rec.ARB_BEG,'YYYYMMDDHH24MI') -- für ORDER BY hier Arbeitsbeginn
,P_C050 => NULL -- für FehlerMeldungen
END IF;
vAnz := vAnz + 1;
END IF;
END LOOP;
FOR i IN 1..7 LOOP
IF tTageI(i)<4 THEN
FOR j IN tTageI(i)+1..4 LOOP
IF j=1 THEN
APEX_COLLECTION.add_member( p_COLLECTION_name=> TK_COLL_NAME,p_generate_md5=>TK_MD5
,P_C001 => -1 -- MAZEIT.ID
,P_C002 => TO_CHAR(tTage(i),'DD.MM.YYYY') -- Datum DD.MM.YYYY
,P_C003 => CMT.WoTag(tTage(i)) -- Wochentag Mo/Di/...
,P_C004 => CMT.WoTagNr(tTage(i)) -- Wochentag 1/2/...
,P_C005 => 0 -- MAZEIT.KNDABT_ID
--,P_C006 => Minuten2InduZeit(0) -- Zeit als InduZeit in HH24,MI
,P_C006 => NULL -- Zeit als InduZeit in HH24,MI
--,P_C007 => '06:30' -- Beginn in HH24:MI
,P_C007 => NULL -- Beginn in HH24:MI
,P_C008 => NULL -- Ende in HH24:MI
--,P_C009 => Minuten2HHMI(0) -- Pause in HH24:MI
,P_C009 => NULL -- Pause in HH24:MI
,P_C010 => NULL -- Zuschlag
,P_C011 => NULL -- Bem
,P_C040 => iMandantId
,P_C041 => iKndId
,P_C042 => iMaId
,P_C043 => vKW4Db
,P_C048 => '-1' -- Hash für Check auf Änderungen MAZEIT
,P_C049 => TO_CHAR(tTage(i),'YYYYMMDD')||'99'||TO_CHAR(j,'FM09') -- für ORDER BY hier Arbeitsbeginn
,P_C050 => NULL
ELSE -- auffüllen
APEX_COLLECTION.add_member( p_COLLECTION_name=> TK_COLL_NAME,p_generate_md5=>TK_MD5
,P_C001 => -1 -- MAZEIT.ID
,P_C002 => NULL -- Datum DD.MM.YYYY
,P_C003 => NULL -- Wochentag Mo/Di/...
,P_C004 => NULL -- Wochentag 1/2/...
,P_C005 => 0 -- MAZEIT.KNDABT_ID
--,P_C006 => Minuten2HHMI(0) -- Zeit in HH24:MI
,P_C006 => NULL -- Zeit in HH24:MI
--,P_C007 => '06:30' -- Beginn in HH24:MI
,P_C007 => NULL -- Beginn in HH24:MI
,P_C008 => NULL -- Ende in HH24:MI
--,P_C009 => Minuten2InduZeit(0) -- Pause als InduZeit in HH24,MI
,P_C009 => NULL -- Pause als InduZeit in HH24,MI
,P_C010 => NULL -- Zuschlag
,P_C011 => NULL -- Bem
,P_C040 => iMandantId
,P_C041 => iKndId
,P_C042 => iMaId
,P_C043 => vKW4Db
,P_C048 => '-1' -- Hash für Check auf Änderungen MAZEIT
,P_C049 => TO_CHAR(tTage(i),'YYYYMMDD')||'99'||TO_CHAR(j,'FM09') -- für ORDER BY hier Arbeitsbeginn
,P_C050 => NULL
END IF;
END LOOP;
END IF;
END LOOP;
vI := 0;
FOR rec IN (SELECT * FROM V_COLL_MAZEIT) LOOP
vI := vI + 1;
CMT.InsProto('i='||LPAD(TO_CHAR(vI),3,' ')||':'||
rec.hid_seq_id||'|'||
rec.hid_mazeit_id||'|'||
rec.datum||'|'||
rec.wotag||'|'||
rec.wotagnr||'|'||
rec.zeit||'|'||
rec.beginn||'|'||
rec.ende||'|'||
rec.pause||'|'||
rec.zuschlag||'|'||
rec.bem||'|'||
rec.hid_hash4check||'|'||
rec.hid_sortier||'|'||
rec.meldung
,QK_PACK_NAME,TK_FUNC_NAME);
END LOOP;
ELSE
raise_Application_ERROR(-20100,'kann ich doch nicht Action='||TO_CHAR(iAction));
END IF;
END V_COLL_MAZEIT_PROC;
and here the procedure (look for real entrys in table)
PROCEDURE V_COLL_MAZEIT_IOF_U_TRG(
iHID_SEQ_ID apex_collections.seq_id%TYPE
,iHID_MAZEIT_ID apex_collections.C001%TYPE
,iDATUM apex_collections.C002%TYPE
,iWOTAG apex_collections.C003%TYPE
,iWOTAGNR apex_collections.C004%TYPE
,iKNDABT_ID apex_collections.C005%TYPE
,iZEIT apex_collections.C006%TYPE
,iBEGINN apex_collections.C007%TYPE
,iENDE apex_collections.C008%TYPE
,iPAUSE apex_collections.C009%TYPE
,iZUSCHLAG apex_collections.C010%TYPE
,iBEM apex_collections.C011%TYPE
,iHID_HASH4CHECK apex_collections.C048%TYPE
,iHID_SORTIER apex_collections.C049%TYPE
,iMELDUNG apex_collections.C050%TYPE
IS
PRAGMA AUTONOMOUS_TRANSACTION;
TK_FUNC_NAME CONSTANT USER_OBJECTS.OBJECT_NAME%TYPE := 'V_COLL_MAZEIT_IOF_U_TRG';
TK_COLL_NAME CONSTANT APEX_COLLECTIONS.COLLECTION_NAME%TYPE := 'V_COLL_MAZEIT';
vRcString VARCHAR2(2000) := NULL;
rCollMaZeit0 V_COLL_MAZEIT%ROWTYPE;
rCollMaZeit V_COLL_MAZEIT%ROWTYPE;
rMaZeit MAZEIT%ROWTYPE;
vHash4Check PLS_INTEGER;
vURow ROWID;
BEGIN
CMT.InsProto(
ihid_seq_id||'|'||
ihid_mazeit_id||'|'||
idatum||'|'||
iwotag||'|'||
iwotagnr||'|'||
iKNDABT_ID||'|'||
izeit||'|'||
ibeginn||'|'||
iende||'|'||
ipause||'|'||
izuschlag||'|'||
ibem||'|'||
ihid_hash4check||'|'||
ihid_sortier||'|'||
imeldung
,QK_PACK_NAME,TK_FUNC_NAME);
-- VIEW-ZeitZeile lesen
SELECT t.* INTO rCollMaZeit
FROM V_COLL_MAZEIT t
WHERE t.HID_SEQ_ID = iHID_SEQ_ID;
IF iHID_MAZEIT_ID!=rCollMaZeit.HID_MAZEIT_ID OR
iHID_HASH4CHECK!=rCollMaZeit.HID_HASH4CHECK THEN
vRcString := 'Daten seit Anzeige verändert';
GOTO MARK_TRANSEND;
END IF;
-- VIEW-ZeitDefaultZeile setzen
IF rCollMaZeit.HID_MAZEIT_ID=0 THEN
--,P_C005 => 0 -- MAZEIT.KNDABT_ID
--,P_C006 => NULL -- Zeit in HH24,MI
--,P_C007 => NULL -- Beginn in HH24:MI
--,P_C008 => NULL -- Ende in HH24:MI
--,P_C009 => NULL -- Pause in HH24,MI
--,P_C010 => NULL -- Zuschlag
--,P_C011 => NULL -- Bem
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>5, p_attr_value=>iKNDABT_ID);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>6, p_attr_value=>iZEIT);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>7, p_attr_value=>iBEGINN);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>8, p_attr_value=>iENDE);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>9, p_attr_value=>iPAUSE);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>10, p_attr_value=>iZUSCHLAG);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>11, p_attr_value=>iBEM);
IF iBEM LIKE '#%' THEN -- Verteilen
-- VIEW-ZeitDefaultZeile lesen
SELECT t.* INTO rCollMaZeit0
FROM V_COLL_MAZEIT t
WHERE t.HID_MAZEIT_ID = 0;
rCollMaZeit0.BEM := SUBSTR(iBEM,2);
DECLARE
vAnz PLS_INTEGER := 0;
nVert MAZEIT.ZEIT%TYPE;
nZeitMinuten MAZEIT.ZEIT%TYPE;
nDiffMinuten MAZEIT.ZEIT%TYPE;
BEGIN
SELECT NVL(COUNT(*),0) INTO vAnz
FROM V_COLL_MAZEIT t
WHERE t.HID_MAZEIT_ID = -1 AND
t.DATUM IS NOT NULL AND
t.WOTAGNR IN ('1','2','3','4','5'); -- nur Mo-Fr
IF vAnz<=0 THEN
vRcString := 'Verteilen nicht möglich keine freien Tage gefunden';
ELSIF TRIM(iZEIT) IS NULL OR TRIM(iZEIT) IN ('00,00','0,00','0',',00',',0','0,','0,0') THEN
vRcString := 'Verteilen von Null Minuten nicht möglich';
ELSE
nDiffMinuten := 0;
nZeitMinuten := CMT.InduZeit2MinutenNum(TRIM(iZEIT));
IF nZeitMinuten>(vAnz*1440) THEN
vRcString := 'Zu verteilende Zeit zu groß';
ELSIF vAnz>1 THEN
nVert := FLOOR(nZeitMinuten/vAnz);
nDiffMinuten := nZeitMinuten - (nVert*vAnz);
nZeitMinuten := nVert;
END IF;
IF vRcString IS NULL THEN
FOR rec IN (SELECT t.* INTO rCollMaZeit
FROM V_COLL_MAZEIT t
WHERE t.HID_MAZEIT_ID = -1 AND
t.DATUM IS NOT NULL AND
t.WOTAGNR IN ('1','2','3','4','5')) -- nur Mo-Fr)
LOOP
rCollMaZeit := rec;
vRcString := qV_COLL_MAZEIT_Insert(iKNDABT_ID, iZEIT, nZeitMinuten+nDiffMinuten, iBEGINN, iENDE, iPAUSE, iZUSCHLAG, SUBSTR(iBEM,2),
rCollMaZeit0, rCollMaZeit, rMaZeit);
IF vRcString IS NOT NULL THEN
EXIT;
END IF;
nDiffMinuten := 0;
END LOOP;
END IF;
END IF;
END;
END IF;
-- MAZEIT-Vorhandener Eintrag
ELSIF rCollMaZeit.HID_MAZEIT_ID>0 THEN
SELECT z.ROWID, TO_CHAR(DBMS_UTILITY.get_hash_value(
z.id||'|'||
z.mandant_id||'|'||
z.majob_id||'|'||
z.ma_id||'|'||
z.knd_id||'|'||
z.kndabt_id||'|'||
z.kw||'|'||
z.arb_beg||'|'||
z.arb_end||'|'||
z.zeit||'|'||
z.pause||'|'||
z.zuschlag||'|'||
z.stk_anz||'|'||
z.stk_kg||'|'||
z.stk_gemuur||'|'||
z.stk_bezahlt||'|'||
z.bem||'|'||
z.ART4RECH
,1,POWER(2,30))) AS HID_HASH4CHECK
INTO vURow, vHash4Check
FROM MAZEIT z
WHERE z.ID=rCollMaZeit.HID_MAZEIT_ID
FOR UPDATE NOWAIT;
IF vHash4Check!=rCollMaZeit.HID_HASH4CHECK THEN
vRcString := 'Daten seit Anzeige verändert';
GOTO MARK_TRANSEND;
END IF;
SELECT z.* INTO rMaZeit
FROM MAZEIT z
WHERE ROWID=vURow;
rMaZeit.KNDABT_ID := TO_NUMBER(TRIM(iKNDABT_ID));
IF TRIM(iBEGINN) IS NULL THEN
rMaZeit.ARB_BEG := NULL;
ELSE
rMaZeit.ARB_BEG := TO_DATE(TO_CHAR(rMaZeit.ARB_BEG,'YYYYMMDD')||TRIM(SUBSTR(iBEGINN,1,5)),'YYYYMMDDHH24:MI');
END IF;
IF TRIM(iENDE) IS NULL THEN
rMaZeit.ARB_END := NULL;
ELSE
rMaZeit.ARB_END := TO_DATE(TO_CHAR(rMaZeit.ARB_BEG,'YYYYMMDD')||TRIM(SUBSTR(iENDE,1,5)),'YYYYMMDDHH24:MI');
END IF;
IF TRIM(iZEIT) IS NULL THEN
rMaZeit.ZEIT := NULL;
ELSE
rMaZeit.ZEIT := CMT.InduZeit2MinutenNum(TRIM(iZEIT));
END IF;
IF TRIM(iPAUSE) IS NULL THEN
rMaZeit.PAUSE := NULL;
ELSE
rMaZeit.PAUSE := CMT.HHMI2Minuten(TRIM(iPAUSE));
END IF;
IF iWOTAGNR IN (6,7) AND
rMaZeit.PAUSE IS NOT NULL AND rMaZeit.PAUSE<>0 THEN
vRcString := 'Eintrag Pause am Wochenende nicht erlaubt';
GOTO MARK_TRANSEND;
END IF;
IF TRIM(iZUSCHLAG) IS NULL THEN
rMaZeit.ZUSCHLAG := NULL;
ELSE
rMaZeit.ZUSCHLAG := TO_NUMBER(TRIM(iZUSCHLAG));
END IF;
IF RTRIM(iBEM) IS NULL THEN
rMaZeit.BEM := NULL;
ELSE
rMaZeit.BEM := RTRIM(iBEM);
END IF;
IF (rMaZeit.KNDABT_ID IS NOT NULL AND rMaZeit.KNDABT_ID>0) OR
rMaZeit.ARB_BEG IS NOT NULL OR rMaZeit.ARB_END IS NOT NULL OR
(rMaZeit.ZEIT IS NOT NULL AND rMaZeit.ZEIT!=0) OR rMaZeit.PAUSE IS NOT NULL OR
rMaZeit.ZUSCHLAG IS NOT NULL OR rMaZeit.BEM IS NOT NULL THEN
DECLARE
vBem MAZEIT.BEM%TYPE := rMaZeit.BEM;
BEGIN
rMaZeit.ZUSCHLAG := NVL(rMaZeit.ZUSCHLAG,0.0);
qV_COLL_MAZEIT_BEM_CHK(rMaZeit); -- Bem prüfen wg. ART4RECH Verschlüsselung mittels QK_COLL_MAZEIT_STK_KZ
UPDATE MAZEIT z
SET z.KNDABT_ID = rMaZeit.KNDABT_ID
,z.ARB_BEG = rMaZeit.ARB_BEG
,z.ARB_END = rMaZeit.ARB_END
,z.ZEIT = rMaZeit.ZEIT
,z.PAUSE = rMaZeit.PAUSE
,z.ZUSCHLAG = rMaZeit.ZUSCHLAG
,z.BEM = rMaZeit.BEM
,z.STK_BEZAHLT = rMaZeit.STK_BEZAHLT
,z.STK_ANZ = rMaZeit.STK_ANZ
,z.STK_KG = rMaZeit.STK_KG
,z.ART4RECH = rMaZeit.ART4RECH
WHERE ROWID=vURow;
IF SQL%ROWCOUNT=1 THEN
NULL;
ELSIF SQL%ROWCOUNT<1 THEN
RAISE NO_DATA_FOUND;
ELSE
RAISE TOO_MANY_ROWS;
END IF;
rMaZeit.BEM := vBem;
END;
ELSE
DELETE FROM MAZEIT z
WHERE ROWID=vURow;
IF SQL%ROWCOUNT=1 THEN
NULL;
ELSIF SQL%ROWCOUNT<1 THEN
RAISE NO_DATA_FOUND;
ELSE
RAISE TOO_MANY_ROWS;
END IF;
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>1, p_attr_value=>-1);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>48, p_attr_value=>'-1');
END IF;
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>5, p_attr_value=>rMaZeit.KNDABT_ID);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>6, p_attr_value=>CMT.Minuten2InduZeit(rMaZeit.ZEIT));
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>7, p_attr_value=>TO_CHAR(rMaZeit.ARB_BEG,'HH24:MI'));
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>8, p_attr_value=>TO_CHAR(rMaZeit.ARB_END,'HH24:MI'));
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>9, p_attr_value=>CMT.Minuten2InduZeit(rMaZeit.PAUSE,TRUE) );
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>10, p_attr_value=>rMaZeit.ZUSCHLAG);
APEX_COLLECTION.update_member_attribute( p_COLLECTION_name=> TK_COLL_NAME, p_seq=>rCollMaZeit.HID_SEQ_ID
,p_attr_number=>11, p_attr_value=>RTRIM(rMaZeit.BEM));
-- MAZEIT neuer Eintrag
ELSIF rCollMaZeit.HID_MAZEIT_ID=-1 THEN
-- VIEW-ZeitDefaultZeile lesen
SELECT t.* INTO rCollMaZeit0
FROM V_COLL_MAZEIT t
WHERE t.HID_MAZEIT_ID = 0;
vRcString := qV_COLL_MAZEIT_Insert(iKNDABT_ID, iZEIT, NULL, iBEGINN, iENDE, iPAUSE, iZUSCHLAG, iBEM,
rCollMaZeit0, rCollMaZeit, rMaZeit);
ELSE
vRcString := 'Ungültige HID_MAZEIT_ID '||TO_CHAR(rCollMaZeit.HID_MAZEIT_ID);
END IF;
<<MARK_TRANSEND>>
IF vRcString IS NULL THEN
COMMIT;
ELSE
ROLLBACK;
RAISE_APPLICATION_ERROR(-20100,vRcString);
END IF;
END V_COLL_MAZEIT_IOF_U_TRG;
and in end there are 3 other procedures, all for table MAZEIT, the collection and and the report.
in princip its a good idea,to create another collection, but difficult to bind it to the report TOO,cause my "cell-fill- functionality" is to complicated.
my idea is another: to look with javascript/jquery whatever on clientside the cell-values. and only the editable cells. not the hidden cells.there would be ca. 180 editable cells. i want store the values from this cells all in one in a cache (clientside! ).
then select next employee (collection will be created with view ect.) and give me this 29 rows. in this moment i have cells with ID f02_0001 as example and can use the cache values with that. the ID's ever the same,cause i have ever 29 rows.
greets/christian -
Inserting row in Updateable Report
Hi all,
I have an updateable report that I can update no problem. However, when I try insert a record I get the following error ...
Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in database has changed since user initiated update process. current checksum = "A884FA378C851786DDFE3A33709CB23C", item checksum = "37B04CEAA8C5C627F8FC74D27A1665C8"., update
I have isolated the error to the date field and I think the DML is doing something funky in the background.
Anyone had this problem or know how to get around it?
Thanks,
RussellCheck if all of your updatable columns are referencing the table columns properly.
Denes Kubicek
http://deneskubicek.blogspot.com/
http://www.opal-consulting.de/training
http://apex.oracle.com/pls/otn/f?p=31517:1
------------------------------------------------------------------------------ -
Updateable Report Question (or strange behaviour)
Hey,
I have a problem with an updateable report, my query is:
SELECT
"DOSSIER_ID",
"DOSSIER_ID" DOSSIER_ID_DISPLAY,
"REFNR",
"NAME",
"REMARK"
FROM dossiers &P405_WHERE.
ORDER BY refnr DESC
I want to build my where clause with a process thats why I use the &P405_WHERE.
When I try to save this query in my updateable report I get the next error message:
ORA-20001: Updatable report parse error: ORA-00933: SQL command not properly ended
Error processing region columns.
I also tried with parse query at runtime but that didn't work either. When I leave out the &P405_WHERE. then there is no problem.
Any idea what I'm doing wrong or is there a workaround for this?
Kind regards,
OliHi,Oli
You cannot use your updatable report like this :
You have to use SQL Query (PL/SQL function body returning SQL query)
like this
declare q varchar2(1000);
begin
q:='SELECT
"DOSSIER_ID",
"DOSSIER_ID" DOSSIER_ID_DISPLAY,
"REFNR",
"NAME",
"REMARK"
FROM dossiers '||:P405_WHERE||' ORDER BY refnr DESC';
return q;
end;
And make your report updatable ...
Mike -
Updateable report with javascript calculation
Hi all,
I have an updateable report where the user fills in one column. I then need a simple multiplication based on the user filled in column and another column to populate into the final column.
I have managed to do this using the following javascript in the page header
<script language="JavaScript" type="text/javascript">
<!--
function calcit(pThis)
var vRow = pThis.id.substr(pThis.id.indexOf('_')+1);
html_GetElement('f03_'+vRow).value = html_GetElement('f02_'+vRow).value * html_GetElement('f01_'+vRow).value;
//-->
</script>Column f01 is a value in a table based on the SQL to create the report (AQLSCORE)
Column f02 is what the user fills in (AQLERRORS)
Column f03 is where the calculation is populated (AQLTOTAL)
With AQLERRORS element attribute = onchange="calcit(this);"
The problem I am having with the above is that it only works when f03 is a text field (i.e. the user can change the value) I would like the column to be non-editable (the user should not be able to change this field). If I make the column Display as text (saves state) the calculation returns a NaN error.
When I change the calculation from a * to a + the value returned is 1undefined showing that the value from f01 is undefined
Demo app
http://apex.oracle.com/pls/apex/f?p=15328
username: demo
password: demo
There are 2 pages one where the calculation is working but with AQLSCORE as a text field and another where it is returning NaN but with AQLSCORE as Display as text (Saves state)
Any ideas how I can perform the calculation and protect the AQLSCORE column from the user
Kind regards,
Alex
Edited by: user10942729 on 30-Jul-2010 08:12Thank you for your response.
I have corrected the code as you suggested however it still causes the same error.
I have very limited knowledge of java and html (probably not a good start I realise) but it seems that the javascript cannot see(??) the value in the AQLScore (f01) column when it is Display as Text(saves state)
If I change the calculation to just make the value = the AQLScore (f01) without the parseInt syntax 'undefined' is returned. With the parseInt 'NaN' is returned.
I will keep looking for an answer
Cheers,
Alex -
Using (Select All) for report parameter
Hi there,
I am Looking for assistance in making the the (Select All) option work for a particular report. The parameter is for product families (which there are about 47 unique results for). The report is also influenced by two other parameters, one being a date type
i.e 'MTD' 'YTD' 'MAT'. When a long date type such as MAT is selected, selecting all families causes the report to get stuck in an endless loop.
I've tried creating my own <Select All'> item in the parameter dataset, then I have the opposite issue, the <Select All> selection works perfectly but when I try and tick two or more product families I recieve the following error:
"An expressions of non-boolean type specified in a context where a condition is expected, near ',' "
Parameter Dataset:
SELECT '<Select All>' AS family_description, '<Select All>' AS family_code
UNION ALL
SELECT DISTINCT family_description, family_code
FROM dim_item AS item
ORDER BY family_description
Snippet From Main Report Dataset:
Where
sales.oe_branch_code IN (@Branch)
And
sales.order_status <> 'X' and sales.line_status <> 'X'
AND (item.family_code IN (@Family) OR @Family = '<Select All>')
Any help is appreciated
Thanks Kindly
SQL NoviceHi KCBA,
I have check the query you have provided the issue cause by the query "
AND (item.family_code
IN (@Family)
OR @Family =
'<Select All>')" you are using which is incorrect.
If the parameter @Family have set as "Allow multiple values" then you don't need to add new label "Select All" for the multiple value parameter already have this section, if the parameter @Family is not the multiple values
parameter and you want to select all the values or just select one, you can modify the query as below which will works fine:
"AND (item.family_code =
(@Family) OR
@Family = '<Select All>'
If you are using the stored procedure and have issue about add multiple value parameter in the where clause, you are take reference to below similar case about how to create an function to make it work:
Passing multi-value parameter in stored procedure ssrs
If I have some misunderstanding, please try to provide more details information about the relationship of all the parameters (Cascading or not ), current result you have got and expect result you want(Snapshot).
Any problem, please feel free to ask.
Regards,
Vicky Liu
Vicky Liu
TechNet Community Support -
SSRS report parameter left blank to select all
Hello,
Before posting this question I have looked at related topics and couldn't find a clear answer!
Question: Is there a workaround for a parameter to select all if blank?
I have a report that has a multivalue parameter, my user is asking if there is a way to have an empty parameter box that will default to selet all, so if the user does not fill parameter and clicks on view report it should work.
I have tried:
SELECT Item FROM ItemTable
UNION ALL
SELECT '' AS Expr1 ORDER
BY Item
Then checked Allow Blank Value ''
and checked Allow Null Values
and did the change in my query. The problem here is that the parameter will have null check box which the user does not want see?
ThanksHi There
Thanks for yourposting. I think you do not need to click on checkbox allow null value, just check allow blank value and change in your dataset query like this.
Please change the query but the synxtax might look like this
if @commenttype=''
select * from Comment_Type
else
select * from Comment_Type
where
Comment_Type=@commenttype
if @commenttype=''
select * from Comment_Type
else
select * from Comment_Type
where
Comment_Type=@commenttype
By default your parameter is blank and you display all records, but when user type something it will filter the datset based on the user input
I am putting some screenshot for your help.
If you have any questions pelase let me know
Many Thanks
Syed Qazafi Anjum
Please click "Mark as Answer" if this resolves your problem or "Vote as Helpful" if you find it helpful. -
AJAX Select Lists on Updateable Reports
All,
I have followed the examples from Karl and Sergio's blog on how to use AJAX to contol dependent LOV lists in a form. My question is, can this be done in an updateable report? I'm having difficulty in determining how to reference the column names of the dependant lists.
What I basically have is a time app. User selects his project from a picklist and then his associated tasks for that project will appear in the task list. I have used the updatable report option to build this rather then a form, because I liked the prebuilt add row and processing functionality.
Anyway if anyone knows how to use AJAX dependant select lists in an updateable report it would be greatly appreciated.
Thanks
RobSee http://forums.oracle.com/forums/thread.jspa?messageID=1222153�
-
Ajax select list with an updateable report
Hi,
I have an updateable report where the first 3 columns are all select lists and where the values in each of the select lists are dependent on the value selected in the previous select list.
I've been able to implement this for the first 2 columns using ajax ie. the values in the select list for the second column are based on what value has been selected in the first column, but I have not been able to apply the same logic to the list of values for the 3rd column, which should be based on what has been selected in the second column.
Also, when the value of the first column is changed, it should be blanking out the values of the 3rd column, until the new second column value has been selected, based on the change to the value of the first column.
Any assistance/advice would be much appreciated.
Many Thanks,
MarquitaHow did you do that for the fisrt 2 columns, I could only do it in a form not in a report, appreciate your help
-
Report with Select Lists problem
Hi all,
I have a sql report with this query:
select
'Hello World' Col1,
apex_item.select_list_from_lov_xl(1,'Data 1','TEST_LOV') lov1,
apex_item.select_list_from_lov_xl(1,'Data 2','TEST_LOV') lov2,
apex_item.select_list_from_lov_xl(1,'Data 3','TEST_LOV') lov3,
apex_item.select_list_from_lov_xl(1,'Data 4','TEST_LOV') lov4
from dual
Where TEST_LOV is a LOV that return 400 rows. The problem is that this report gives me an error:
report error:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
I am able to create a workarround using ajax, but I don't think this is the best way.
Does anyone knows why this happens or any solution??
Thanks,
Alejandro.Hi,
OK - My page is defined as:
The report is based on the following SQL:
select
"EMPNO",
"EMPNO" EMPNO_DISPLAY,
"ENAME",
"DEPTNO"
from "#OWNER#"."EMP"The DEPTNO column is the one that I need a select list for. I have not used the APEX_ITEM package to handle this, but I expect it could be done that way as well.
On the DEPTNO column, I have the following settings:
Display As: Select List (query based LOV)
Named LOV: -Select Named LOV-
Display Extra Values: Yes
Display Null: Yes
List of values definition: SELECT NULL d, NULL r FROM DUAL
Note that it is important that you use these exact settings.
I have then created a new PL/SQL region on the page below the tabular form. The region should use the "No Template" template to keep it hidden from view. The Region Source is:
DECLARE
vSEP VARCHAR2(1);
BEGIN
vSEP := '';
htp.p('<script type="text/javascript">');
htp.p('var sMaster = new Array(');
FOR c IN (SELECT DNAME d, DEPTNO r FROM DEPT ORDER BY UPPER(DNAME))
LOOP
htp.p(vSEP || 'new Array (' || c.r|| ',"' || c.d|| '")');
vSEP := ',';
END LOOP;
htp.p(')');
htp.p('</script>');
END;This defines a hidden select list as a javascript array using the actual values from the DEPT table.
I then have an HTML region underneath that, again using "No Template", that has the following as the Region Source:
<script type="text/javascript">
function updateList(sChild)
var o;
var sChildValue = sChild.value;
sChild.options.length = 0;
o = new Option('-Select-', '');
sChild.options.add(o);
var k;
for (k = 0; k < sMaster.length; k++)
o = new Option(sMaster[k][1], sMaster[k][0]);
sChild.options.add(o);
sChild.value = sChildValue;
if (sChild.selectedIndex == -1)
sChild.selectedIndex = 0;
function updateLists()
var lists = document.getElementsByName("f03");
var k;
var x;
if (lists)
for (k = 0; k < lists.length; k++)
updateList(lists[k]);
updateLists();
</script>For this example, you will note that I am refering to "f03" (in the updateLists() function) - my DEPTNO column's SELECT tags have "f03" as their NAME attributes. This may need to be changed for your page.
And that's it!
When the page is loaded, the tabular form is constructed. Due to the settings I've applied to the DEPTNO column, each list will actually consist of a NULL entry and the value on the record (that's due to setting Null/Extra Values to Yes).
Then, a hidden select list is constructed as a javascript array. And, finally, we loop through each of the "f03" items on the page, take a note of the value already there, replace the contents of the dummy select list with the contents of the array and then select the original value again.
Andy -
I downloaded the OEHR Sample Objects application and followed the steps in Oracle® Application Express Advanced Tutorials
Release 3.2.
The parameters and report seem to be working correctly except when I enter "all" for department or manager I get no matching hits.
What's the most efficient way to retrieve "all" if the users selects all for dept and mgr - thus we'd want to return all records in the table.
Region snipprt
Enter Search
Search Employee
Dept
- ALL -
Administration
Marketing
Purchasing
Human Resources
Shipping
IT
Public Relations
Sales
Executive
Finance
Accounting
Treasury
Corporate Tax
Control And Credit
Shareholder Services
Benefits
Manufacturing
Construction
Contracting
Operations
IT Support
NOC
IT Helpdesk
Government Sales
Retail Sales
Recruiting
Payroll
Mgr
- ALL -
Steven King
Neena Kochhar
Lex De Haan
Alexander Hunold
Nancy Greenberg
Den Raphaely
Matthew Weiss
Adam Fripp
Payam Kaufling
Shanta Vollman
Kevin Mourgos
John Russell
Karen Partners
Alberto Errazuriz
Gerald Cambrault
Eleni Zlotkey
Michael Hartstein
Shelley Higgins
The following is the sql that was provided as part of the turitoral.
SELECT
"OEHR_EMPLOYEES"."EMPLOYEE_ID" "EMPLOYEE_ID",
"OEHR_EMPLOYEES"."FIRST_NAME" "FIRST_NAME",
"OEHR_EMPLOYEES"."LAST_NAME" "LAST_NAME",
"OEHR_EMPLOYEES"."EMAIL" "EMAIL",
"OEHR_EMPLOYEES"."PHONE_NUMBER" "PHONE_NUMBER",
"OEHR_EMPLOYEES"."HIRE_DATE" "HIRE_DATE",
"OEHR_EMPLOYEES"."JOB_ID" "JOB_ID",
"OEHR_EMPLOYEES"."SALARY" "SALARY",
"OEHR_EMPLOYEES"."COMMISSION_PCT" "COMMISSION_PCT",
"OEHR_EMPLOYEES"."MANAGER_ID" "MANAGER_ID",
"OEHR_EMPLOYEES"."DEPARTMENT_ID" "DEPARTMENT_ID"
FROM
"#OWNER#"."OEHR_EMPLOYEES" "OEHR_EMPLOYEES"
WHERE
(lower(first_name) like '%' || lower(:P1_NAME) || '%' OR
lower(last_name) like '%' || lower(:P1_NAME) || '%')
AND department_id = decode(:P1_DEPT,'%null%',department_id,:P1_DEPT)
AND manager_id = decode(:P1_MGR,'%null%',manager_id,:P1_MGR)Hi,
Use this..
SELECT
"OEHR_EMPLOYEES"."EMPLOYEE_ID" "EMPLOYEE_ID",
"OEHR_EMPLOYEES"."FIRST_NAME" "FIRST_NAME",
"OEHR_EMPLOYEES"."LAST_NAME" "LAST_NAME",
"OEHR_EMPLOYEES"."EMAIL" "EMAIL",
"OEHR_EMPLOYEES"."PHONE_NUMBER" "PHONE_NUMBER",
"OEHR_EMPLOYEES"."HIRE_DATE" "HIRE_DATE",
"OEHR_EMPLOYEES"."JOB_ID" "JOB_ID",
"OEHR_EMPLOYEES"."SALARY" "SALARY",
"OEHR_EMPLOYEES"."COMMISSION_PCT" "COMMISSION_PCT",
"OEHR_EMPLOYEES"."MANAGER_ID" "MANAGER_ID",
"OEHR_EMPLOYEES"."DEPARTMENT_ID" "DEPARTMENT_ID"
FROM
"#OWNER#"."OEHR_EMPLOYEES" "OEHR_EMPLOYEES"
WHERE
(:P1_NAME IS NULL OR
(:P1_NAME IS NOT NULL AND
(lower(first_name) like '%' || lower(:P1_NAME) || '%') OR
(lower(last_name) like '%' || lower(:P1_NAME) || '%')
) AND
(:P1_DEPT IS NULL OR department_id = :P1_DEPT) AND
(:P1_MGR IS NULL OR manager_id = :P1_MGR) -
Needed select all button in alv report
Dear Experts,
In alv report i want first field as button selectall then remaining fields must be displayed
this is my code,,
DEFINE m_fieldcat.
is_fieldcat-fieldname = &1.
is_fieldcat-hotspot = &2.
is_fieldcat-seltext_m = &3.
is_fieldcat-col_pos = &4.
is_fieldcat-outputlen = &5.
is_fieldcat-emphasize = &6.
is_fieldcat-Checkbox = &7.
append is_fieldcat to it_fcat.
clear is_fieldcat.
END-OF-DEFINITION.
m_fieldcat 'SLNO' '' text-112 '1' '5' 'C310' ''.
m_fieldcat 'KPI' '' text-110 '2' '30' 'C310' ''.
m_fieldcat 'PWEEK' 'X' text-109 '3' '16' 'C310' ''.
m_fieldcat 'CWEEK' 'X' text-111 '4' '16' 'C310' ''.
m_fieldcat 'MONTH' 'X' text-122 '5' '16' 'C310' ''.
m_fieldcat 'PMONTH' 'X' text-132 '6' '16' 'C310' ''.
m_fieldcat 'UOM ' '' text-138 '7' '10' 'C310' ''.
Thanks,
Thiru. RHi,
You can keep first field as checkbox. 'Select All' button is present in ALV whnever you use 'REUSE_ALV_GRID' F.M.
You can click on select all button that appears in ALV grid toolbar and all your checkboxes that appears in first field will get selected. Similar to 'Select All' there is 'Deselct All' button also in ALV grid.
Regards,
Saba
Maybe you are looking for
-
IPhoto not working after trying to share iPhoto between iMac and MacBook Pro
I tried to share my photos on both my iMac and MacBook pro. It deleted all my photos in my MacBook and now it won't let me even open iPhoto in my iMac and gives me the following message "You have made changes to your photo library using a newer versi
-
Uploaded them from Pottermore from my home computer, then to the Ipad, Now with recent upload all my books are gone. How do I get them back? Any ideas guys!
-
Change values of select option in fuction of the variant
Hi abappers, I want change the data that contain several select-options. I have a table internal (c_varint) that I obtain with the next code: CALL FUNCTION 'RS_VARIANT_CONTENTS' EXPORTING report = '/1BCDWB/DBBKPF'
-
How to get pics in the iphoto app for iphone back onto my macbook pro
I need to know how to get my pics that are stored on iphone in the "iphoto app for iPhone" back onto my macbook pro's iphoto. macbook was recently wiped out (i didn't back up) during Genius Bar repair
-
Backup active directory server in hyper-v (copying vhdx)
We want to add 2nd AD in our network(about 45+ user) and thinking putting it in a hyper-v server. Just wondering if the hyper-v host are die is it possible to copy the vdhx of the 2nd AD and move it into another host to run. Have anyone have any expe