Foxtable(狐表)用户栏目专家坐堂 → 为什么报“索引超出了数组界限”


  共有4810人关注过本帖树形打印复制链接

主题:为什么报“索引超出了数组界限”

帅哥哟,离线,有人找我吗?
zengpeng26
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:147 威望:0 精华:0 注册:2014/3/20 11:59:00
为什么报“索引超出了数组界限”  发帖心情 Post By:2014/3/26 11:02:00 [只看该作者]

请给位大侠看看这写代码有什么问题。
总是报“索引超出了数组界限”。

还有怎么样把这个赋值以及检索分来运算?

Dim dt As DataTable = DataTables("管理内客户")
Dim dr,dr1 As DataRow
For i As Integer = 0 To dt.DataRows.Count -1
    dr = dt.DataRows(i)
    dr1 = dt.Find("[车辆底盘号]  = '" & dr("车辆底盘号") & "'","里程 Desc" ,1) 
    If dr1 IsNot Nothing Then
        dr1.Delete
    End If
Next
[此贴子已经被作者于2014-3-26 11:07:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/26 11:05:00 [只看该作者]

dr1 = dt.Find("[车辆底盘号]  = '" & dr("车辆底盘号") & "'","里程 Desc" ,0) 

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/3/26 11:07:00 [只看该作者]



不明白你这样操作的目的是什么。
[此贴子已经被作者于2014-3-26 11:07:44编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/26 11:08:00 [只看该作者]

这样改一下:

 

Dim dt As DataTable = DataTables("管理内客户")

Dim dr,dr1 As DataRow
For i As Integer = dt.DataRows.Count -1 To 0 Step -1
    dr = dt.DataRows(i)
    dr1 = dt.Find("[车辆底盘号]  = '" & dr("车辆底盘号") & "'","里程 Desc" ,0)  '检索出最近一次的维修结算时间
    If dr1 IsNot Nothing Then
        dr1.Delete
    End If
Next

 回到顶部
帅哥,在线噢!
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/26 11:08:00 [只看该作者]

说实话,我也觉得代码逻辑很奇怪。

 回到顶部
帅哥哟,离线,有人找我吗?
zengpeng26
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:147 威望:0 精华:0 注册:2014/3/20 11:59:00
  发帖心情 Post By:2014/3/26 11:13:00 [只看该作者]

感谢狐爸,
代码就是想删除重复值,,可是不知道怎么写,只好用自己知道的find来做了。
可是不知道怎么样把赋值和检索分来。。
[此贴子已经被作者于2014-3-26 11:14:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
scirocco
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:3 积分:81 威望:0 精华:0 注册:2014/3/24 8:51:00
  发帖心情 Post By:2014/3/26 11:13:00 [只看该作者]

在循环中删除了某几行,会导致实际行数少于循环次数,到最后i索引超出了表的最大行数,从而提示报错。

循环内判断可以这样写:

If dr1 IsNot Nothing Then

    dr1.Delete
    i = i - 1
End If

 回到顶部
帅哥哟,离线,有人找我吗?
zengpeng26
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:147 威望:0 精华:0 注册:2014/3/20 11:59:00
  发帖心情 Post By:2014/3/26 11:15:00 [只看该作者]

你找到点了,谢谢你。。

 回到顶部
帅哥,在线噢!
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/26 11:35:00 [只看该作者]

删除重复值,有简单的办法,例如删除第一列重复值:
 
Tables("表A").RepeatFilter("第一列", 2)
DataTables("表A").DeleteFor(Tables("表A").Filter)
Tables("表A").Filter = ""
 
参考:
http://www.foxtable.com/help/topics/2712.htm


 


 回到顶部
帅哥哟,离线,有人找我吗?
zengpeng26
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:147 威望:0 精华:0 注册:2014/3/20 11:59:00
  发帖心情 Post By:2014/3/26 11:37:00 [只看该作者]

那只能删除一列的重复值,可是我想删除几行的重复值,咋怎?

 回到顶部
总数 12 1 2 下一页