Sachmerkmale Auswahliste ergänzen

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
RKR
Beiträge: 88
Registriert: Do Mär 15, 2007 11:07 am
Wohnort: Hochheim am Main (Hessen)

Sachmerkmale Auswahliste ergänzen

Beitrag von RKR »

Hallo,

wir haben ein kleines Problem mit unseren Sachmerkmalen. Wenn wir zum Beispiel beim Merkmal "Farbe" die Auswahliste um eine weitere Farge ergänzen wollen, dann erscheint beim speichern die Fehlermeldung >>Der Datensatz darf nicht geändert werden<<?

Dies liegt wohl daran, dass das Merkmal "Farbe" ja bereits über ein Template im Artikelstamm benutzt wird. Heißt das nun aber, dass man seine Sachmerkmale nachträglich nie mehr veändern kann??? Oder wie kann man dies trotzdem abändern?
MfG > RKR

GDB-Version: AvERP2009-A
Software-Version: 3.6.0.15
RKR
Beiträge: 88
Registriert: Do Mär 15, 2007 11:07 am
Wohnort: Hochheim am Main (Hessen)

Beitrag von RKR »

So das Problem konnte geklärt werden...

Es ist jederzeit möglich die Sachmerkmal Auswahlliste zu ergänzen, jedoch nicht die einzelnen beriets vergebenen Auswahlwerte nachträglich zu verändern, sobald diese in AvERP in einer anderen Maske genutz werden.

Falls diesse "Sicherheitsfunktion" der nicht nachträglichen Änderungsmöglichkeit jedoch unerwünscht ist, kann diese wie folgt mit dem "IB Expert" Tool ausgeschaltet werden:

- IB Expert starten und Datenbank auswählen ;-)

- unter Trigger die "BROP_BU0" mit Doppelklick auswählen

- am unteren Ende der Anweisung den hier nachfolgend kursiv dargestellsten Bereich mit den Kommando /* und */ am Anfang bzw. Ende außer Funktion setzen:

/*IF ((TempID IS NOT NULL) AND (TempID > 0)) THEN
BEGIN
IF ((NEW.FELDTYP <> OLD.FELDTYP) OR (NEW.FELDFORMAT <> OLD.FELDFORMAT)) THEN
EXCEPTION UPDATE_NICHT_ERLAUBT;
ELSE
IF (F_BIGSUBSTR(OLD.AUSWAHL,NEW.AUSWAHL) < 0) THEN
EXCEPTION UPDATE_NICHT_ERLAUBT;
END*/


- abschließend mit "Roles" (Blitzsymbol bzw. Ctrl+ F9) und "Commit" die Änderung bestätigen!


Dank an Synerpy... :D
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Sachmerkmale kann man beliebig verändern. Sie könnten selbst Farben löschen, die schon verwendet werden. Die getroffene Auswahl im Artikelstamm ist redundant gespeichert.

Sicherheitshalber gibt es aber eine Prüfung, die nur eine Ergänzung der bestehenden Auswahlliste erlaubt. Dies ist enthalten, damit es bei Wertpaaren, beispielsweise 1=rot, 2=blau etc. nicht dazu kommt, dass die Referenz der Zahl zu Farbe verloren geht.

Die Prüfung ist im Trigger enthalten. Um diese herauszunehmen, bitte folgendes Skript einspielen:

Code: Alles auswählen

SET TERM ^ ;

CREATE OR ALTER TRIGGER BPROP_BU0 FOR BPROP
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
  /* LETZTER STAND 28.03.2008 10:44:05 HB */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('BPROP_BU0');

  IF (NEW.GESPEICHERT <> OLD.GESPEICHERT) THEN EXCEPTION KEINE_AENDERUNG;   
  NEW.BENUTZER = USER;
  NEW.GESPEICHERT = CURRENT_TIMESTAMP;

  /*  Feldtyp:
      1 = Zeichenkette
      2 = Ganzahl
      3 = Gleitkommazahl
      4 = Auswahlliste
      5 = Datum
      6 = DatumZeit
      7 = Zeit */

  IF ((NEW.FELDTYP IS NULL) OR (NEW.FELDTYP < 0)) THEN
    EXCEPTION DATEN_UNVOLLSTAENDIG;

  IF ((NEW.FELDTYP IS NULL) OR (NEW.FELDTYP <= 0)) THEN
    EXCEPTION DATEN_UNVOLLSTAENDIG;

  IF ((NEW.FELDTYP = 4) AND ((NEW.AUSWAHL IS NULL) OR (NEW.AUSWAHL = ''))) THEN
    EXCEPTION DATEN_UNVOLLSTAENDIG;

  IF (NEW.FELDTYP <> 4) THEN NEW.AUSWAHL = NULL;

  IF (USER <> 'WORSTCASE') THEN
  BEGIN
    IF ((NEW.FELDTYP <> OLD.FELDTYP) OR (NEW.FELDFORMAT <> OLD.FELDFORMAT) OR (NEW.AUSWAHL <> OLD.AUSWAHL)) THEN
      IF (EXISTS (SELECT FIRST 1 ID
                  FROM BPROPBSA
                  WHERE BPROP_ID = OLD.ID)) THEN
        IF ((NEW.FELDTYP <> OLD.FELDTYP) OR (NEW.FELDFORMAT <> OLD.FELDFORMAT)) THEN
          EXCEPTION UPDATE_NICHT_ERLAUBT;
  END
END
^

SET TERM ; ^

GRANT UPDATE,REFERENCES ON BPROP TO TRIGGER BPROP_BU0;
GRANT INSERT ON A_WASMACHTIB TO TRIGGER BPROP_BU0;
GRANT SELECT ON BPROPBSA TO TRIGGER BPROP_BU0;
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Ich muss wohl noch schneller tippen...
Antworten