一个小问题,计算“计算字段”时用到其它相关记录应怎么做(50分)

  • 主题发起人 主题发起人 zhaoyipeng
  • 开始时间 开始时间
Z

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题我可以解决,但感到效率不高。希望能有一个最佳方案。
 
什么意思? 举个例子!
 
FieldA Calc1
56.1
70.2 70.2-56.1
80.7 80.7-70.2

如上,在计算Calc1字段时要用当前记录与上一条(或几条)记录的数据计算。
 
请继续研究, 我没有好办法.
 
确实如您所说,可以解决,但是效率不高。
我当时是使用另一个表来实现的。
 
通过OnCalcField事件实现, 限制: 只能实现由上而下的计算(下面的记录用到上面记录的值),
所以效率也高不到哪去.
 
提高效率方法:
1. 修改表结构的设计(出现这种情况一般都是数据库设计上的问题, 为了减小空间, 提高速度,
便于维护角度出发, 不得不为之的不在此列) 或
2. 修改TDataSet, 使之能高效地支持上述计算 或
3. 这不就是CrossTable吗? 使用Decision Cube(? 没用过, 没有发言权)
 
前后记录在逻辑上应该总是有一点关系的,可以做表的自连接. 如果实在找不到什么
关系,仅仅是物理记录的先后关系,可以用记录号这样的特殊字段, ForPro是RECNO,
Informix是RowId, 其他的DBMS我就不知道了.象这样
table X alias A Table X alias B
RowId FieldA RowId FieldA A.FieldA - B.FieldA
1 56.1
2 70.2 1 56.1 70.2 - 56.1
3 80.7 2 70.2 80.7 - 70.2
3 80.7
select A.fieldA - B.FieldA from X A, X B where A.RowId = B.RowId + 1;
 
多人接受答案了。
 
后退
顶部