关于字段有效性控制的问题
一个TQuery Query1中的TFloatField字段Query1F_PRICE需要控制有效的数值范围。
对应Query1F_PRICE的是一个数据感知控件TDBEdit dbedtPrice,作为用户输入数值的界面。
应客户要求,如果输入的数值为非法,除了要提示错误信息外,还要达到以下要求:1.提示信息消息栏不能出现英文,不论是提示信息还是信息框标题。
2.输入的错误值要保留在dbedtPrice中。
3.输入的错误值不能被保存到数据库中。
为了适应以上要求,我没有在Query1F_PRICE的MaxValue和MinValue做任何限制(为了客户需求1,不用Delphi的提示信息),而是在Query1F_PRICE的OnValidate函数中写了如下代码:
_____________________________________________________________
procedure TPriceForm.Query1F_PRICEValidate(Sender: TField);
begin
if (Sender.AsFloat<0) or (Sender.AsFloat>9.99) then
begin
Application.MessageBox('价格必须是0到9.99的数值','取值范围错误',MB_OK+MB_ICONWARNING);
Abort;
end;
end;
_______________________________________________________________
但是如果是以上的代码,dbedtPrice中输入的错误数值在信息提示后会被修改为原来的合法值(满足不了客户需求2)。如果不写Abort语句,则非法值会被保存入数据库(满足不了客户需求3)。问问大家有什么方法可以实现上面3个需求都满足?