Paradox数据库计算问题(100分)

  • 主题发起人 主题发起人 wanwqing
  • 开始时间 开始时间
W

wanwqing

Unregistered / Unconfirmed
GUEST, unregistred user!
有如下问题请教:
Delphi数据库(Paradox)中要计算价格(价格=单价*数量),单价字段已经输入,数量字段大于0的已经输入,为零的空着未输,这就给计算带来了麻烦:数量字段为0的记录就无法计算,并给出“记录不处于编辑状态”的错误提示!如何解决?最好不要人为补0!

 
我认为先判断一下数量字段值是否为空,不为空再计算!
 
没有输的计算时=null
可以先判断一下在计算,也可以直接把null转换成0

table.edit可以使数据处于编辑状态
 
form 刚建立时初始化 对应数量字段 dbedit 中的数为 0
 
最简单的方法:
直接在设计Paradox表结构时就将数量字段的初始值赋为0
这样程序中无须对此编程.
 
如为空时应该能计算,当成0,你试过吗?你的问题好象不在这里。
 
同意menxin,PARADOX会自动将数字字段的nil当0处理。应该有别的问题
 
你是不是用的自动计算如果是的话那么就不会,你检查一下你的程序吧!!!
 
同意xdzhan
if ..fieldbyname('xx').asstring<>'' then
begin
计算
end;
 
你将价格定义为计算字段,则为NULL也不会出现错误.
如果不是,则必须加一个 if ....then语句.判断一下是否为空.
 
直接在修改Paradox表"数量"字段,default values 值赋为0;
这样程序中无须对此编程.
如果不想改动数据库的话 见 popeye
 
用QUERY发SQL吧
 
遇到过这个问题,刚开始也用加判断的方法,后来觉得不好,后来,在 OnNewRecord 时,
把字段填为 0, 可以解决新记录的空值问题,对于老记录,我干脆在程序开始处,先查一
遍空值,把空值全替换成 0。
另:用 Query 不行的,结果是 数字+ 空值 = 空值 ,结果还是不对。
 
加一句:
用了 D5 以后,发现单机版的数据库可以这样开发:Interbase + D5 的 Interbase组件,
可以在安装时省很多事,只要装个 interbase server ,自己的程序只需要 copy 过去
就可以了,不用装什么鬼 BDE
 
有的地方,如果为0,或相除时,分母为0,不想显示值,采用赋空值的方法。但是记录
为空,又存在数值计算需要判断的问题。可采用如下方法:
设定一Table,名称TblProduce //产品
With TblProduce do
Begin
If (FieldByName('单价').Value<>0) And (FieldByName('数量')<>0) And (Length(Trim(FieldByName('单价').AsString))<>0) And (Length(Trim(FieldByName('数量').AsString))<>0) Then
FieldByname('价格').Value:=FieldByName('单价')+FieldByName('数量')
Else
FieldByName('价格').Value:=Null;
End;


 
使用Query的计算字段来进行计算,
在计算字段里写入表达式进行计算,绝对不会出现问题
 
sql server里有setvalue,不知道能不能在paradox里用.你试下
 
要给字段赋值先得让数据库,处于编辑状态。
例如:
datasource1.Edit;
datasource1.xxxx.value:=....;
......
table1.Post;
 
多人接受答案了。
 
后退
顶部