以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教文件中列与列,表与表相互计算问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2191) |
||||
-- 作者:卟离卟弃 -- 发布时间:2009/3/24 13:41:00 -- 请教文件中列与列,表与表相互计算问题 库存表中有初期数,入库数,出库数,结存数。入,出,结存是表达式列。
|
||||
-- 作者:狐哥 -- 发布时间:2009/3/24 14:08:00 -- 最好将:入,出,结存改成数具列 在:datacolchanged中设代码如一点吧: Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "物品代码" dr("入库数") =datatables("工具出库").Compute("Sum(数量)", "[物品代码] = \'" & dr("物品代码") & "\'") dr("出库数") =datatables("工具入库").Compute("Sum(数量)", "[物品代码] = \'" & dr("物品代码") & "\'") case "入库数","出库数" dr(结存) = dr("初期数") + dr("入库数") - dr("出库数") end select 然后在工具入库表和出库表的DATACOLCHANGED中设一代码: Dim dr As DataRow dr = DataTables("工具库存").Find("[物品代码] = \'" & e.DataRow("物品代码") & "\'") If dr IsNot Nothing Then DataTables("工具库存").DataCols("物品代码").RaiseDataColChanged(dr) End If 试试看看 |
||||
-- 作者:czy -- 发布时间:2009/3/24 14:10:00 -- 用表达式列的话要加上IsNull,如: IsNull([初期数],0)+IsNull([入库数],0)-IsNull([出库数],0) |
||||
-- 作者:卟离卟弃 -- 发布时间:2009/3/24 14:19:00 -- 狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别 想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能) 我是新手,请解说一下。。 |
||||
-- 作者:卟离卟弃 -- 发布时间:2009/3/24 14:22:00 -- 我是新手,不知道列用什么格式好。。。。 也还没有完全摸清楚这个软件的“游戏”规则。。 |
||||
-- 作者:狐哥 -- 发布时间:2009/3/24 14:23:00 -- 我只是不喜欢用表达式而已,呵呵 如是关联表,CZY版主的代码肯定好啦. |
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/3/24 14:27:00 -- 以下是引用卟离卟弃在2009-3-24 14:19:00的发言:
狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别 想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能) 我是新手,请解说一下。。 因为表达式的函数有限,有时对于一些较为复杂的计算要求,有时会显得无能为力。 其实FoxTable有两种方式来实现计算和统计,一种是利用本章所讲述的表达式,另一种是利用代码;表达式计算速度快,即使10 万行的计算也可以瞬间完成,而且不占据存储空间,只是在运行的时候生成计算结果,但是只能使用函数,且支持的函数有限;而代码虽然没有上述优点,但是却具备无比的灵活性,让您能随心所欲地计算。 知道了两者的优点,那么您肯定也知道选择这两种计算方式的原则了:能用表达式完成的任务,绝不用代码 |
||||
-- 作者:卟离卟弃 -- 发布时间:2009/3/24 14:57:00 -- 谢谢! 接着摸索。。。。。。 |