Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra

  Alt 21. Jan 2009, 15:18
So, wie angedroht hier einmal die Gedanken, die ich mir gemacht hatte. Was ich letztendlich erreichen wollte war, dass das Frontend mit "ganz normalen" Klassen hantiert und nichts von der DB weiß bzw. wissen muss. Ein "fertiges" OPF wollte ich allerdings nicht benutzen, da diese entweder zu unflexibel oder zu kompliziert sind und ich außerdem die Kontrolle behalten wollte.
Fangen wir mal "unten" (bei der Datenbank) an. Nach einem größeren Kraftakt resultierend aus einer DB-Umstellung bin ich auf den Trichter gekommen, zur Kommunikation zwischen OPF und DB ausschließlich auf Views und SPs zurückzugreifen. Man kann das auch dahingehend auf die Spitze treiben, dass man alle Rechte auf die Tabellen entzieht und nur diesen Views und SPs erteilt. Nehmen wir als Beispiel einmal an, wir möchten Personen mit ihrer Augenfarbe (eigene Stammdatentabelle) erfassen. Dann könnte die View beispielsweise so aussehen (schnell aus dem Kopf getippt, keine Garantie für Funktion):
SQL-Code:
CREATE VIEW VW_Person(ID,Name,Vorname,AugenfarbenID,Augenfarbe)
AS
  SELECT
    Person.ID AS ID,
    Person.Name AS Name,
    Person.Vorname AS Vorname,
    Augenfarben.ID AS AugenfarbenID,
    Augenfarben.Bezeichnung AS Augenfarbe
  FROM
    Person
  JOIN
    Augenfarben ON Person.Augenfarben_ID = Augenfarben.ID
Dazu kommen dann noch 3 SPs (je eine zum Einfügen, Ändern und Löschen). Die entsprechende Klasse im OPF hätte dann die entsprechenden Properties, die aus der View gefüllt und mittels SP geändert werden. Zusätzlich habe ich noch Objektlisten implementiert, um z.B. eine Auswahl per ComboBox zu ermöglichen.
TPersonenliste.GetPersonen(const sList: TStrings); Dabei werden die entsprechenden Objekte mittels AddObject sofort in den Items hinterlegt (kann man auch anders machen, wenn man den Speicher schonen will oder voraussichtlich sehr viele Datensätze erwartet). Nun ist es am Frontend relativ leicht, einen Datensatz zu holen und zu bearbeiten: aus den Items z.B. einer ComboBox den entsprechenden Satz auswählen, in die Detailansicht wechseln, bearbeiten und abspeichern. Die SPs, die dahinterstehen, müssen mich hier überhaupt nicht mehr interessieren, wenn sie einmal ordentlich durchgetestet sind.

So mache ich das im Moment (ist ja immer noch in der Entwicklung), ob das der Königsweg ist, kann ich nicht entscheiden, aber es funktioniert bislang überraschend gut
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat