AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase Trigger

Ein Thema von tkhandel · begonnen am 16. Mai 2024 · letzter Beitrag vom 16. Mai 2024
Antwort Antwort
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#1

Interbase Trigger

  Alt 16. Mai 2024, 10:36
Datenbank: IB • Version: 2020 • Zugriff über: IBConsole
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.
Jürgen
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.890 Beiträge
 
Delphi 12 Athens
 
#2

AW: Interbase Trigger

  Alt 16. Mai 2024, 10:44
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.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Interbase Trigger

  Alt 16. Mai 2024, 11:03
Hallo Danke,

Das hochzaehlen macht ein anderer Trigger
Der an Position 0 steht oder kann ich beides in einen trigger setzen?
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Interbase Trigger

  Alt 16. Mai 2024, 11:18
Ja, kann alles in einen Trigger.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.890 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interbase Trigger

  Alt 16. Mai 2024, 11:39
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.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Interbase Trigger

  Alt 16. Mai 2024, 11:59
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.
Jürgen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

AW: Interbase Trigger

  Alt 16. Mai 2024, 12:41
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.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#8

AW: Interbase Trigger

  Alt 16. Mai 2024, 16:14
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
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
87 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Interbase Trigger

  Alt 16. Mai 2024, 20:46
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.
Jürgen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz