以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  集合遍历  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76703)

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

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

 

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


--  作者:xiaohuli
--  发布时间: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

--  作者:大红袍
--  发布时间:2015/11/4 12:05:00
--  

 简单一点的判断

 

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


--  作者:大红袍
--  发布时间: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
--  发布时间: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
--  发布时间: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


--  作者:大红袍
--  发布时间:2015/11/4 15:33:00
--  

参考

 

http://www.foxtable.com/help/topics/0644.htm