以文本方式查看主题

-  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=24743)

--  作者:与伊相伴
--  发布时间:2012/10/22 14:38:00
--  如何获取更新数据

当一些表是根据窗口加载时用代码生成外部表或外部查询表,因为某些表是联合查询的数据表,想得到更新的数据,用了重新登录的方式,想通过全部删除用代码加载来的表,使用了如下代码:

For Each dt As DataTable In DataTables
    If dt.Type <> 1 Then
        DataTables.Delete(dt.Name)
    End If
Next

报了如下异常 


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

如何解决好呢?


--  作者:lin_hailun
--  发布时间:2012/10/22 15:17:00
--  
 应该是删除的方式不对。

 要从后往前删除。

 For i As Integer = DataTables.Count - 1 To 0 Step -1
     DataTables.Delete(DataTables(i).Name)
 Next

--  作者:与伊相伴
--  发布时间:2012/10/22 16:20:00
--  

谢谢,但是我试了这种方式,提示有些表不能删的,我自己找到了另一种方法

代码如下,只有用代码的加载的表,才能代码删除,代码是多写了点,但是实现了

Dim lst As new List(of String)
For Each dt As DataTable In DataTables
    If dt.Type >= 3 Then
        lst.Add(dt.Name)
    End If
Next
Dim Arr() As String
Arr = lst.ToArray
For Each ar As String In Arr
    DataTables.Delete(ar)
Next


--  作者:lin_hailun
--  发布时间:2012/10/22 16:50:00
--  
 呵呵,楼主,为什么直接加一个判断呢?

 If DataTables(i).Type >= 3 Then
     DataTables.Delete(DataTables(i).Name)
 End If