以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]表的批量卸载代码求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=70211)

--  作者:huangfanzi
--  发布时间:2015/6/17 12:30:00
--  [求助]表的批量卸载代码求助
项目中有个切换用户的确认按钮,其中有一段代码运行出错,请老师帮我看看。
For Each dt As DataTable In DataTables
        Select Case dt.Name
            Case "Main" ,"Help" \'不卸载此二表
            Case Else \'其他所有表都卸载
               DataTables.Unload(dt.name)
        End Select
Next

返回的信息是:

.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.11.11.1
错误所在事件:窗口,用户登录,Button_确认,Click
详细错误信息:
集合已修改;可能无法执行枚举操作。

--  作者:Bin
--  发布时间:2015/6/17 14:06:00
--  
呵呵,不能这么做

dim dts as new List(of string)
For Each dt As DataTable In DataTables
        Select Case dt.Name
            Case "Main" ,"Help" \'不卸载此二表
            Case Else \'其他所有表都卸载
               dts.add(dt.name)
        End Select
Next
for each s as string in dts
   DataTables.Unload(s)
next



--  作者:huangfanzi
--  发布时间:2015/6/17 14:09:00
--  
谢谢BIN老师,您用的是向一个集合添加表名的办法,刚才我自己想出了个办法,请大家参考一下,见笑。
Dim dtname As String
    For Each dt As DataTable In DataTables
        If dt.Name = "Main" OrElse dt.Name = "Help"  Then
            dtname = dtname
        Else dtname = dtname & "|" &   dt.name
        End If
    Next
    If dtname IsNot Nothing Then
        DataTables.Unload(dtname.trim("|") )
    End If


--  作者:Bin
--  发布时间:2015/6/17 14:11:00
--  
你这个更好,少了一次遍历