![]() |
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] |
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 |
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; |
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