AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Delphi, Interbase, Trigger und Stored PROBLEM
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi, Interbase, Trigger und Stored PROBLEM

Ein Thema von cugar · begonnen am 28. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#1

Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 14:56
Datenbank: InterBase • Version: 7.5 • Zugriff über: TIBDataSet
Hi,
es ist Neuland für mich mit InterBase zu arbeiten und habe da ein Problem.
Meine (zur Zeit^^) eine Tabelle greift über TIBDataSet auf die Interbase zu.
Meine Frage ist:
Wie kann ich vom Delphi aus eine Stored Procedure ausführen (und wie müßte sie aussehen), die wiederrum einen Trigger aktiviert und ich die Daten aus dem Trigger in meiner Tabelle beim Insert zu sehen bekomme??

Bin für jeden Tipp dankbar!
Viele Grüsse
Andreas

Mein Trigger:

SQL-Code:
SET TERM ^ ;
/* Triggers only will work for SQL triggers */

CREATE TRIGGER "TRIGKDANSCHRFIT" FOR "KDRECHANSCHRIFT"
ACTIVE BEFORE INSERT POSITION 0
as
begin
   "KDRECHANSCHRIFT"."KDRECHANREDE" = 0;
   "KDRECHANSCHRIFT"."KDRECHABTEILUNG" =0;
   "KDRECHANSCHRIFT"."KDRECHCOUNTRY" =0;
   "KDRECHANSCHRIFT"."KDRECHMWST" = True;
   "KDRECHANSCHRIFT"."KDRECHORT" =0;
   "KDRECHANSCHRIFT"."KDRECHSTRASSE" =0;
   "KDRECHANSCHRIFT"."KDRECHZAHLUNGSART" =0;
   
   
   IF ("KDRECHANSCHRIFT"."KDRECHID" IS NULL) THEN
      "KDRECHANSCHRIFT"."KDRECHID" = GEN_ID(Genkdanschrift, 1);
end
 ^

COMMIT WORK ^
SET TERM ;^
[edit=mkinzler]SQL-Tag ergänzt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#2

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 15:41
Häh? Wieso brauchst Du denn eine Stored Procedure?
Dieser Trigger wird automatisch ausgeführt, sobald in die Tabelle KDRECHANSCHRIFT ein Datensatz eingefügt wird.
Aus Deiner Delphi-Anwendung kannst Du also einfach ein INSERT auf die Tabelle machen. Du brauchst keine Stored Procedure dafür.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#3

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 15:47
Ja, schon richtig. Du bekommst diese Daten aber nicht sofort zu sehen (ganz wichtig mein Wert vom GEN_ID), erst nach POST.
Glaub Hr Kosch hat da schon mal ein Tipp gegeben und sagte eine Stored Procedure würde da helfen.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#4

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 15:50
Das liegt aber eher daran dass Dein Dataset nicht mitbekommt, dass sich die Daten beim insert nochmal geändert haben. Ich glaube Holger hat sich mal so richtig kräftig über das Caching vom TIBDataSet aufgeregt (oder war es ne andere Komponente?).

Versuch einfach mal, den Datensatz nach dem Insert nochmal explizit von der Datenbank zu laden.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 15:52
Zitat von cugar:
Ja, schon richtig. Du bekommst diese Daten aber nicht sofort zu sehen (ganz wichtig mein Wert vom GEN_ID), erst nach POST.
Glaub Hr Kosch hat da schon mal ein Tipp gegeben und sagte eine Stored Procedure würde da helfen.
Den Generator kann man auch mit Delphi einfach per SQL abfragen und erhöhen(!):

select gen_id(generatorname, 1) from rdb$database liefert den Generator (und erhöht ihn um 1).

Man braucht keine Stored Procedure, sondern weist den per Select erhaltenen Wert einfach dem Parameter der Insert-Query zu (bzw. über das OnNewRecord-Event eines Datasets dem ID-Feld).
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#6

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 16:12
DANKE!!
Wieder dazu gelernt, geht suppper gut.

Eine Frage hätte ich noch, wei aber nicht ob sie hier her gehört.
Habe meine Kundentabelle, die ist über Schlüsselfelder mit anderen Tabellen wie zb: Anreden, Strassen, Orte, Abteilungen, Länder und paar anderen verbunden (das funktioniert einwandfrei).
Jetzt möchte ich die Daten über Lookup-Felder in meinem DBGrid anzeigen und editieren können.
Wenn ich für jede Untertabelle ein Lookup-Feld einrichte, geht die Anzeige im DBGrid in den Keller (man hat das Gefühl die Software bleibt stehen, vermutlich wegen der Menge an Daten).
Gibt es eine andere elegantere Lösung?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 17:04
Zitat von cugar:
DANKE!!
Wieder dazu gelernt, geht suppper gut.

Eine Frage hätte ich noch, wei aber nicht ob sie hier her gehört.
Habe meine Kundentabelle, die ist über Schlüsselfelder mit anderen Tabellen wie zb: Anreden, Strassen, Orte, Abteilungen, Länder und paar anderen verbunden (das funktioniert einwandfrei).
Jetzt möchte ich die Daten über Lookup-Felder in meinem DBGrid anzeigen und editieren können.
Wenn ich für jede Untertabelle ein Lookup-Feld einrichte, geht die Anzeige im DBGrid in den Keller (man hat das Gefühl die Software bleibt stehen, vermutlich wegen der Menge an Daten).
Gibt es eine andere elegantere Lösung?
Neue Frage, neuer Thread

zwei Dinge kann ich aber hier schon mal verraten:

* editierbare Grids würde ich vermeiden, besser einen eigenen Bearbeitungsdialog oder ein Frame dafür verwenden, das einen einzigen Datensatz (den gerade im Grid selektierten) darstellt
* die Lookups kann man über Sub-Selects ersetzen, dann erledigt der Datenbankserver die Arbeit
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#8

Re: Delphi, Interbase, Trigger und Stored PROBLEM

  Alt 28. Mai 2009, 17:43
Zitat von mjustin:
* editierbare Grids würde ich vermeiden, besser einen eigenen Bearbeitungsdialog oder ein Frame dafür verwenden, das einen einzigen Datensatz (den gerade im Grid selektierten) darstellt
Du meinst: DBGrid nur für die Anzeige der Datensätze und für die Bearbeitung ein modales Fenster? Finde ich gar nicht schlecht, damit vermeide ich einige Fehler bei der Eingabe.

Danke
  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 21:03 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