Foxtable(狐表)用户栏目专家坐堂 → 求助!关于跨表计算的问题


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

主题:求助!关于跨表计算的问题

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


加好友 发短信
等级:婴狐 帖子:40 积分:396 威望:0 精华:0 注册:2009/12/25 18:45:00
求助!关于跨表计算的问题  发帖心情 Post By:2010/1/1 22:47:00 [只看该作者]

我在设计一个小软件时遇到一个问题: 有两个表:甲、乙,甲表中有A名称、A数量、A重量、B名称、B数量、B重量六列(必须如此设置六列),乙表中有X名称、Y每米重量两列。甲乙两表已作关联,甲表为子表。 甲表中的A名称和B名称需到乙表中查找并调用与之相对应的Y每米重量,参与甲表中的计算, 即:A重量=乙表中与A名称对应的Y每米重量×A数量 B重量=乙表中与B名称对应的Y每米重量×B数量 当甲表从乙表中调用与B名称对应的Y每米重量时,却总是调用与A名称对应的Y每米重量而不能正确调用。 这个问题如何解决? 请各位大侠指点指点。谢谢!!! 现将附件上传,请程版主及各位大侠指点! 问题在柱构件工程量计算表中的"角钢二_重量"
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工程项目核算.rar

[此贴子已经被作者于2010-1-2 0:51:26编辑过]

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


加好友 发短信
等级:三尾狐 帖子:790 积分:5677 威望:0 精华:0 注册:2009/4/17 18:42:00
  发帖心情 Post By:2010/1/1 23:25:00 [只看该作者]

来个示范文件看看


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/1 23:27:00 [只看该作者]

问题不算复杂,估计您要是上传文件比您写作半天解决问题更快!


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


加好友 发短信 三级勋章
等级:童狐 帖子:273 积分:2066 威望:0 精华:0 注册:2008/9/5 23:31:00
  发帖心情 Post By:2010/1/2 1:58:00 [只看该作者]

楼主所提问题的关键在于:父表和子表之间只能通过确定的某一列来建立关联,不能用父表的一列去对应同一个子表的多列。
所以“角钢二_重量”列的公式中:Parent(型号_构件).每米重量,其实还是根据“角钢一_型号”列指定的型号去到角钢型号表中去取值,而并非楼主所希望的根据“角钢二_型号”列指定的型号去到角钢型号表中去取值。

解决方案一:把角钢型号表复制一份,不妨命名为角钢型号2,然后仿照原来已经建立的关联再建立一个关联“型号_构件2”,公式改为:Parent(型号_构件2).每米重量……即可;

解决方案二:把“角钢二_重量”列改为数据列,然后在DataColChanged事件中用Find方法的代码来实现。

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


加好友 发短信
等级:婴狐 帖子:40 积分:396 威望:0 精华:0 注册:2009/12/25 18:45:00
  发帖心情 Post By:2010/1/2 12:05:00 [只看该作者]

我是一个刚刚才学狐表两天的菜鸟,很多东西都是边学边实践,有很多东西还不太明白.试着用代码的时候,仿造《使用手册.跨表计算》里的代码,略作修改,可是老是出现错误提示(见附件)
图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看
,也不知是哪里出错了。请各位指点纠正。谢谢!(已在表中增加了一列数据列角钢二重量A)
[此贴子已经被作者于2010-1-2 12:15:18编辑过]

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


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

你的代码放错地了,应该用到DataColChanged事件中。

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


加好友 发短信
等级:婴狐 帖子:40 积分:396 威望:0 精华:0 注册:2009/12/25 18:45:00
  发帖心情 Post By:2010/1/2 14:22:00 [只看该作者]

谢谢CZY版主的指点!已按照指点将代码放到DataColChanged事件中,可是,一旦执行将角钢二型号改变后,却又出现错误提示,不知是何故?还望指点!
图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
yangming
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2010/1/2 15:58:00 [只看该作者]

可能是列名称有问题,多层标题应该如何写,你看看帮助

[此贴子已经被作者于2010-1-2 16:02:57编辑过]

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


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

角钢二重量,角钢二重量A  为数据列。
将代码改成:

if e.DataCol.Name = "角钢二型号" Then
    Dim dr1 As DataRow = e.DataRow
    if dr1.IsNull("角钢二型号") then
        dr1("角钢二重量A") = Nothing
    Else
        Dim dr As Datarow = DataTables("角钢型号").Find("[型号] = '" & dr1("角钢二型号") & "'")
        if dr IsNot Nothing Then
            dr1("角钢二重量A") = dr("每米重量") * dr1("构件数量") * dr1("角钢二数量")
        End If
    End If
End If

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


加好友 发短信
等级:婴狐 帖子:40 积分:396 威望:0 精华:0 注册:2009/12/25 18:45:00
  发帖心情 Post By:2010/1/2 19:01:00 [只看该作者]

解决了,谢谢CZY版主!!!

 回到顶部