AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

Ein Thema von RWarnecke · begonnen am 22. Nov 2012 · letzter Beitrag vom 22. Nov 2012
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 14:21
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Lemmy

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

AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 14:33
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 16:02
was verstehst Du unter zentral?
Um keine Fragen aufkommen zu lassen würde ich diese Prüfung in die DB verlegen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 16:16
Haben deine Datenklassen direkten Zugriff auf die Datenbank oder über einen Service?

Ich lasse das alles von einem DatenService abtüten:
Delphi-Quellcode:
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;
Der entscheidet dann auch, ob die Prüfung lokal oder auf dem Server erfolgt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Nov 2012 um 16:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 17:52
was verstehst Du unter zentral?
Um keine Fragen aufkommen zu lassen würde ich diese Prüfung in die DB verlegen.

Gruß
K-H
Unter Zentral verstehe ich, dass ich einen eventuell max. zwei feste Stellen habe, wo ich die Felder der Tabellen verwalte und dort auch festlege, ob das Feld der Tabelle ein Pflichtfeld ist oder nicht. Das Programm soll dann beim Anklicken von Speichern genau diesen Punkt ansteueren und schauen, ob die Pflichtfelder entsprechend mit Werten bestückt sind.

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 ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: Verwaltung & Überwachung von Pflichtpfeldern einer o. mehrerer DB-Tabellen

  Alt 22. Nov 2012, 18:00
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;
Andreas
  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 14:25 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