以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  程序正常执行,但显示代码执行出错(集合已修改,可能无法执行枚举操作)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=184729)

--  作者:onlinech
--  发布时间:2022/12/27 6:16:00
--  程序正常执行,但显示代码执行出错(集合已修改,可能无法执行枚举操作)
程序可以正常执行,但是在命令窗口下显示代码执行出错,集合已修改,可能无法执行枚举操作
代码如下:
Dim g As New CrossTableBuilder("统计表1", DataTables("d"), "[更新时间] >= \'12-31-2022\'")
g.HGroups.AddDef("更新时间", DateGroupEnum.Hour, "时")
g.VGroups.AddDef("更新时间", DateGroupEnum.Year)
g.VGroups.AddDef("更新时间")
g.VGroups.AddDef("更新时间", DateGroupEnum.Day)
g.Totals.AddDef("净重", "净重")
g.Filter = "[更新时间] >= \'12-31-2022\'"
g.FromServer = True
g.Build()
MainTable = Tables("统计表1")

Dim sr, s As String
Dim dt As Date
For Each dc As DataCol In DataTables("统计表1").DataCols \'遍历所有列
    If dc.Caption <> "时" Then
        sr = dc.Caption
        s = sr.Replace("_", "/") \'将123替换为789
        If IsDate(s) Then
            dt = CDate(s)
            If dt = Date.Today.AddDays( - 3) Then
                DataTables("统计表1").DataCols.Add("3日前", GetType(Double), dc.name) \'增加名为“吨”的列  
                Output.Show("正确,3日前  " & dc.Name & "    ----    " & dc.Caption & " ... " & dt)
            End If 
        End If
    End If 
Next

应该是上面标颜色的代码有问题


图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20230103060340.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2022/12/27 9:07:00
--  
For Each循环列的时候又有代码增加了列,也就是被循环的集合发生了变化就会有这个提示。这种情况改为【For i As Integer = 1】这种循环即可

Dim sr, s As String
Dim dt As Date
For i as integer = 0 to DataTables("统计表1").DataCols.count - 1 \'遍历所有列
dim dc as datacol = DataTables("统计表1").DataCols(i)
    If dc.Caption <> "时" Then