Deutsches Application Express Forum (ApEx) -- Installation , Engine / SQL , Anwendungen
Re: m:n Beziehung darstellen/pflegen
geschrieben von: SID (195.182.11.---)
Datum:

Hallo,

noch hat leider niemand beschrieben, wie man eine m:n Beziehung abbilden könnte ohne Master-Detail-Form.
Deshalb habe ich es erstmal damit probiert und muss sagen, dass ich - vermutlich zufällig - bei fast 10 Versuchen gerade einmal die Pages erhalten habe, die ich haben wollte. Ansonsten gab es immer die merkwürdigsten Ergebnisse.
Ich vermute, dass ein Master-Detail-Form nicht funktioniert, wenn nicht die Foreign-Keys korrekt und vollständig definiert wurden. Woher sollte der Wizard dann auch wissen, in welches Feld er die ID des Masters in der Zuordnungstabelle speichern sollte. Ist das so richtig? Im Buch "Beginning Oracle Application Express 4.2" habe ich gelesen, dass dem nicht so ist... :-(

Bei einer weiteren Page habe ich nun den Effekt, dass ich einen Benutzer mit ID=1 angezeigt bekomme, obwohl ich auf den Link zu Benutzer mit ID=2 geklickt habe. Auch wenn ich "Create" anklicke, bekomme ich Benutzer mit ID=1 zur Bearbeitung angeboten. Der Link scheint aber richtig definiert zu sein, habe da auch nichts verändert.
Beim Aklicken von ">" (ohne Änderung von Daten) erscheint dieser Fehler:
"Current version of data in database has changed since user initiated update process. current row version identifier = "364C22A0E03704B36ADD192FD56E8BCB" application row version identifier = "41124E57092F8E93F495ED7149FEB6BC" (Row 1)"

Falls jemand Master-Detail-Forms im Griff hat: Was könnte denn falsch gelaufen sein, um diese merkwürdigen Ergebnisse zu bekommen?


Könnten vielleicht diese Trigger damit zu tun haben? Die habe ich so zu allen beteiligten Tabellen hinterlegt.



-- Trigger: sta_benutzer_t1 speichert Zeitstempel und Userid bei Änderungen

CREATE OR REPLACE TRIGGER sta_benutzer_t1
BEFORE INSERT OR UPDATE ON sta_benutzer
FOR EACH ROW

BEGIN

IF INSERTING THEN
SELECT sta_benutzer_seq.NEXTVAL, v('APP_USER'), sysdate INTO :new.id, :new.ins_uid, :new.ins_ts FROM dual;
ELSIF UPDATING THEN
SELECT v('APP_USER'), sysdate INTO :new.upd_uid, :new.upd_ts FROM dual;
END IF;

END;

-- Trigger: sta_benutzer_t2 speichert Daten in Audit-Tabelle

CREATE OR REPLACE TRIGGER sta_benutzer_t2
AFTER INSERT OR UPDATE OR DELETE ON sta_benutzer
FOR EACH ROW

DECLARE

v_aktion varchar2(3);

BEGIN

IF INSERTING THEN
v_aktion := 'INS';
ELSIF UPDATING THEN
v_aktion := 'UPD';
ELSIF DELETING THEN
v_aktion := 'DEL';
END IF;

IF INSERTING OR UPDATING THEN

INSERT into sta_benutzer_aud
(id,
userid,
nachname,
vorname,
email,
beschreibung,
geloescht,
aktion_zp,
aktion,
aktion_userid)
values
(:NEW.id,
:NEW.userid,
:NEW.nachname,
:NEW.vorname,
:NEW.email,
:NEW.beschreibung,
:NEW.geloescht,
sysdate,
v_aktion,
v('APP_USER'));


ELSIF DELETING THEN

INSERT into sta_benutzer_aud
(id,
userid,
nachname,
vorname,
email,
beschreibung,
geloescht,
aktion_zp,
aktion,
aktion_userid)
values
(:OLD.id,
:OLD.userid,
:OLD.nachname,
:OLD.vorname,
:OLD.email,
:OLD.beschreibung,
:OLD.geloescht,
sysdate,
v_aktion,
v('APP_USER'));

END IF;

END;

Im Einsatz: Application Express 4.2.1.00.08



Thema Neugierige geschrieben von geschrieben
m:n Beziehung darstellen/pflegen 4665 SID
Re: m:n Beziehung darstellen/pflegen 1945 SID
Re: m:n Beziehung darstellen/pflegen 1649 christian_goto
Re: m:n Beziehung darstellen/pflegen 1719 christian_goto
Re: m:n Beziehung darstellen/pflegen 1855 SID
Re: m:n Beziehung darstellen/pflegen 2568 christian_goto
Re: m:n Beziehung darstellen/pflegen 1673 christian_goto


In diesem Forum dürfen nur registrierte Benutzer schreiben.
This forum powered by Phorum.