Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请教文件中列与列,表与表相互计算问题

1楼
卟离卟弃 发表于:2009/3/24 13:41:00

库存表中有初期数,入库数,出库数,结存数。入,出,结存是表达式列。
入,出列,中的数据都是根据出库表与入库表进行求各,条件是物品代码一样
我现在用的很笨的计算, 结存=初期+入-出
为什么只有第一行才进行了计算,是因为只有第一行才有出与入?没有出入的不进行计算?
想通过代码,只要出,入表中有数据,库存表就自动统计出入数,并计算出结存。
有同有更加简单的办法,统计出入数,并计算得到结存。怎么样写代码?用什么样的事件?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工具管理.table

2楼
狐哥 发表于: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

试试看看
3楼
czy 发表于:2009/3/24 14:10:00
用表达式列的话要加上IsNull,如:

IsNull([初期数],0)+IsNull([入库数],0)-IsNull([出库数],0)
4楼
卟离卟弃 发表于:2009/3/24 14:19:00
狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别
想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能)

我是新手,请解说一下。。
5楼
卟离卟弃 发表于:2009/3/24 14:22:00
我是新手,不知道列用什么格式好。。。。
也还没有完全摸清楚这个软件的“游戏”规则。。
6楼
狐哥 发表于:2009/3/24 14:23:00
我只是不喜欢用表达式而已,呵呵
如是关联表,CZY版主的代码肯定好啦.
7楼
狐狸爸爸 发表于:2009/3/24 14:27:00
以下是引用卟离卟弃在2009-3-24 14:19:00的发言:
狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别
想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能)

我是新手,请解说一下。。



因为表达式的函数有限,有时对于一些较为复杂的计算要求,有时会显得无能为力。

其实FoxTable有两种方式来实现计算和统计,一种是利用本章所讲述的表达式,另一种是利用代码;表达式计算速度快,即使10 万行的计算也可以瞬间完成,而且不占据存储空间,只是在运行的时候生成计算结果,但是只能使用函数,且支持的函数有限;而代码虽然没有上述优点,但是却具备无比的灵活性,让您能随心所欲地计算。

知道了两者的优点,那么您肯定也知道选择这两种计算方式的原则了:能用表达式完成的任务,绝不用代码

8楼
卟离卟弃 发表于:2009/3/24 14:57:00
谢谢!
接着摸索。。。。。。
共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.