![]() |
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Hallo zusammen,
ich überlege gerade, wie ich die Pflichtpfelder einer Datenbanktabelle (deklariert mit NOT NULL) an meine normalen Edit-Felder binden kann. Ich hole mir über eine Query die entsprechenden Daten in eine Klasse und verbinde dann die Edit-Felder mit den entsprechenden Properties der Klasse. Die Änderungen in der Datenbank werden ebenfalls über die Klasse gesteuert. Jetzt ist meine Frage welche Möglichkeiten habe ich zu einer zentralen Überprüfung von den Plichtpfeldern außer der manuellen Überprüfung ? Ich hatte mir überlegt, eventuell eine zweite Klasse zu erstellen, was mir aber nicht sinnvoll erscheint. |
AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Hi,
die reine OOP Lösung wäre anstelle der Properties einfach Felder zu verwenden, dort kann man dann die zusätzlichen Eigenschaften ablegen (Required) Grüße |
AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
was verstehst Du unter zentral?
Um keine Fragen aufkommen zu lassen würde ich diese Prüfung in die DB verlegen. Gruß K-H |
AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Haben deine Datenklassen direkten Zugriff auf die Datenbank oder über einen Service?
Ich lasse das alles von einem DatenService abtüten:
Delphi-Quellcode:
Der entscheidet dann auch, ob die Prüfung lokal oder auf dem Server erfolgt
TDataService = class
public function Validate( ASubject : TSubject ) : Boolean; function Update( ASubject : TSubject ) : Boolean; function Retrieve( ASubject : TSubject; AID : Variant ) : Boolean; end; function TDataService.Update( ASubject : TSubject ) : Boolean; begin if not Validate( ASubject ) then Exit( False ); ... end; |
AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Zitat:
Der Aufbau, den ich im Moment habe ist folgender : Datenbanktabellen mit Daten --> TUniQuery (diese fragt die entsprechenden Daten ab) --> Die einzelnen Daten aus der Query werden in ein Klasse geschrieben und diese ist wieder in einer TObjectList. Die TObjectList reagiert jetzt auf das Hinzufügen eines neuen Datensatzes, das Ändern eines Datensatzes und auf das Löschen eines Datensatzes und führt dann automatisch entsprechend die dazugehörigen SQL-Befehl in der Datenbank aus. Im Programm selber greife ich nur auf die Daten der Klasse in der TObjectList zu. Nun möchte ich, bevor ich irgendwelche neuen oder geänderten Daten in die Klasse der TObjectList schreibe überprüfen, ob das Feld ein Pflichtfeld ist oder nicht ? Die Eingabekomponenten haben weitestgehend den gleichen Namen wie das Tabellenfeld nur mit einem entsprechend Suffix vorne dran. Die Eingabekomponenten, die das nicht haben, ändere ich einfach noch. Nur wie bekomme ich die Definition des Datenbankfeldes NOT NULL von der Datenbank in mein Programm ohne DB-Komponenten ? |
AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Wenn man "ganz normal" mit Datasets arbeitet (also ohne abgehobene Konzepte) dann kann man
im Event [TDataset].BeforePost eine Schleife über alle Felder ausführen:
Delphi-Quellcode:
for i := 0 to Dataset.Fields.Count-1 do
begin f := Dataset.Fields[i]; if f.Required and not f.ReadOnly and (f.IsNull or (Trim(f.AsString)='')) then begin f.FocusControl; raise Exception.CreateFmt('Feld <%s> muss einen Inhalt haben', [f.DisplayName]); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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