以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]重算下一行怎么写  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=330)

--  作者:抽烟男人
--  发布时间:2008/9/7 11:07:00
--  [求助]重算下一行怎么写

用 recalc 只能重算敕列,或算当前行,下一行应该怎么写


--  作者:kylin
--  发布时间:2008/9/7 11:37:00
--  
 e.datatables("入库数量").datacols("结余数量").recalc(e.Position+1)
--  作者:抽烟男人
--  发布时间:2008/9/7 11:40:00
--  
谢了
--  作者:抽烟男人
--  发布时间:2008/9/7 11:50:00
--  
好像不行,不知是哪错了
--  作者:lxl
--  发布时间:2008/9/7 11:56:00
--  
以下是引用kylin在2008-9-7 11:37:00的发言:
 e.datatables("入库数量").datacols("结余数量").recalc(e.Position+1)

当然不行了 呵呵
e参数没有Position 属性
就是Table的Position属性 返回值是当前行位置 是一个数字,不可能做recalc的参数的.
Recalc的参数必须是DataRow类型

[此贴子已经被作者于2008-9-7 11:56:00编辑过]

--  作者:抽烟男人
--  发布时间:2008/9/7 11:59:00
--  
那应该怎么样实现,lxl兄
--  作者:lxl
--  发布时间:2008/9/7 12:01:00
--  
数据库各条记录之间是平等的关系,一般不会因为上条的变动影响下一条记录的值
易表中的流水帐公式都是对于数据库来说都是不规范的.
你说的重算下一条记录 不知道是什么情况下使用.
对于易表的流水帐公式在数据库中往往是通过查询来统计实现的.

当然,代码的灵活性很强,你说的也能通过[_Identify]列来实现,不过这是不规范的.
比如DataColChanged 事件中:
e.DataRow 表示当前列,那么可以得到e.DataRow("_Identify") 的值
然后用Filter方法找到[_Identify] 的值 等于e.DataRow("_Identify") + 1的列进行重算


--  作者:抽烟男人
--  发布时间:2008/9/7 12:04:00
--  
我就是看中了流水帐的记录
你帮我看看http://www.foxtable.com/dispbbs.asp?boardid=2&id=331&page=1&star=1