起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1963|回复: 1

数据集的计算字段和临时字段的响应事机说明

[复制链接]
发表于 2005-4-26 16:14:01 | 显示全部楼层 |阅读模式
数据集的滚动、数据的修改等都会导致计算字段的OnCalcField、数据集的OnCalcFields事件被触发(只是物理字段,在6月份发布的版本中业务也支持对临时字段的修改)。原因是数据集内部没有保存“计算字段”的值。而“临时字段”的值在数据集内部是被存储下来的。
使用“临时字段”就相当于为每条记录都分配了一个[临时变量],[临时变量]和记录的对应关系是由数据集来负责维护的,只要在合适的时机为他们赋值就可以了,“临时字段”中的数据在数据集关闭后就不存在了。

何时为临时变量赋值:
  1、可以在数据集打开后统一为“临时字段”赋一次值(不考虑分页加载和数据变更等情况)
  2、可以在OnCalcFields事件中写入下代码:
     (当不考虑数据变更情况)
       if Variants.VarIsEmpty(DataSet.FieldByName('LSZD1').AsVariant) then
         DataSet.FieldByName('LSZD1').AsString := 'XXX';
     或
     if FBoolean then //FBoolean只在AfterOpen之前为True
       DataSet.FieldByName('LSZD1').AsString := 'XXX';
回复

使用道具 举报

发表于 2008-5-6 09:39:02 | 显示全部楼层
我再加点:
如果不好使
if Variants.VarIsEmpty(DataSet.FieldByName('LSZD1').AsVariant) then
可以换成
       if (DataSet.FieldByName('LSZD1').asstring='' )then
         DataSet.FieldByName('LSZD1').AsString := 'False';
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 00:46 , Processed in 0.039255 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表