AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Leerer Datensatz

Ein Thema von Budda · begonnen am 25. Nov 2003 · letzter Beitrag vom 25. Nov 2003
Antwort Antwort
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#1

Leerer Datensatz

  Alt 25. Nov 2003, 09:21
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
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#2

Re: Leerer Datensatz

  Alt 25. Nov 2003, 09:39
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.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Leerer Datensatz

  Alt 25. Nov 2003, 09:47
Ich würde das in BeforeInsert der Query/Table abfangen.
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Leerer Datensatz

  Alt 25. Nov 2003, 10:13
Hallo,

zu 1: Du hast in deiner Tabelle sicher Pflichtfelder, die unbedingt gefüllt werden müssen (ein leerer Datensatz bringt meist nicht viel ).
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.
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#5

Re: Leerer Datensatz

  Alt 25. Nov 2003, 10:30
Zitat:
Ich hoffe das hilft dir weiter.
Jup, besten Dank
  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 15:34 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