Foxtable(狐表)用户栏目专家坐堂 → 再求大神帮忙看一个循环语句错误,在线求解答


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

主题:再求大神帮忙看一个循环语句错误,在线求解答

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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
再求大神帮忙看一个循环语句错误,在线求解答  发帖心情 Post By:2018/3/1 23:36:00 [只看该作者]

Dim i As Integer = 0

'With Tables("员工表")

With Tables("学员表")

    For Each rrrr As Row In .Rows  '当前加载已筛选过的员工表中,每一行都去核对

        Dim mmmm As String = .current("培训号")

        If xyjh.Contains(mmmm) = True Then '找出员工表中已经加入学员表的学员,下一句remove

            .current.Remove

            i = i + 1

        End If

    Next

End With

Output.show(i)

问题出现在最后这个循环语句中,没有将符合条件的所有行移除,而是跳行移除。每次只移除13579……


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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 0:02:00 [只看该作者]

Dim i As Integer
'For Each r As Row In Tables("员工表").Rows
For Each r As Row In Tables("学员表").Rows
    Dim pxh As String = r("培训号")
    With Tables("学员表")
        Dim rn As Integer
        rn = .Find(pxh, 0,"培训号", True, True, True)
        If rn > - 1 Then '如果找到符合条件的行
            '.Position = r '则选择该行
            r.Remove '在加载的员工表中移除该行,防止再次重复选择
            'r.Checked = False '取消员工表中对该行的选择
            
        End If
    End With
    i = i + 1
Next
Output.show(i)

语句改成上面样子,效果一样,还是跳行移除。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/2 1:06:00 [只看该作者]


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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 1:10:00 [只看该作者]

先谢谢再看!

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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 1:17:00 [只看该作者]

我的本意是,重复的选项提前移除,根本就不写入新表中,结果出现了隔行筛选的问题,怎么都找不到错在哪里了。

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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 1:24:00 [只看该作者]

出现三个问题:

1、我的本意是,重复的选项提前移除,根本就不写入新表中,结果出现了隔行筛选的问题,怎么都找不到错在哪里了。

2、移除命令,如果不加入括号,就变成删除啦!

3、移除的行,用命令不能重新加载,需要重新打开项目才能加载


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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 1:56:00 [只看该作者]

Dim mmmm As String
Dim i As Integer 
问题已找到,先逐个选择,再一起删除就可以了,道理能够自己想明白。

With Tables("员工表")
    For Each rrrr As Row In .Rows  '当前加载已筛选过的员工表中,每一行都去核对
         mmmm = .current("培训号")
        If xyjh.Contains(mmmm) = True Then '找出员工表中已经加入学员表的学员,下一句remove掉
            .current.Checked = True
            i = i + 1
        End If
    Next
End With
For Each gtr As Row In Tables("员工表").GetCheckedRows
gtr.Remove()
Next

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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 2:17:00 [只看该作者]

后三句应该改成:
Dim gtr As List(of Row) = Tables("员工表").GetCheckedRows
For Each rrr As Row In gtr
rrr.Remove()
Next

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


加好友 发短信
等级:童狐 帖子:217 积分:1646 威望:0 精华:0 注册:2018/1/21 10:25:00
  发帖心情 Post By:2018/3/2 2:35:00 [只看该作者]

不行呀,测试被屏蔽的还是第一人。难道要再次加入数组、集合后,再逐一屏蔽吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/2 8:57:00 [只看该作者]

以下是引用jq_shang在2018/3/2 2:35:00的发言:
不行呀,测试被屏蔽的还是第一人。难道要再次加入数组、集合后,再逐一屏蔽吗?

 

这个意思?

 

    For Each rrrr As Row In .Rows  '当前加载已筛选过的员工表中,每一行都去核对
         mmmm = rrrr("培训号")

 

没看懂你要做什么,实现什么。请上传具体实例,说明你要做的东西。

[此贴子已经被作者于2018/3/2 8:59:08编辑过]

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