Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Leerer Datensatz (https://www.delphipraxis.net/12318-leerer-datensatz.html)

Budda 25. Nov 2003 09:21


Leerer Datensatz
 
Moin moin,

hab im Prinzip 2 Fragen.
Ich arbeite mit den ADO Komponenten.
Wenn ein user nun über DBEdit einen neuen Datensatz anlegt, dieser aber leer ist.
Wie fang ich das ab das dann kein leerer Datensatz angelegt wird?

Und nochwas.
Eingabemaske mit DBEdit Feldern. Unten 2 Buttons einmal Speichern und schliessen und einmal Ohne Speichern schliessen. Hinter dem OnClick Event vom Ohne Speichern schliessen hab ich folgenden Code:
Delphi-Quellcode:
  Panel3.Visible := false;
  Panel1.Align := alClient;
  DBGrid1.Align := alClient;
  DBGrid1.Refresh;
  Panel1.Visible := true;
So dadurch kommt mein DBGrid wieder zum vorschein, allerdings ist dann ganz unten ein leerer Datensatz, wenn ich jetzt nochmal refreshe ist er weg. Will der User jetzt allerdings wieder einen neuen Datensatz anlegen (ADOQuery1.Append) haut er mir eine Fehlermeldung um die Ohren das ein Wert nicht NULL sein darf. Gut, hab ich so deklariert. Das kommt aber nur durch den vorhin angelegten leeren Datensatz.
Hoffe das war verständlich ^^
Kann mir da vielleicht wer weiterhelfen?

Gruss
Budda

Albi 25. Nov 2003 09:39

Re: Leerer Datensatz
 
Wenn ich das jetzt richtig verstanden habe, willst Du verhindern das jemand daran gehindert wird, einen leeren Datensatz abzuspeichern.

Ich löse das meist so, das ich in das OnChange Ereignis einfach reinschreibe, das wenn das Feld leer ist (getTextLen = 0) dann soll der Button - Speichern inaktiv sein.

Somit verhinderst Du, das jemand einen Datensatz "ohne Daten" abspeichert.

Ich arbeite zwar mit BDE und Query aber das sollte bei ADO genauso gehen. Bei Query/Table gibt es die Funktion Cancel, damit wird das append wieder aufgehoben.

r_kerber 25. Nov 2003 09:47

Re: Leerer Datensatz
 
Ich würde das in BeforeInsert der Query/Table abfangen.

Garby 25. Nov 2003 10:13

Re: Leerer Datensatz
 
Hallo,

zu 1: Du hast in deiner Tabelle sicher Pflichtfelder, die unbedingt gefüllt werden müssen (ein leerer Datensatz bringt meist nicht viel :zwinker: ).
Diese Pflichtfelder würde ich im BeforePost Ereignis der AdoQuery abfragen:
Delphi-Quellcode:
procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
  if DataSet.FieldByName('FELD1').IsNull then
    raise Exception.Create('Das Feld "FELD1" muss einen Wert haben');
  if DataSet.FieldByName('FELD2').IsNull then
    raise Exception.Create('Das Feld "FELD2" muss einen Wert haben');
end;
Durch die ausgelöste Exception wird das Speichern abgebrochen.

zu 2: angenommen du verwendest die gleiche OnClick-Prozedur für beide Buttons:
Delphi-Quellcode:
procedure TForm1.btnSaveClick(Sender: TObject);
begin
  if Sender = btnSaveCancel then
    AdoQuery1.Cancel
  else
    AdoQuery1.Post;

  // Code zum Schließen
end;
Ich hoffe das hilft dir weiter.

Budda 25. Nov 2003 10:30

Re: Leerer Datensatz
 
Zitat:

Ich hoffe das hilft dir weiter.
Jup, besten Dank ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 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