Foxtable(狐表)用户栏目专家坐堂 → 请教文件中列与列,表与表相互计算问题


  共有19974人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
卟离卟弃
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
请教文件中列与列,表与表相互计算问题  发帖心情 Post By:2009/3/24 13:41:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐哥
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/3/24 14:10:00 [只看该作者]

用表达式列的话要加上IsNull,如:

IsNull([初期数],0)+IsNull([入库数],0)-IsNull([出库数],0)

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2009/3/24 14:19:00 [只看该作者]

狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别
想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能)

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

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2009/3/24 14:22:00 [只看该作者]

我是新手,不知道列用什么格式好。。。。
也还没有完全摸清楚这个软件的“游戏”规则。。

 回到顶部
帅哥哟,离线,有人找我吗?
狐哥
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/3/24 14:23:00 [只看该作者]

我只是不喜欢用表达式而已,呵呵
如是关联表,CZY版主的代码肯定好啦.

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/24 14:27:00 [只看该作者]

以下是引用卟离卟弃在2009-3-24 14:19:00的发言:
狐哥,CZY说得也可以,您说得也可以,我知道两种方式有着根本区别
想知道您为什么当时想到的并不是CZY的那种方式?或着说您这样做与CZY的有着那些区别或重要影响(对文件以后操作,更改或实现其它功能)

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



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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2009/3/24 14:57:00 [只看该作者]

谢谢!
接着摸索。。。。。。

 回到顶部