Foxtable(狐表)用户栏目专家坐堂 → [求助]如何实现跨表的表达式列


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

主题:[求助]如何实现跨表的表达式列

美女呀,离线,留言给我吧!
cherryjing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
[求助]如何实现跨表的表达式列  发帖心情 Post By:2022/9/1 10:33:00 [只看该作者]

一个表为合同表,包括合同名称、合同编号、签订日期等数据列;
另一个表为价格表,包括商品名称、型号、单价、数量、合同编号等数据列;
希望达到以下效果:在合同表里直接就可以看到每个合同的商品总价

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


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/9/1 10:42:00 [只看该作者]

进一步可以在合同表里根据签订日期等进行目录树筛选,对合同额(即该合同商品总价)进行汇总

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110527 积分:562519 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/1 10:46:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/9/1 11:04:00 [只看该作者]

我在价格表里设置了表达式列:金额=单价*数量,
接着建立单向关联:合同_价格
此时,在合同表里增加表达式列:Sum(Child(合同_价格).金额),结果该表达式列没有任何数据,怀疑是不是金额列本来就是表达式列,所以没有数据,
于是,我又换了一个表达式:Sum(Child(合同_价格).单价 * Child(合同_价格).数量),结果提示:聚合参数中的语法错误,需要具有可能的“child”限定符的单个列参数

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110527 积分:562519 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/1 11:20:00 [只看该作者]

Sum(Child(合同_价格).金额)肯定是可以的,应该是价格表没有这个合同编号的数据

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


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/9/1 11:59:00 [只看该作者]

谢谢蓝老师,之前的问题已解决。

现在的新问题是:
合同表里有项目编号列,另有一项目表,有项目名称、项目编号列等。
在合同表以项目编号列汇总时希望显示相应的项目名称,该如何设置Subtotalgroup的caption?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110527 积分:562519 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/1 13:30:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/9/1 14:08:00 [只看该作者]

现在不止一级分组,有两级分组:
    Dim t As Table = Tables("合同表")
    t.GroupAboveData = True '分组行位于数据行之上
    t.TreeVisible = True '显示目录树
    Dim g As Subtotalgroup
    t.SubtotalGroups.Clear()
    g = New Subtotalgroup
    g.GroupOn = "专业"
    g.TotalOn = "合同额"
    t.SubtotalGroups.Add(g)
    g = New Subtotalgroup
    g.GroupOn = "项目编号"
    g.TotalOn = "合同额"
    g.Caption = "{0}"
    t.SubtotalGroups.Add(g)
    t.Subtotal()
仅在“项目编号”那一级分组的时候需要修改标题,If r.IsGroup Then仅能判断该行为分组行,请问如何判断是哪一级分组行呢?

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110527 积分:562519 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/1 14:10:00 [只看该作者]

再判断第一个列的值

msgbox(r("第一个列"))
if r("第一个列") like “专业*” then

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


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/9/1 16:02:00 [只看该作者]

如果两级分组均要修改标题的话,由于合计行第一列的值已经变成分组,帮助中
Dim f As String = "产品 = '" & r("产品") & "'"
这句显然要根据不同的分组进行修改,由于合同表第一列为“合同编号”,故修改代码如下:

        If r.IsGroup Then
            Output.Show(i & "  " & r("合同编号"))
            If r("合同编号") Like "####*" Then'如果是项目分组行
                Dim f As String = "项目编号 = '" & r("合同编号") & "'" 
                Dim pro As String = DataTables("项目表").Find(f)("项目简称")
                Dim v As String = pro & "合同数量:" & t.Compute("Count(日期)", f)
                v = v & " 合同金额:" & t.Compute("Sum(合同额)", f)
                r("合同编号") = v
            Else'如果是专业分组行
                Dim f As String =  "专业 = '" & r("合同编号") & "'"     '此时f如此定义就会跨项目统计专业,请问如何解决?
                Dim v As String = "合同数量:" & t.Compute("Count(日期)", f)
                v = v & " 合同金额:" & t.Compute("Sum(合同额)", f)
                r("合同编号") = r("合同编号") & ": " & v
            End If
        End If


 回到顶部
总数 17 1 2 下一页