Foxtable(狐表)用户栏目专家坐堂 → 集合遍历


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

主题:集合遍历

美女呀,离线,留言给我吧!
xiaohuli
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
集合遍历  发帖心情 Post By:2015/11/3 17:43:00 [只看该作者]

在用openqq实现即时同步数据的时候有个问题,就是当我修改一行记录的时候,然后保存,其他客户端就能看到刚刚修改的那行的记录,但是当我一次性修改好多行数据的时候,等修改完了在点击保存的时候,其他客户端看到的就只有一行的记录修改的,其他行的记录没修改。
老师下面是我的思路,你看看这个思路对不对?
我目前是这样想的,当修改数据的时候行的状态是未锁定的,当我保存后,表中所有行的记录都变成了锁定状态,我想定义一个全局变量集合,然后当我修改多行数据的时候,将这些未锁定的行的_identify记录下来,然后点击保存的时候将这些记录下来的数据传递给客户端,在openqq的客户端接收消息的事件中加载这些行。
我目前就是想怎么把修改的记录给放到集合中?代码写不出来

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/3 17:47:00 [只看该作者]

你应该去beforesavedatarow事件写代码啊,每一行保存都会触发此事件的。

 

在事件里面,给各个客户端发送信息不就行了?


 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/11/4 12:03:00 [只看该作者]

老师,我想新增一条数据后,只有保存后才能进行第二次新增,我在BeforeAddDataRow事件中写了如下代码。但是不起作用,所以一直都可以新增。

For Each dr As Row In Tables("表A").Rows
    If dr.Locked = False  Then
        messagebox.show("请先保存当前行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        e.Cancel = True
        Return
    End If
Next

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/4 12:05:00 [只看该作者]

 简单一点的判断

 

If e.DataTable.HasChanges Then
    msgbox("请先保存")
    e.cancel = True
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/4 12:08:00 [只看该作者]

精确一点的判断

 

For Each dr As DataRow In e.DataTable.DataRows
    If dr.RowState = DataRowState.Added Then
        msgbox("请先保存")
        e.cancel = True
        Exit For
    End If
Next


 回到顶部
美女呀,离线,留言给我吧!
xiaohuli
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:3442 威望:0 精华:0 注册:2014/2/8 11:13:00
  发帖心情 Post By:2015/11/4 15:21:00 [只看该作者]

老师,我现在想实现,当我正在修改了一行数据,如果我没有保存数据,则不能进行其他行数据的修改操作。

我写的代码有误,请老师帮忙看看。我是写在修改按钮上了。

For Each dr As DataRow In e.Table.DataRows
    'If dr.RowState = DataRowState.Added Then
        'msgbox("请先保存")
        'e.cancel = True
        'Exit For
    'End If
If dr.Locked = False  Then
        messagebox.show("请先保存当前行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        e.Cancel = True
        Exit For
    End If
Next


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/4 15:32:00 [只看该作者]

dr.Locked 不能用来判断是否保存。

 

For Each dr As DataRow In e.Table.DataRows
    If dr.RowState <> DataRowState.Unchanged Then
        msgbox("请先保存")
        e.cancel = True
        Exit For
    End If
Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/4 15:33:00 [只看该作者]


 回到顶部