Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DefaultExpression (https://www.delphipraxis.net/51767-defaultexpression.html)

IlseB 18. Aug 2005 12:01

Datenbank: oracle • Version: 9.i • Zugriff über: odbc

DefaultExpression
 
Hallo, habe wieder ein Problem!

Habe eine Eingabemaske mit dbFeldern, welche mit TTable-Komponenten verknüpft sind.
Nun soll verhindert werden, dass der User fälschlicherweise die ENTF-Taste drückt und ein numerisches Feld ohne Wert da steht.

Funktioniert ganz gut mit CostumConstraint und ConstraintErrorMessage (Eigenschaften von Feldinspektor). => ergibt eine Fehlermeldung

Eleganter wäre es jedoch, das Feld in diesem Fall mit Value = 0 zu belegen. Ich dachte, dass dies mit der Eigenschaft DefaultExpression möglich sein müsste, jedoch ignoriert Delphie jegliche Eingaben, sowohl in einfachen Hochkommas als aus =STANDARDWERT usw.

Hat jemand eine Idee Woran dies liegt?


IlseB

marabu 18. Aug 2005 13:45

Re: DefaultExpression
 
Hallo IlseB,

wenn du keine NULL-Werte in numerischen Datenbankfeldern haben möchtest, dann sind DEFAULT constraints auf DDL-Ebene sicher die erste Wahl. Ist das keine Option für dich, dann kannst du alternativ im Event OnBeforePost() deiner Table-Komponente entsprechenden Code einbauen:

Delphi-Quellcode:
procedure TDataForm.TableBeforePost(DataSet: TDataSet);
begin
  Exit;
  with DataSet do
  if FieldByName(YourFieldName).AsString = '' then
    FieldByName(YourFieldName).AsFloat := 0;
end;
Die Eigenschaft DefaultExpression der Komponente TField scheint mir dem Einsatz von ClientDataSets vorbehalten zu sein - egal, was die verunglückte deutsche Fassung des Delphi-Handbuches auch sagen möchte, aber das ist nur eine Ahnung, die mich beschleicht, wenn ich den deutschen Text in Gedanken wieder ins Original zurück übersetze.

Grüße vom marabu

IlseB 19. Aug 2005 08:02

Re: DefaultExpression
 
Vielen Dank.
An diese Lösung habe ich auch schon gedacht! Ich hoffte jedoch auf eine 'einfachere' Lösung, da mein Problem 7 Tabellen mit ca. 1500 Datenfeldern betrifft und es recht mühsam ist diese alle einzutippen.
IlseB


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