AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi generator richtig verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

generator richtig verwenden

Ein Thema von Nightfly · begonnen am 8. Apr 2004 · letzter Beitrag vom 9. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#1

generator richtig verwenden

  Alt 8. Apr 2004, 13:01
Hier das Insert Statement meiner DataSet komponente:
SQL-Code:
INSERT INTO RECHNUNG(STELLE,
    BEREICH,
    R_NUMMER,
    R_STELLER,
    R_DATUM,
    R_ARTIKEL,
    R_ANZ,
    R_EPREIS,
    R_MWST,
    LFDNR
)
VALUES(:STELLE,
    :BEREICH,
    :R_NUMMER,
    :R_STELLER,
    :R_DATUM,
    :R_ARTIKEL,
    :R_ANZ,
    :R_EPREIS,
    :R_MWST,
    GEN_ID(gen_rechnung,1)

)
wenn ich aber den Button klicke, der DataSet.Post ausführt,meint er validation verletzung, weil das feld lfdnr null sein soll.
In meiner Datenbak existier aber folgender generator:
SQL-Code:
CREATE GENERATOR GEN_RECHNUNG;
SET GENERATOR GEN_RECHNUNG TO 1;
Wird der nicht richtig ausgeführt? stimmt mein insert statement nicht?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: generator richtig verwenden

  Alt 8. Apr 2004, 13:15
Ein Generator macht IMHO nur richtig Sinn mit einem Trigger. Dies hieße bei dir : Lege in der DB einen Before Insert Trigger an. Dann wird die Nr. ohne Dein zutun aus dem Generator genommen. Diesen kannst du in einem Abwasch dann gleich um 1 erhöhen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#3

Re: generator richtig verwenden

  Alt 8. Apr 2004, 13:24
hab auch schon an einem trigger überlegt,aber keine idee wie der aussehen soll. Kannst du mir da vlt. helfen?

und oben genanntes Beispiel sollte doch funktionieren, das Insert SQL ruft doch auch den generator aus,der dadurch eine nummer zurückgibt und dich selbst um 1 erhöht
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: generator richtig verwenden

  Alt 8. Apr 2004, 13:32
Hi Nightfly,

Du verwendest doch die IBX-Komponeten? Dann kannst Du über die Eigneschaft "GeneratorField" der IBDataSet den Generator ansprechen. Die Lösung über einen Trigger finde ich nicht gut, denn Du kannst dann im Client nur auf Umwegen auf die ID des eben erzeugten Datensatzes zugreifen.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#5

Re: generator richtig verwenden

  Alt 8. Apr 2004, 13:47
Nein, ich verwende die FibPlus Komponenten. Einzig unter AutoUpdateOptions hab ich sowas wie GeneratorName gefunden. Aber auch wenn ich da den generator einstelle,Key fields auf LFDNR setze,die tabelle auf rechnung...der fehler bleibt
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: generator richtig verwenden

  Alt 8. Apr 2004, 14:20
Also ich würde hier auch dringend zu einem Trigger raten.
Ist der Trigger einmal an der Tabelle musst du dir keine Sorgen mehr machen, ob der PK eindeutig ist. Egal wie auf die Tabelle zugegriffen wird.
Zu dem von Lemmy angesprochenen Problem:
Gibts es in IB sowas wie die Returning Clause?
SQL-Code:
Insert INTO RECHNUNG
  (STELLE
  ,BEREICH
  ,R_NUMMER
  ,R_STELLER
  ,R_DATUM
  ,R_ARTIKEL
  ,R_ANZ
  ,R_EPREIS
  ,R_MWST)
VALUES
  (:STELLE
  ,:BEREICH
  ,:R_NUMMER
  ,:R_STELLER
  ,:R_DATUM
  ,:R_ARTIKEL
  ,:R_ANZ
  ,:R_EPREIS
  ,:R_MWST)
Returning LfdNr INTO :o_LfdNr
o_LfdNr müsste dann als Ouput Parameter eingestellt sein und enthält nach dem Insert die neue ID.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: generator richtig verwenden

  Alt 8. Apr 2004, 14:35
Zitat von Robert_G:

Zu dem von Lemmy angesprochenen Problem:
Gibts es in IB sowas wie die Returning Clause?
Nein, mir nicht bekannt, wäre aber ne sinnvolle Erweiterung....

@NightFly: Leider habe ich die FIBPlus vor zwei Tagen vom Rechner geworfen. Aber da sollte eigentlich Hansa weiterhelfen können....

Grüße
Lemmy
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#8

Re: generator richtig verwenden

  Alt 8. Apr 2004, 14:41
na da hoff ich der schaut hier mal rein

@Robert_G sorry, dein Code sagt mir nun wieder garnix. Das kann doch nicht die Insert Anweisung sein die in mein DataSet soll,oder Denn darin ist ja mit keiner Silbe der generator erwähnt,och hab ich bloß ne lange leitung? Bitte um hilfe!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: generator richtig verwenden

  Alt 8. Apr 2004, 15:03
Zitat:
Das kann doch nicht die Insert Anweisung sein die in mein DataSet soll,oder Denn darin ist ja mit keiner Silbe der generator erwähnt,och hab ich bloß ne lange leitung?
Jupp
Bei dem Statement ging ich davon aus, dass ein Trigger an der Tabelle hängt...

Aber wenn Lemmy sagt es gibt keine Returning Cluse in IB, dann gibt's die auch nicht.

Pech gehabt...
  Mit Zitat antworten Zitat
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: generator richtig verwenden

  Alt 8. Apr 2004, 19:56
ich arbeite zwar mit IBObjects und nicht mit FIBPlus aber wenn ich mich recht entsinne
gibt es bei FIB bei den AutoUpdateOptions nicht nur GenName und GenStep sondern noch
auch noch WhenGetGenId da kann man dann einstellen nie, beforepost usw.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:55 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