Announcement

Collapse
No announcement yet.

Wert eine GENERATORS setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wert eine GENERATORS setzen

    Hallo an alle,

    ich möchte den Wert eines Generators auf den maximalen Wert eines Feldes einer Tabelle setzen.

    Mit: <B>SET GENERATOR GEN_NAME TO 1;</B>
    wird ein fester Wert gesetzt. Wie jedoch wird ein variabler Wert (aus einer Tabelle) gesetzt?

    Mit: <B>SET GENERATOR GEN_BUCHJOURNAL_NUMMER to
    SELECT MAX(SPALTENNAME) FROM TABLENAME;</B>

    geht es leider <B>nicht</B>!

    Leider läßt sich auch SET GENERATOR ... nicht innerhalb einer IB-procedure verwenden.

    Hat jemand einen Hinweis?

    Danke.

    Holger

  • #2
    Du kannst zwar in einer Prozedur nicht mit Set Generator arbeiten, dafür aber mit einem Aufruf des Generators mit einem entsprechenden Intervall (auch mit einem negativen) einen neuen Wert setzen.
    Im folgenden eine Prozedur aus einer meiner Datenbanken, das Anpassen an deine Bedürfnisse kannst du sicher selbst.

    Viel Erfolg

    Florian

    <pre>
    CREATE PROCEDURE RESET_GEN_TABADRESSEN
    AS
    DECLARE VARIABLE MAXVALUE INTEGER;
    DECLARE VARIABLE CURVALUE INTEGER;
    DECLARE VARIABLE NXTVALUE INTEGER;
    /*NxtValue wird nur gebraucht, damit der Generator Call aufgerufen werden kann*/
    BEGIN
    SELECT MAX(AdrID), GEN_ID(GEN_TABADRESSEN, 0) FROM TABADRESSEN Into :MaxValue, :CurValue;
    IF (MaxValue IS Null) then MaxValue = 0;
    IF (MaxValue > CurValue) then /*der Generator "geht nach" */
    NxtValue = GEN_ID(GEN_TABADRESSEN, (MaxValue - CurValue));
    Else /*der Generator "geht vor" */
    NxtValue = GEN_ID(GEN_TABADRESSEN, -(CurValue - MaxValue));
    End
    </pre&gt

    Comment


    • #3
      Hallo Florian,

      Dank für den Tipp.
      Manchmal sieht man den Wald vor Bäumen nicht...

      Holge

      Comment

      Working...
      X