Updateable PK in tabularform

Hi
How to update a primarykey useing a tabular form?
Ex
Table Batch
PK ARTICLE_ID + BATCH_CODE
and 5 additional columns
BATCH_CODE is updateable
when trying to update/change BATCH_CODE I recieve
ORA-20001: ORA-20001: Current version of data in database has changed since user
Is it possible to have this functionality or should I consider an alternative solution
Regards
Gunnar

Gunnar,
Since using APEX my standards around tables is they are PK'd by Sequence generated via a Trigger. As you develop forms, you then always choose the "exiting sequence" option and then select the appropriate Sequence.
Sample Code:
Create a Sequence:
CREATE SEQUENCE myschema.my_seq
   START WITH 0
   INCREMENT BY 1
   MINVALUE 0
   CACHE 20
   NOCYCLE
   NOORDERUpdate Trigger:
DROP TRIGGER myschema.bchg1_my_tbl;
CREATE OR REPLACE TRIGGER myschema."BCHG1_MY_TBL"
   BEFORE INSERT OR UPDATE
   ON myschema.bchg1_my_tbl
   FOR EACH ROW
BEGIN
   --  Description: Update lst_updt_dt and lst_updt_id.
   --  Maintenance:
   --  Date        Actor           Action
   --  ====        =====           ======
   --  10-Jun-2008 J. Wells         Create.
   SELECT nvl( v( 'app_user' ), user ), sysdate
   INTO   :new.lst_updt_id, :new.lst_updt_dt
   FROM   dual;
END;
/Insert Trigger:
DROP TRIGGER myschema.bins1_my_tbl;
CREATE OR REPLACE TRIGGER lasdev."BINS1_MY_TBL"
   BEFORE INSERT
   ON my_tbl
   FOR EACH ROW
BEGIN
   --  Description: Insert creation_dt, creation_id,
   --              lst_updt_dt and lst_updt_id
   --  Tables;         Name                    Action
   --  Maintenance:
   --  Date        Actor           Action
   --  12-AUG-2010 J. Wells         Create.
   :new.creation_id := nvl( v( 'app_user' ), user );
   :new.creation_dt := sysdate;
   :new.lst_updt_dt := :new.creation_dt;
   :new.lst_updt_id := :new.creation_id;
   SELECT my_seq.nextval
   INTO   :new.my_seq
   FROM   dual;
END bins1_my_tbl;
/Jeff

