以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  占比如何导出  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175787)

--  作者:edisontsui
--  发布时间:2022/3/18 17:52:00
--  占比如何导出
If CurrentTable.name.contains("出入库") Then
    Dim g As New GroupTableBuilder("统计每个物料总金额", DataTables("出入库"))
    g.Caption = "统计每个物料总金额"
    g.Groups.AddDef("物料编号")
    g.Totals.AddDef("金额")
    g.GrandProportion = True
    g.Decimals = 2
    g.Build()
    MainTable = Tables("统计每个物料总金额")
End If

上面这个按钮产生的结果,我想用下面的代码导入到另一个数据表,但是 “占比” 这列数据无法导出,出现提示: 占比 不属于表 \'统计每个物料总金额\'。请问下面的代码要怎样修改?

For Each r As Row In Tables("统计每个物料总金额").rows
    Dim dr2 As DataRow = DataTables("库存分析").Find("物料编号 = \'" & r("物料编号") & "\'")
    If dr2 IsNot Nothing Then
    Else
        Dim dr3 As Row = Tables("库存分析").AddNew()
        dr3("物料编号") = r("物料编号")
        dr3("金额") = r("金额")
        dr3("占比") = r("占比")
        dr3("录入员核对") = True
    End If
Next

--  作者:有点蓝
--  发布时间:2022/3/19 9:01:00
--  
生成统计表后,打开表结构看真正的列名:http://www.foxtable.com/webhelp/topics/0193.htm
[此贴子已经被作者于2022/3/19 9:01:13编辑过]

--  作者:edisontsui
--  发布时间:2022/3/19 19:01:00
--  
    Dim Ttlamt2 As Single = Tables("出入库").Compute("sum(不含税金额)")
    Dim mth2() As String = DataTables("出入库").GetComboListString("出入年月",Tables("出入库").filter).Split("|")
    Dim months2 As Integer = mth2.length
    Dim filter2 As String = Tables("出入库").filter
    If filter2 > "" Then  filter2 = filter2  & " and "
        Dim Products2 As List(Of String) = DataTables("出入库").GetValues("物料编号",filter2 & " 出入原因 =\'" & "出库-客户出货" & "\' and 来源 =\'" & "自做" & "\' ") 
        For Each sss2 As String In Products2
            Dim dr912 As Row = Tables("库存分析").AddNew()
            dr912("物料编号") = sss2
            Dim amt2 As Single = Tables("出入库").Compute("sum(不含税金额)","物料编号 =\'" & sss2 & "\'")
            dr912("金额") = amt2
            dr912("占比") = amt2 / ttlamt2
            Dim lines2 As Integer = Tables("出入库").Compute("count(物料编号)","物料编号 =\'" & sss2 & "\'")
            dr912("行数") = lines2
            dr912("月数") = months2
            dr912("每月行数") = lines2 / months2
        Next

上面这段代码是希望从“出入库”这个数据表统计数据并将结果放入“库存分析”那个数据表。但是在执行时总是出现提示:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.1.30.2
错误所在事件:表,库存分析,DataColChanged
详细错误信息:
调用的目标发生了异常。
列“占比”不属于表 出入库。

“库存分析”那个表是有“占比”这列的,但是我并没有去执行 “库存分析” 的 DataColChanged 事件啊。


--  作者:有点蓝
--  发布时间:2022/3/20 19:59:00
--  
上面代码有给"库存分析"表赋值呀。不管是手工输入,还是使用代码赋值,或者是其它事件影响。只要"库存分析"表的数据发生任何变化都会触发 DataColChanged 事件