Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feldwert in DBGrid prüfen (https://www.delphipraxis.net/137456-feldwert-dbgrid-pruefen.html)

FrankBrin 21. Jul 2009 08:57

Datenbank: MDB • Zugriff über: ADO

Feldwert in DBGrid prüfen
 
Hallo zusammen,
habe ein ganz profanes Problemchen.
Habe eine kleine AdressenDB in MSAccess. Zeige nun über TADOQuery, DataSource und einem DBGrid die Daten an. In der letzten Spalte steht das Geschlecht (m/f). Diese Spalte prüfe ich beim ColExit auf Inhalt = f oder m.
Nun ist es so, daß immer wieder der Wert '' zurückgegeben wird.

Meine Frage: Warum?

Habe hier ein bischen Codefragmente:

Delphi-Quellcode:
procedure TFrmAddrList.DGdAddrListColExit(Sender: TObject);
var myDate   : TDate;
    myStr    : String;
begin
  if (DSrcAddrList.State = dsEdit) or (DSrcAddrList.State = dsInsert) then begin
    //Geschlecht prüfen
    if (DGdAddrList.SelectedIndex = 6) then begin
      myStr := LowerCase( DSrcAddrList.DataSet.FieldByName( 'Gender').AsString);
      if (myStr = 'f') or (myStr = 'm') then begin
        DSrcAddrList.DataSet.FieldByName( 'Gender').AsString := MyStr;
      end else begin
        Application.MessageBox( 'Ein Mensch kann nur (m)ann oder (f)rau sein. Bitte korrigieren!', 'He Du', MB_OK);
      end;
    end;
  end;
end;

Gruß
Frank

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

hoika 21. Jul 2009 09:37

Re: Feldwert in DBGrid prüfen
 
Hallo,

1. benutze bitte die Delphi-Code-Formatierung.
2. Du benutzt das falsche Event.
Schau mal in der Hilfe unter TDataSet.BeforePost nach


Heiko

shmia 21. Jul 2009 09:43

Re: Feldwert in DBGrid prüfen
 
Du solltest das etwas anderst machen.
Die Prüfung muss am Dataset ansetzen, nicht am DBGrid.
Delphi-Quellcode:
TForm1.Table1BeforePost(Dataset:TDataset);
var
  gender: string;
begin
  gender := AnsiUpperCase(DataSet.FieldByName('Gender').AsString);
  if (gender = '') or not (gender[1]='M' or gender[1]='F') then
    raise Exception.Create('Ein Mensch kann nur (M)ann oder (F)rau sein.'); // oder (Z)witter :-)

  // hier wäre auch die Gelegenheit das M/F als Großbuchstaben zurück aufs Feld zu schreiben
  DataSet.FieldByName('Gender').AsString := gender;
end;

FrankBrin 21. Jul 2009 09:57

Re: Feldwert in DBGrid prüfen
 
Hey vielen Dank für die prompte Hilfe.

War mir ja fast schon klar, das ich mal wieder an der falschen Stelle agiere.

Auf jedenfall tut es jetzt im BeforePost.

Danke nochmals

Frank


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