Rss & SiteMap

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

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

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

1楼
zzbyhz 发表于: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编辑过]
2楼
wqc360 发表于:2010/1/1 23:25:00

来个示范文件看看

3楼
程兴刚 发表于:2010/1/1 23:27:00

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

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

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

解决方案二:把“角钢二_重量”列改为数据列,然后在DataColChanged事件中用Find方法的代码来实现。
5楼
zzbyhz 发表于:2010/1/2 12:05:00
我是一个刚刚才学狐表两天的菜鸟,很多东西都是边学边实践,有很多东西还不太明白.试着用代码的时候,仿造《使用手册.跨表计算》里的代码,略作修改,可是老是出现错误提示(见附件)
图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看
,也不知是哪里出错了。请各位指点纠正。谢谢!(已在表中增加了一列数据列角钢二重量A)
[此贴子已经被作者于2010-1-2 12:15:18编辑过]
6楼
czy 发表于:2010/1/2 12:36:00
你的代码放错地了,应该用到DataColChanged事件中。
7楼
zzbyhz 发表于:2010/1/2 14:22:00
谢谢CZY版主的指点!已按照指点将代码放到DataColChanged事件中,可是,一旦执行将角钢二型号改变后,却又出现错误提示,不知是何故?还望指点!
图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看
8楼
yangming 发表于:2010/1/2 15:58:00

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

[此贴子已经被作者于2010-1-2 16:02:57编辑过]
9楼
czy 发表于: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
10楼
zzbyhz 发表于:2010/1/2 19:01:00
解决了,谢谢CZY版主!!!
共10 条记录, 每页显示 10 条, 页签: [1]

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

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