Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Interbase Trigger (https://www.delphipraxis.net/215140-interbase-trigger.html)

tkhandel 16. Mai 2024 10:36

Datenbank: IB • Version: 2020 • Zugriff über: IBConsole

Interbase Trigger
 
Hallo

ich habe einen Trigger für einen Zählerfeld und ein Feld Kundennr
Nun soll der Trigger den Zähler füllen (klappt natürlich) und
zusätzlich das Feld Kundennr füllen Anfangsbuchstaben des Kunden und dem Zähler.

begin
New.Nr = 'K' + GEN_ID(Kunde_Nr, 0);
end


das klappt so nicht er will das + nicht und String funktionen gibt es auch nicht.
Wie bekomme ich das hin und wie kann ich die externen UDF funktionen einbinden?
Ach ja ich setze IBLight bzw. ToGo ein falls das noch wichtig ist.

TBx 16. Mai 2024 10:44

AW: Interbase Trigger
 
Die Stringverkettung wird mit zwei Pipes durchgeführt:
Code:
‘K‘ || GEN_ID(Kunde_Nr, 0);
Anmerkung: Dein gen_id-Befehl setzt den Zähler nicht hoch.

tkhandel 16. Mai 2024 11:03

AW: Interbase Trigger
 
Hallo Danke,

Das hochzaehlen macht ein anderer Trigger
Der an Position 0 steht oder kann ich beides in einen trigger setzen?

MyRealName 16. Mai 2024 11:18

AW: Interbase Trigger
 
Ja, kann alles in einen Trigger.

TBx 16. Mai 2024 11:39

AW: Interbase Trigger
 
Der Befehl gen_id liefert Dir den aktuellen Stand des Generators zurück und erhöht dann um den zweiten Parameter.
Also einfach in dem obigen Statement die 0 durch eine 1 ersetzen.

tkhandel 16. Mai 2024 11:59

AW: Interbase Trigger
 
Das ist mir klar mit dem hochzählen,
Ich habe ja zwei Trigger der 1 zählt ein integer feld hoch der zweite generiert die Kundennr mit dem bleichen Wert.

Blup 16. Mai 2024 12:41

AW: Interbase Trigger
 
Es ist aber nicht sicher gestellt, dass der Generator inzwischen unverändert bleibt.
Eine andere Connection könnte den inzwischen verwendet haben.
Am besten das Ergebnis von gen_id() einer Variablen zuweisen und diese dann weiter verwenden.

Delphi.Narium 16. Mai 2024 16:14

AW: Interbase Trigger
 
Wäre da für eine Lösung mit nur einem Trigger, da kann dann auch nicht zufällig wer anderes zwischenzeitlich den Generatorwert verändert haben, so dass Lücken oder Duplikate entstehen könnten. Und es ist weniger Aufwand bei der Pflege der Datenbanktrigger und man muss nicht darauf achten, dass die beiden bisher betroffenen Trigger auf jeden Fall in der richtigen Reihenfolge aufgerufen werden.
SQL-Code:
begin
  New.Nr = 'K'||GEN_ID(Kunde_Nr, 1);
end

tkhandel 16. Mai 2024 20:46

AW: Interbase Trigger
 
Hallo ja habe jetzt einen Trigger der beides füllt klappt super,
meine vorherigen Versuche sind nur an der "||" Stringverbindung gescheitert.
Ich habe das letzte mal so um die 2000 mit IB gearbeitet, da hat man vieles
vergessen.8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz