起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 397|回复: 17

【结贴】如何触发自动填充?**

[复制链接]
发表于 2008-1-30 13:56:14 | 显示全部楼层 |阅读模式
A,B,C三字段,其中C字段在数据字典中定义了自动填充,触发条件为任意字段变更,表达式为C=A+B。
现在是这样,我A,B字段都是通过存储过程从其他地方取过来的,并不是在前台录入的,所以自动填充的触发条件不满足,我现在希望能够在数据集打开和刷新的时候触发这自动填充,不知道如何实现,谢谢。
.                                                                                                                                                                                       .
.                                                                                                                                                                                       .
回复

使用道具 举报

发表于 2008-1-30 14:01:12 | 显示全部楼层
dataset.edit;

注意,这样做只能填充当前记录的C字段
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-30 14:17:53 | 显示全部楼层
我想填充的是所有记录的字段C,有没有办法让整个数据集都更新一下呢?
.                                                                                                                                                                                       .
.                                                                                                                                                                                       .
回复 支持 反对

使用道具 举报

发表于 2008-1-30 14:25:02 | 显示全部楼层
c 字段为什么不用表达式计算字段呢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-30 14:55:15 | 显示全部楼层
因为C字段也需要被存储过程计算累加到别的表,我这里表与表的数据累加计算是通过存储过程完成的,如果全部在存储过程中实现太麻烦,所以表内字段的关系想在平台中完成。
.                                                                                                                                                                                       .
.                                                                                                                                                                                       .
回复 支持 反对

使用道具 举报

发表于 2008-1-30 15:02:00 | 显示全部楼层
那自动填充应该不行,要么遍历数据集赋值,要么在存储过程中就算好。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-30 15:12:47 | 显示全部楼层
那如何遍历数据集赋值呢?
.                                                                                                                                                                                              .
.                                                                                                                                                                                              .
回复 支持 反对

使用道具 举报

发表于 2008-1-30 15:16:14 | 显示全部楼层
DataSetBroker1.DataSet.First;
  while not DataSetBroker1.DataSet.Eof do
  begin
    DataSetBroker1.DataSet.Edit;
    DataSetBroker1.DataSet.FieldByName('C').asFloat :=
      DataSetBroker1.DataSet.FieldByName('A').asFloat + DataSetBroker1.DataSet.FieldByName('B').asFloat;
    DataSetBroker1.DataSet.Next;
  end;

数据量大时候效率低,建议还是存储过程中算好,你A,B都算了也不差算个C了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-30 15:41:09 | 显示全部楼层
唉,关键是我这些个表中A,B少而C多啊,而且这些个C之间还有计算关系,所以想在平台解决。
有没有什么办法让DataSet.Edit触发到数据集的每一条数据呢?
.                                                                                                                                                                                              .
.                                                                                                                                                                                              .
回复 支持 反对

使用道具 举报

发表于 2008-1-30 16:33:44 | 显示全部楼层
必须要滚动记录集了
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-6 23:19 , Processed in 0.040639 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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