以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何实现跨表的表达式列 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179641) |
-- 作者:cherryjing -- 发布时间:2022/9/1 10:33:00 -- [求助]如何实现跨表的表达式列 一个表为合同表,包括合同名称、合同编号、签订日期等数据列; 另一个表为价格表,包括商品名称、型号、单价、数量、合同编号等数据列; 希望达到以下效果:在合同表里直接就可以看到每个合同的商品总价
|
-- 作者:cherryjing -- 发布时间:2022/9/1 10:42:00 -- 进一步可以在合同表里根据签订日期等进行目录树筛选,对合同额(即该合同商品总价)进行汇总 |
-- 作者:有点蓝 -- 发布时间:2022/9/1 10:46:00 -- 1楼参考:http://www.foxtable.com/webhelp/topics/1472.htm |
-- 作者:cherryjing -- 发布时间:2022/9/1 11:04:00 -- 我在价格表里设置了表达式列:金额=单价*数量, 接着建立单向关联:合同_价格 此时,在合同表里增加表达式列:Sum(Child(合同_价格).金额),结果该表达式列没有任何数据,怀疑是不是金额列本来就是表达式列,所以没有数据, 于是,我又换了一个表达式:Sum(Child(合同_价格).单价 * Child(合同_价格).数量),结果提示:聚合参数中的语法错误,需要具有可能的“child”限定符的单个列参数
|
-- 作者:有点蓝 -- 发布时间:2022/9/1 11:20:00 -- Sum(Child(合同_价格).金额)肯定是可以的,应该是价格表没有这个合同编号的数据 |
-- 作者:cherryjing -- 发布时间:2022/9/1 11:59:00 -- 谢谢蓝老师,之前的问题已解决。 现在的新问题是: 合同表里有项目编号列,另有一项目表,有项目名称、项目编号列等。在合同表以项目编号列汇总时希望显示相应的项目名称,该如何设置Subtotalgroup的caption?
|
-- 作者:有点蓝 -- 发布时间:2022/9/1 13:30:00 -- 这种:http://www.foxtable.com/webhelp/topics/1964.htm |
-- 作者:cherryjing -- 发布时间: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仅能判断该行为分组行,请问如何判断是哪一级分组行呢?
|
-- 作者:有点蓝 -- 发布时间:2022/9/1 14:10:00 -- 再判断第一个列的值 msgbox(r("第一个列")) if r("第一个列") like “专业*” then
|
-- 作者:cherryjing -- 发布时间: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 |