以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求教公式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=773)

--  作者:老有所乐
--  发布时间:2008/10/5 17:37:00
--  求教公式

请教下面文件“收支总表”的[结余]列代码和[表B金额]列代码。该两列设置为表达式列,因没设置表达式,所填数据不能保存到文件中,故在表中加了“结余列数据样式”和“表B列数据样式”,也就是[结余]数据=“结余列数据样式”数据,[表B金额]数据=“表B列数据样式”数据
,,[表B金额]为表B金额列数据。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:收支账13.table

谢谢!

[此贴子已经被作者于2008-10-5 17:41:32编辑过]

--  作者:kylin
--  发布时间:2008/10/5 19:12:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:收支账-kylin.table


--  作者:kylin
--  发布时间:2008/10/5 19:14:00
--  

1、“表B”[金额]列数据参见表B的DataColChanged事件
2、“收支总表”的[结余]列参见该列的计算代码以及该表的DataColChanged事件
不好意思,要去开会了,有问题请留言,呵呵!


--  作者:czy
--  发布时间:2008/10/5 19:38:00
--  
老六那个流水帐代码没出来前,我是这么写的。

 

 

If e.DataRow("日期") Is Nothing Then

    Return

End if

Dim sum As Integer = dataTables("收支总表").Compute("Sum(收入)", "_Identify <= " & e.datarow("_identify"))

Dim sum1 As Integer = dataTables("收支总表").Compute("Sum(支出)", "_Identify <= " & e.datarow("_identify"))

e.DataRow(e.DataCol.Name) = sum -sum1

[此贴子已经被作者于2008-10-5 19:40:16编辑过]

--  作者:老有所乐
--  发布时间:2008/10/5 20:37:00
--  

谢谢kylin先生!收支总表[结余]列代码非常好,表B的金额列的代码我也感到新奇。是我没说清楚,[表B金额]列也是“收支总表”的一个列,我是想在这列引用表B金额列的按月汇总的金额数据,最好不用关联表。


--  作者:老有所乐
--  发布时间:2008/10/5 21:09:00
--  
谢谢C版主,您的代码应放在什么地方



知道了,是结余列计算代码 。好像小数不能出现。

[此贴子已经被作者于2008-10-5 23:03:51编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/10/6 8:23:00
--  
以下是引用老有所乐在2008-10-5 21:09:00的发言:
谢谢C版主,您的代码应放在什么地方
知道了,是结余列计算代码 。好像小数不能出现。
[此贴子已经被作者于2008-10-5 23:03:51编辑过]

如果要小数,将下面的Integer改为Double

Dim sum As Integer = dataTables("收支总表").Compute("Sum(收入)", "_Identify <= " & e.datarow("_identify"))

Dim sum1 As Integer = dataTables("收支总表").Compute("Sum(支出)", "_Identify <= " & e.datarow("_identify"))

也就是:

Dim sum As Double = dataTables("收支总表").Compute("Sum(收入)", "_Identify <= " & e.datarow("_identify"))

Dim sum1 As Double = dataTables("收支总表").Compute("Sum(支出)", "_Identify <= " & e.datarow("_identify"))


--  作者:kylin
--  发布时间:2008/10/6 9:16:00
--  
以下是引用狐狸爸爸在2008-10-6 8:23:00的发言:

如果要小数,将下面的Integer改为Double

Dim sum As Integer = dataTables("收支总表").Compute("Sum(收入)", "_Identify <= " & e.datarow("_identify"))

Dim sum1 As Integer = dataTables("收支总表").Compute("Sum(支出)", "_Identify <= " & e.datarow("_identify"))

也就是:

Dim sum As Double = dataTables("收支总表").Compute("Sum(收入)", "_Identify <= " & e.datarow("_identify"))

Dim sum1 As Double = dataTables("收支总表").Compute("Sum(支出)", "_Identify <= " & e.datarow("_identify"))

这个无法实现流水账,因为缺少循环控制,无法自动更新本笔之后的结余.
这个_identify对外部表好象无效.
个人以为老六的流水帐为经典之作,呵呵!


--  作者:czy
--  发布时间:2008/10/6 16:29:00
--  
以下是引用kylin在2008-10-6 9:16:00的发言:

这个无法实现流水账,因为缺少循环控制,无法自动更新本笔之后的结余.
这个_identify对外部表好象无效.
个人以为老六的流水帐为经典之作,呵呵!


如果是外部表,何不把自动增量主键名称改成“_identify”?那样加载数据后还减少了一列。
另外有些流水帐不一定有日期列的,如果没有日期列,用_identify做条件应该是个不错的选择。


--  作者:czy
--  发布时间:2008/10/6 18:24:00
--  
以下是引用kylin在2008-10-5 19:12:00的发言:
 下载信息  [文件大小:312.0 KB  下载次数:9]
图片点击可在新窗口打开查看点击浏览该文件:收支账-kylin.table



传统意义上的流水帐是以每一条数据做为一个结余,但老六的这段代码存在一个缺憾,就是如果一天中如果有多笔数据出入的话就只能以一天来进行结余计算,所以个人认为还需再加个条件才能满足要求。