关于字段有效性控制的问题

abcynic 2003-11-19 12:04:26
一个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个需求都满足?
...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcynic 2003-11-20
  • 打赏
  • 举报
回复
自己顶一下,高手帮忙想想办法。
abcynic 2003-11-19
  • 打赏
  • 举报
回复
1.我也认为第二个要求太没有必要了。
2.技术经理要求必须用数据感知控件,不能改用edit,而且数据修改、显示都是通过DBEdit,也不适用Edit。
47522341 2003-11-19
  • 打赏
  • 举报
回复
1、我觉得第二条完全没有必要;

2、如果客户非要求这样;就换成edit控件吧;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