Similar Messages

  • Updateable Snapshot changes not getting propagated

    Hi,
    I am using Oracle 8.1.7 with Updateable snapshot replication. When I do a dbms_snapshot.refresh as the repadmin user from the snapshot site, the changes I made to the table I am refreshing are not pushed to the master site. Also, the update is actually overwritten by the value that exists on the master site.
    Here is the actual refresh call sql:
    EXECUTE dbms_snapshot.refresh('scpa.dag', 'F', NULL, TRUE, TRUE, 1, 0, 0, TRUE);
    What table can I look in to see whether or not my update on the snapshot site is queued.
    I get no errors when I do the refresh.
    Thanks,
    Chris

    Try check deferror view on master site. When you call refresh procedure you set parameter refresh_after_errors to True, so there can be same unresolved replication conflict. In DBA studio it is tab Errors for node
    DB->Replication->Administration
    If there are no record in deferror on master site, check if you snapshot is a member of snapshot group. If not changes is not propagated.

  • 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/christian

    thx 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

  • Updateable recordset from a stored procedure

    I would like to retrieve an updateable recordset from a stored procedure using the oracle 9.2.0.2.0
    oledb provider
    I am using the sample code/tables provided from Oracle.
    Does anyone have an example or has actually created an updatedable recordset from a stored procedure ?

    Assuming your stored procedure is returning a REF CURSOR, it cannot be done. Oracle's REF CURSORS are read only constructs.
    Justin

  • Setting fields defined in SQL updateable report with a process

    I have SQL statement defined in a SQL updateable report with hidden fields. I want to be able to update these hidden fields with values from other displayed fields on the page. How do I reference these hidden items - I have referencign them as :my_field but get and error telling me thats its underfined.

    But, the reason I am doing this is because I want to format the page with 6 columns in one <TD> cell with some extra text and formatting etc - I don't want 1 column per <TD>. Thats why I am using the APEX_ITEM.TEXT so I can format the 1 <TD> the way I want it (with 6 columns it there).
    In the short term can you tell me how to reference hidden fields please.
    I will create the case in apex.oracle.com in the next few days to make it clearer.
    P.S. see my previous post: SQL QUERY updateable report with APEX_ITEM fields to update hidden columns

  • How to create the Updateable Report

    Hi,
    I have a requirement to create a Updatable report.
    I don't find any option of creating that..when I go create Page, I find only SQL Report or Interactive Report.
    Want to know
    - if there is any documentation for creating Updatable report..I mean step by step process.
    - report is having 10 fields and user want only 4-5 fields to be updated.
    - Can we create updatable Report for SQL query based on 2-3 tables, I mean joins
    - How the fields are getting updated..if we have to write the update statement manually or updating is done automatically.
    - can the updatable fields be updatable/read only based on user. (I mean suppose user1 logins, he can update the description field but when user2 logins..he cannot update decription field..he can only view the filed as a norma report column)
    Appreciate if some one can provide me the details..
    Thanks,
    Deepak

    Hi Deepak
    Rather than looking in reports go to create a Form and select Tabular Forrm - this is essentially just an updateable form and should get you started.
    Cheers
    Ben

  • Scrollable/Updateable ResultSet objects

    I am trying to create an instance of a scrollable/updateable ResultSet object with the following code:
    Statement stmt = con.createStatement(
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = stmt.executeQuery("SELECT * FROM sch.a");
    The Connection object has been made successfully but am getting an AbstractMethodError Exception at line 1.
    Can anyone please help me out here.
    Thanks
    I am using JDK 1.3.1 and JDBC 2.0

    I use this and works fine for me....let me know how it goes...
    ResultSet resultSetMultCond = null;
    Statement getMultPartCond = null;
    String sqlMultCond = null;
    sqlMultCond = "SELECT #PART,#CONDS,COUNT(*) AS MCOUNT FROM MYLIB WHERE #PART = 'A123' GROUP BY #PART,#CONDS ORDER BY #PART";
    getMultPartCond = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_UPDATABLE);
    resultSetMultCond = getMultPartCond.executeQuery(sqlMultCond);

  • Apex conditional field in "SQL Query (updateable report)" region

    I have a multi-row region that displays values and allows entries in a number of fields. I should like the fields to be conditional in that they do not permit entry, but still display, if certain conditions apply (e.g. older rows greyed out). Can this be done?
    I have searched Google and this forum but all the threads I have found relate to field formatting or display/non-display.
    Many thanks in advance Dave Barber
    [Apex=4.1.1.00.23; Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production]
    Edited by: user13515136 on 03-Sep-2012 00:05

    >
    Welcome to the forum: please read the FAQ and forum sticky threads (if you haven't done so already), and update your profile with a real handle instead of "user13515136".
    When you have a problem you'll get a faster, more effective response by including as much relevant information as possible upfront. This should include:
    <li>Full APEX version
    <li>Full DB/version/edition/host OS
    <li>Web server architecture (EPG, OHS or APEX listener/host OS)
    <li>Browser(s) and version(s) used
    <li>Theme
    <li>Template(s)
    <li>Region/item type(s) (making particular distinction as to whether a "report" is a standard report, an interactive report, or in fact an "updateable report" (i.e. a tabular form)
    With APEX we're also fortunate to have a great resource in apex.oracle.com where we can reproduce and share problems. Reproducing things there is the best way to troubleshoot most issues, especially those relating to layout and visual formatting. If you expect a detailed answer then it's appropriate for you to take on a significant part of the effort by getting as far as possible with an example of the problem on apex.oracle.com before asking for assistance with specific issues, which we can then see at first hand.
    I have a multi-row region that displays values and allows entries in a number of fields.Provide exact details of how this has been implemented. (An example on apex.oracle.com is always a good way to do this.)
    I should like the fields to be conditional in that they do not permit entry, but still display, if certain conditions apply (e.g. older rows greyed out). Can this be done? Almost anything can be done, often in multiple ways. Which are appropriate may be dependent on a particular implementation, the skills available to implement it, and the effort you're willing to expend on it. Hence it's necessary to provide full details of what you've done so far...

  • SQL Query (updateable report) Region - Conditionally Hide and Set Values

    SQL Query (updateable report) Region - Conditionally Hide and Set Values
    Outline of requirement :-
    Master / Detail page with Detail updated on same page using SQL Query (updateable report).
    The detail region has the following source
    SELECT item_id,
           contract_id,
           CASE WHEN hardware_id IS NOT NULL THEN
                   'HA'
                WHEN backup_dev_id IS NOT NULL THEN
                   'BD'
                WHEN hardware_os_id IS NOT NULL THEN
                   'HS'
           END item_type,
           hardware_id,
           backup_dev_id,
           hardware_os_id
    FROM   "#OWNER#".support_items
    WHERE  contract_id = :P26_CONTRACT_IDThe table support_items implements arced relationships and has the following columns
    CREATE TABLE SUPPORT_ITEMS
      ITEM_ID         NUMBER                        NOT NULL,
      CONTRACT_ID     NUMBER                        NOT NULL,
      HARDWARE_ID     NUMBER,
      BACKUP_DEV_ID   NUMBER,
      HARDWARE_OS_ID  NUMBER
    )A check type constaint on support_items ensures that only one of the fk's is present.
          (    hardware_id    IS NOT NULL
           AND backup_dev_id  IS NULL
           AND hardware_os_id IS NULL
    OR    (    hardware_id    IS NULL
           AND backup_dev_id  IS NOT NULL
           AND hardware_os_id IS NULL
    OR    (    hardware_id    IS NULL
           AND backup_dev_id  IS NULL
           AND hardware_os_id IS NOT NULL
          )    Hardware_Id is a FK to Hardware_Assets
    Backup_dev_id is a FK to Backup_Devices
    Hardware_os_id is a FK to Hardware_op_systems
    The Tabular Form Element based on item_type column of SQL query is Displayed As Select List (based on LOV) referencing a named list of values which have the following properties
    Display Value     Return Value
    Hardware Asset    HA
    Backup Device     BD
    Computer System   HSThe Tabular Form Elements for the report attributes for hardware_id, backup_dev_id and hardware_os_id are all Displayed As Select List (Based on LOV).
    What I want to do is only display the Select List for the FK depending on the value of the Select List on Item Type, e.g.
    Item_Type is 'HA' then display Select List for hardware_id, do not display and set to NULL the Select Lists for backup_dev_id and hardware_os_id.
    Item_Type is 'BB' then display Select List for backup_dev_id, do not display and set to NULL the Select Lists for hardware_id and hardware_os_id.
    Item_Type is 'HS' then display Select List for hardware_os_id, do not display and set to NULL the Select Lists backup_dev_id and hardware_id.
    There are properties on elements to conditionally display it but how do we reference the values of the SQL query Updateable region? they are not given a page item name?
    Also on the Tabular For Elements there is an Edit tick against a report item - however when you go to the Column Attributes there is not a property with which you can control the Edit setting.
    What's the best way of implementing this requirement in APEX 3.1?
    Thanks.

    >
    Welcome to the forum: please read the FAQ and forum sticky threads (if you haven't done so already), and update your profile with a real handle instead of "user13515136".
    When you have a problem you'll get a faster, more effective response by including as much relevant information as possible upfront. This should include:
    <li>Full APEX version
    <li>Full DB/version/edition/host OS
    <li>Web server architecture (EPG, OHS or APEX listener/host OS)
    <li>Browser(s) and version(s) used
    <li>Theme
    <li>Template(s)
    <li>Region/item type(s) (making particular distinction as to whether a "report" is a standard report, an interactive report, or in fact an "updateable report" (i.e. a tabular form)
    With APEX we're also fortunate to have a great resource in apex.oracle.com where we can reproduce and share problems. Reproducing things there is the best way to troubleshoot most issues, especially those relating to layout and visual formatting. If you expect a detailed answer then it's appropriate for you to take on a significant part of the effort by getting as far as possible with an example of the problem on apex.oracle.com before asking for assistance with specific issues, which we can then see at first hand.
    I have a multi-row region that displays values and allows entries in a number of fields.Provide exact details of how this has been implemented. (An example on apex.oracle.com is always a good way to do this.)
    I should like the fields to be conditional in that they do not permit entry, but still display, if certain conditions apply (e.g. older rows greyed out). Can this be done? Almost anything can be done, often in multiple ways. Which are appropriate may be dependent on a particular implementation, the skills available to implement it, and the effort you're willing to expend on it. Hence it's necessary to provide full details of what you've done so far...

  • Need customized query on updateable report (tabular form)

    I have a pl/sql function that returns a SELECT statement based on very flexible query specifications allowed in a form. (Form has a field for each table column, allows operations like <,>,between, etc, that can be entered directly into the field; all fields need not have some sort of query constraint specified. Essentially the same sort of query flexibility you get in Forms... ) The select always returns the same number of columns. Query results are returned on a different page (either report or tabular form) than that used to enter the query specs.
    The function works beautifully on a page type of Report.
    However, when I take a Tabular Form and switch its query source to PL/SQL function body returns SQL select, the page type becomes Report. The query works on this modified page (returns correct rows), and the columns are still editable (can be typed into) but the changes can't be submitted because the page is no longer a tabular form -- Error is: No updateable report found. Multi row updated and delete operations can only be performed on tabular forms of type 'Updateable Report'.
    How can I have flexible query specs paired w/ an updateable report? Does this require writing my own multi-row DML processes? Or is there a simpler way?
    Thanks,
    Carol

    I have a pl/sql function that returns a SELECT statement based on very flexible query specifications allowed in a form. (Form has a field for each table column, allows operations like <,>,between, etc, that can be entered directly into the field; all fields need not have some sort of query constraint specified. Essentially the same sort of query flexibility you get in Forms... ) The select always returns the same number of columns. Query results are returned on a different page (either report or tabular form) than that used to enter the query specs.
    The function works beautifully on a page type of Report.
    However, when I take a Tabular Form and switch its query source to PL/SQL function body returns SQL select, the page type becomes Report. The query works on this modified page (returns correct rows), and the columns are still editable (can be typed into) but the changes can't be submitted because the page is no longer a tabular form -- Error is: No updateable report found. Multi row updated and delete operations can only be performed on tabular forms of type 'Updateable Report'.
    How can I have flexible query specs paired w/ an updateable report? Does this require writing my own multi-row DML processes? Or is there a simpler way?
    Thanks,
    Carol

  • Buttons not working on updateable SQL report

    Hello
    I have created an updateable SQL report using the wizard but for some reason none of the buttons (Add Row, Delete, Submit) are working.
    When I click on 'Submit', the changes aren't saved.
    When I click on Add Row I get 'Page cannot be displayed error with the URL 'http://rthuas11:7781/pls/htmldbcdbs/wwv_flow.accept'
    When I select a few rows by clicking on the checkbox by each row then click 'Delete' , no rows are actually deleted!
    Any ideas what is going wrong? Do I need to create extra processing? The buttons were created by the wizard
    Thanks
    Simon

    Hi Umry,
    Welcome to the HP Forums!
    I see that your buttons on the left of the screen are not working with your HP Deskjet Ink Advantage 4645. I am happy to help you with this issue!
    Please take a look through this guide. The HP Printer Won't Turn On or Respond When the Power Button is Pressed.
    If that does not fix the issue, please call our technical support at 800-474-6836. If you live outside the US/Canada Region, please click the link below to get the support number for your region. Country-language selector.
    Hope this information helps, and have a great day!
    RnRMusicMan
    I work on behalf of HP
    Please click “Accept as Solution ” if you feel my post solved your issue, it will help others find the solution.
    Click the “Kudos Thumbs Up" to say “Thanks” for helping!

  • How to create Updateable Interactive report in APEX 3.2.1.00.11

    I have an interactive report and am asked to add few more user defined columns, some of them should be free text input box type and couple of others are dropdown list (with Y/N options). I can do that if that was just a SQL report but with interactive report, I am not much aware of if it can be done. I know a way to work around this though - like create a link to direct to a new form page and update there but that is not what I wanted. I need to have those columns in the interactive report itself and should be updateable as well. Is this possible?
    Oracle DB 11g
    Oracle APEX 3.2.1.00.11
    Thanks,
    Sam

    Hi,
    This might help
    http://dbswh.webhop.net/htmldb/f?p=BLOG:READ:0::::ARTICLE:137800346674748
    I hope this do not come too late
    Regards,
    Jari
    My Blog: http://dbswh.webhop.net/htmldb/f?p=BLOG:HOME:0
    Twitter: http://www.twitter.com/jariolai

  • Submit Button in APEX 3.2.1 SQL Query (updateable report)

    Hi all,
    I am fairly new to APEX.  I have an updateable report and have created a button for every row as follows:
    <input type="button" value="Task Complete" onclick="doSubmit('#REF_STEP_ID#');" />
    I have a PL/SQL anonymous block process that calls an oracle procedure On Submit - After Computations and Validations:
    BEGIN
    tta_pkg.p_task_complete(:REQUEST);
    END;
    The button works and calls the Oracle procedure.  My problem is that the process will try to run anytime the page gets submitted due to any other process in the page.  The error I am getting when another process submits the page is as follows.
    ORA-06502:  PL/SQL: numeric or value error:  character to number conversion error.   ( If I disable the process, the page works and all other processes are submitted successfully).
    Does anyone have any ideas?  They will be greatly appreciated.
    Thank you,
    Sylvia

    Sylvia,
    Have you tried adding a condition to the process? I'm not sure what options were available in APEX 3.x (which is really old; the current version is 4.2.4), but in the current versions of APEX there's a specific "When button pressed" field that allows you to specify that the process only fires when a specific button is clicked.
    Regards,
    -David

  • How do I make an updateable Recordset in CS4

    Hello,
    I've been searching for a couple hours now and have been unable to find an answer to this question. I was using MX 2004 until recently (yes I know very old) but I was pretty set in my ways
    This is currently my enemy "Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype."
    I could correct this in previous versions by changing the locktype or cursorlocation but these don't seem to be available to change in a Command Object?
    Am I doomed to writing out all my recordsets from now on? I am sure the command object makes a more secure recordset but that doesn't help me if I can't write a simple update statement.
    If there is a way for me to make this updateable that would be great, if not please reply with that so I can atleast stop looking and just write the recordset (probably something I should have done after looking for 5 minutes with no answers lol)
    here is my code
    Set rsThisMember_cmd = Server.CreateObject ("ADODB.Command")
    rsThisMember_cmd.ActiveConnection = MM_Conn_UBF_STRING
    rsThisMember_cmd.CommandText = "SELECT * FROM dbo.tblCMS834_Temp WHERE Id = ?"
    rsThisMember_cmd.Prepared = true
    rsThisMember_cmd.Parameters.Append rsThisMember_cmd.CreateParameter("param1", 5, 1, -1, rsThisMember__MMColParam) ' adDouble
    Set rsThisMember = rsThisMember_cmd.Execute
    My update is conditional based on whether the user hits approve or reject and only changes two fields which is why I want to write my own update code rather than use the dreamweaver update server behavior.
    <% IF Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    If Request.Form("Submit") = "Reject" Then
    rsThisMember.MoveFirst
    rsThisMember("Approved") = "No"
    rsThisMember("TimeStamp") = Date()
    rsThisMember.Update
    End If
    If Request.Form("Submit") = "Approve" Then
    rsThisMember.MoveFirst
    rsThisMember("Approved") = "Yes"
    rsThisMember("TimeStamp") = Date()
    rsThisMember.Update
    End If
    End If
    %>
    I probably put in too much information but I figured it was better if people knew what I was trying to do. Should be simple. I am fne with writing my own recordset but this is something I do A LOT so it would be great if I knew if there was a way to change the Command Object rather than use Recordset.Open.
    Thanks so much,
    Lori

    This question would be much better suited for posting on the Dreamweaver AppDev forum -
    http://forums.adobe.com/community/dreamweaver/dreamweaver_development
    Can you please repost it there?

  • Update Field On Change For A SQL Query (updateable report)

    Hi,
    I'd like to request help from anyone with ideas on how to solve this.
    We are using APEX 4.2, 10GR2, RedHat5.
    I have a report that comes from SQL Query (updateable report).
    I'm using the apex_item.text and apex_item.hidden on fields.
    I'm using a button to submit and after submit process to add some logic that I need.
    There could be 1 - 10 records in the report.
    There is only 1 field that is needed to enter a value, but the value of this field determines the value of another field.
    I think that I can do this with a submit button and an after submit process where I loop through all the records. I think I have this handled.
    This is the question
    When the value of that field is changed then the value of another field in the same row changes immediately.
    Is this possible?
    All the examples I've seen so far are for a single record and that doesn't work for us.
    I guess this is a MRU process but I haven't seen an example where a dynamic action is possible on a Multi Row Update.
    Could anyone direct me to where I can see an example or help me get directions?
    I appreciate all your help an comments and I thank you in advance.

    Yes why not...what you looking for is a ajax call
    See {message:id=10390979}
    Please note:-you can also do this as a dynamic action as shown below
    Event: Change
    Selection type: jQuery Selector
    jQuery Selector: input[name="f01"]
    True action with Execute JavaScript Code and put all code inside the test funtion, you may need to amend the code to use this.triggeringElemnt in place of this

Maybe you are looking for

  • Clean install from retail 10.3 question

    When I begin the clean install process on my imac that I am reformatting to give to my daughter, the disc 1 installer gives me an error message "cannot install on hard disk because it already has a newer version" The "newer" version is 10.3.9, which

  • Adobe Application Manager crashes

    Application Manager crashes each time I try to update or download to install. I have tried Adobe Creative Suite Cleaner Tool & reinstalling AAM. System is 10.6.8. Have previously had no issues & have downloaded 5 programs & updates. I believe I have

  • Expanding Quicksilver used for internet - is it worth it?

    I still have my trusty old G4 Quicksilver. It's now used by my 6 year old for the internet. The only thing I've done to it over the yeas is give it extra memory - it currently has 1.12GB. Also replaced the CD drive for a DVD drive. It has a tiny inte

  • Dynamic Report Generator ( Urgent )

    I am new to oracle reports. can we make report generators with oracle reports ? this means that like (jasper report and jfree report) I need to generate an XML file dynamically through jsp ,.... is this possible ? does oracle report have API for expo

  • Getting error calling a package/procedure from DB

    I'm on 11.1.1.6 and I'm trying to execute a procedure in a package in the DB my ADF application is connected to.  I get the following error  "Could not find saved view state for token".  If I comment out the execution of the method that is calling th