AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie kann man mit tiOPF Generatoren nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man mit tiOPF Generatoren nutzen

Ein Thema von DelphiBandit · begonnen am 1. Feb 2010 · letzter Beitrag vom 2. Feb 2010
 
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: In der Lüneburger Heide
165 Beiträge
 
Delphi 10.4 Sydney
 
#1

Wie kann man mit tiOPF Generatoren nutzen

  Alt 1. Feb 2010, 10:53
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX / UIB
Hallo zusammen,

ich arbeite mich gerade in die Nutzung des tiOPF-Frameworks ein. Soweit habe ich das auch alles installiert und alle Demo's zum Laufen bekommen. Da google hierzu auch nicht sonderlich hilfreich ist, möchte ich meine Frage mal bei Euch loswerden - in der Hoffnung es nutzt noch jemand tiOPF.

Es gibt in der Firebird-Datenbank (V1.5) sehr viele Tabellen, welche die ihren Primärschlüssel ID haben. Dieser wird in der bestehenden Anwendung durch Zuweisung von "GEN_ID(GEN_NAME, 1) FROM RDB$DATABASE" gefüllt. Jetzt versuche ich diese Logik auf tiOPF umzusetzen, finde aber bisher keinen geeigneten Weg dazu.

Mein erster Schritt war dabei die Anlage eines Hard-Coded-Visistors um das ID-Feld auf die interne OID abzubilden. Laden, Selektieren, Editieren, Speichern und Löschen funktioniert auch einwandfrei. Nur beim Einfügen von neuen Datensätzen finde ich keinen Ansatz nach dem Speichern eines neuen Datensatz dessen generierte (Trigger/Generator) ID herauszufinden.

Die angegebene SQL-Anweisung für den Create-Visitor funktioniert auch, allerdings komme ich nicht an die erzeugte ID heran. Die bräuchte ich aber in der Folge, damit tiOPF seinen Datensatz wiedererkennen kann. Neu laden aller Datensätze wäre ein Ansatz, kostet aber bei vielen Datensätzen Performance ohne Ende. Oder das Neu-Lesen mit Maximum(ID), wobei andere User mittlerweile auch Datensätze angelegt haben könnten. Also auch keine gute Idee.

Hat jemand von Euch damit schon Erfahrungen gemacht oder eine Tipp dazu?

Gruss
Carsten

Delphi-Quellcode:
{ TVisName_Create }

function TVisName_Create.AcceptVisitor: boolean;
begin
  result := (Visited is TPName) and
    (Visited.ObjectState = posCreate);
  Log([ClassName, Visited.ClassName, Visited.ObjectStateAsString, Result]);
end;

procedure TVisName_Create.Init;
begin
  Query.SQLText :=
    'INSERT INTO TEST (NACHNAME, VORNAME) VALUES (:NACHNAME, :VORNAME)';
end;

procedure TVisName_Create.SetupParams;
var
  lData: TPName;
begin
  lData := Visited as TPName;
  // OID braucht nicht gefüllt werden, das erledigt der Trigger automatisch
  Query.ParamAsString['Nachname'] := lData.Nachname;
  Query.ParamAsString['Vorname'] := lData.Vorname;
end;
Carsten
  Mit Zitat antworten Zitat
 


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 03:41 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-2025 by Thomas Breitkreuz