以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 为什么报“索引超出了数组界限” (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=48259) |
-- 作者:zengpeng26 -- 发布时间: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 -- 发布时间:2014/3/26 11:05:00 -- dr1 = dt.Find("[车辆底盘号] = \'" & dr("车辆底盘号") & "\'","里程 Desc" ,0) |
-- 作者:jspta -- 发布时间:2014/3/26 11:07:00 -- 不明白你这样操作的目的是什么。
[此贴子已经被作者于2014-3-26 11:07:44编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间: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
|
-- 作者:狐狸爸爸 -- 发布时间:2014/3/26 11:08:00 -- 说实话,我也觉得代码逻辑很奇怪。 |
-- 作者:zengpeng26 -- 发布时间:2014/3/26 11:13:00 -- 感谢狐爸, 代码就是想删除重复值,,可是不知道怎么写,只好用自己知道的find来做了。 可是不知道怎么样把赋值和检索分来。。
[此贴子已经被作者于2014-3-26 11:14:29编辑过]
|
-- 作者:scirocco -- 发布时间:2014/3/26 11:13:00 -- 在循环中删除了某几行,会导致实际行数少于循环次数,到最后i索引超出了表的最大行数,从而提示报错。 循环内判断可以这样写: If dr1 IsNot Nothing Then dr1.Delete
i = i - 1
End If
|
-- 作者:zengpeng26 -- 发布时间:2014/3/26 11:15:00 -- 你找到点了,谢谢你。。 |
-- 作者:狐狸爸爸 -- 发布时间:2014/3/26 11:35:00 -- 删除重复值,有简单的办法,例如删除第一列重复值:
|
-- 作者:zengpeng26 -- 发布时间:2014/3/26 11:37:00 -- 那只能删除一列的重复值,可是我想删除几行的重复值,咋怎? |