以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  集合已修改,可能无法执行枚举操作  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93921)

--  作者:fubblyc
--  发布时间:2016/12/10 14:43:00
--  集合已修改,可能无法执行枚举操作

提示错误:集合已修改,可能无法执行枚举操作。

我看了之前同样问题的帖子,还是没有解决。。。不知道哪错了。。。

 

Dim r As Row
Dim r1 As Row

For i As Integer = 0 To  200
    r =  Tables(e.Form.Name & "_table1").Rows(i,True)
        r("折扣_本期") = r("销售金额_本期") / r("吊牌金额_本期")

        For i1 As Integer = 0 To  200
            r1 =  Tables(e.Form.Name & "_table1").Rows(i1,True)
            If r1("年份") = r("年份")+1  And r1("周次") = r("周次") And r1("门店") = r("门店")   Then
                r1("销售金额_去年同期") = r("销售金额_本期")
                r1("折扣_去年同期") = r("折扣_本期")
                r1("小票数_去年同期") = r("小票数_本期")
                r1("销售数量_去年同期") = r("销售数量_本期")
            End If


            If r1("年份") = r("年份")  And r1("周次") = r("周次")+1 And r1("门店") = r("门店")   Then
                r1("销售金额_今年上期") = r("销售金额_本期")
                r1("VIP销售金额_今年上期") = r("VIP销售金额_本期")
            End If
        Next
\'
        r("销售金额_同比") = (r("销售金额_本期") - r("销售金额_去年同期"))/r("销售金额_去年同期")
        r("销售金额_环比") = (r("销售金额_本期") - r("销售金额_今年上期"))/r("销售金额_今年上期")
        r("连带率_本期") = r("销售数量_本期") / r("小票数_本期")
        r("连带率_去年同期") = r("销售数量_去年同期") / r("小票数_去年同期")
        r("物单价_本期") = r("销售金额_本期") / r("销售数量_本期")
        r("物单价_去年同期") = r("销售金额_去年同期") / r("销售数量_去年同期")
        r("VIP销售金额_环比") = (r("VIP销售金额_本期") - r("VIP销售金额_今年上期"))/r("VIP销售金额_今年上期")
        r("VIP销售金额_贡献率") = r("VIP销售金额_本期") / r("销售金额_本期")
        r("销售金额_与目标差额") = r("销售金额_本期") - r("销售金额_周目标")
        r("销售金额_周达成率") = r("销售金额_本期") / r("销售金额_周目标")
    Next


--  作者:fubblyc
--  发布时间:2016/12/10 14:57:00
--  

貌似问题不在这里。


--  作者:有点蓝
--  发布时间:2016/12/10 15:02:00
--  
这个事件还有没有其它代码?

没看懂你的逻辑,这是要做什么?

--  作者:fubblyc
--  发布时间:2016/12/10 15:18:00
--  

 If DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_去年同期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_今年上期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_同比") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_环比") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("折扣_本期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("折扣_去年同期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("小票数_去年同期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("连带率_本期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("连带率_去年同期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("物单价_本期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("物单价_去年同期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("VIP销售金额_今年上期") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("VIP销售金额_环比") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("VIP销售金额_贡献率") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_与目标差额") = False Or _
       DataTables(e.Form.Name & "_table1").DataCols.Contains("销售金额_周达成率") = False  Then

            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_今年上期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_同比", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_环比", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("折扣_本期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("折扣_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("小票数_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售数量_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("连带率_本期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("连带率_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("物单价_本期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("物单价_去年同期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("VIP销售金额_今年上期", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("VIP销售金额_环比", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("VIP销售金额_贡献率", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_与目标差额", Gettype(Double))
            DataTables(e.Form.Name & "_table1").DataCols.Add("销售金额_周达成率", Gettype(Double))
    End If

 

问题在之前的增加列的代码,上面的已经可以。

但是感觉还是繁琐,

统计表后增加列,有没有简便的办法。

[此贴子已经被作者于2016/12/10 15:17:54编辑过]

--  作者:有点蓝
--  发布时间:2016/12/10 15:31:00
--  
没有其它简便,相反,可能还要更复杂,上面的代码是有问题的,只能逐个列的判断。如

Dim dcols = DataTables("表A").DataCols
If dcols.Contains("销售金额_去年同期") = False Then dcols.Add("销售金额_去年同期", Gettype(Double))
If dcols.Contains("销售金额_今年上期") = False Then dcols.Add("销售金额_今年上期", Gettype(Double))
......

--  作者:有点蓝
--  发布时间:2016/12/10 15:32:00
--  
如果是统计表,就没有必要判断了,在生成统计表后直接添加列即可
--  作者:fubblyc
--  发布时间:2016/12/10 15:48:00
--  
ok,谢谢!!
[此贴子已经被作者于2016/12/10 15:48:06编辑过]

--  作者:fjlclxj
--  发布时间:2016/12/10 22:50:00
--  
Dim dcols = DataTables("表A").DataCols
dim Dim cols() As String = {"col1","col2","cols","col4"}
for each c as string in cols
    If dcols.Contains(c) = False Then dcols.Add(c, Gettype(Double))
next
[此贴子已经被作者于2016/12/10 22:50:55编辑过]

--  作者:fubblyc
--  发布时间:2016/12/15 16:03:00
--  

哇!谢谢!!