以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于HasChanges及DataRowState修改状态的几点疑问  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=40672)

--  作者:jnletao
--  发布时间:2013/9/26 13:17:00
--  [求助]关于HasChanges及DataRowState修改状态的几点疑问
我用的外部数据库MSSQL2000,新手,对foxtable及数据库有些概念不太清楚,请大能解惑!
以下问题也可能比较零乱,不过都是在实际操作时想到的,请大能海涵!
=====================================================================================
1,HasChanges的作用范围
帮助说明:【逻辑型,判断DataTable的数据是否已经被修改。】
疑问1-1。请问这个修改状态是相对项目而言,还是相对外部数据库?
意思是假设 对于表A的一条记录,如果我本地只是查看,而另一用户在做修改操作,那么我本地查看时状态HasChanges是True还是false

解答请填这里:本地

-----------------------------------------------------------------
疑问1-2。HasChanges是针对当前行状态,还是所有行状态?
意思是假设 对于表A,第一条记录作了修改没保存,而我当前查看的是第二条记录,那么我在关闭窗体时做状态检测,HasChanges是True还是false

解答请填这里:所有行

-----------------------------------------------------------------
2,RowState的作用范围
帮助说明:【返回行的状态。行状态是一个DataRowState型枚举,包括以下值:Added Modified Unchanged Detached】
疑问2-1。请问这个行状态是相对tables而言,还是相对datatables?

解答请填这里:RowState是DataRow的属性,Table只是显示,所有数据都在DataTable

-----------------------------------------------------------------
疑问2-2. 假设 在窗体里对某条记录要做修改,关闭时要检测此条记录是否被改动了,
是用RowState还是HasChanges ?
RowState与HasChanges有什么区别?

解答请填这里:RowState

-----------------------------------------------------------------
疑问2-3.Reject与RejectChanges()的区别与作用范围
接上题,如果关闭时让用户选择是保存记录还是撤销记录,该用Reject还是RejectChanges()?
Reject与RejectChanges()的区别与作用范围是什么?

解答请填这里:你要撤销行的修改,就执行这一行的Reject,你要撤销某个表的全部修改,就执行这个表的Rejectchanges

-----------------------------------------------------------------
疑问2-4.它们撤销的本地修改记录,还是数据库记录?
意思是 对于同一条记录,我本地在改,另一用户也在修改,修改的可能是同一字段,也可能是不同字段,
---我撤销的是我做的修改,还是所有用户做的修改?
---撤销只是当前记录,还有所有已修改未保存的记录?

解答请填这里:撤销的当然是本地

-----------------------------------------------------------------

[此贴子已经被作者于2013-9-30 17:45:40编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/9/26 14:46:00
--  

1、本地
2、所有行
3、RowState是DataRow的属性,Table只是显示,所有数据都在DataTable
4、RowState
5、你要撤销行的修改,就执行这一行的Reject,你要撤销某个表的全部修改,就执行这个表的Rejectchanges
6、撤销的当然是本地

 

建议你实际测试一下,加深印象。

 

[此贴子已经被作者于2013-9-26 14:46:42编辑过]

--  作者:jnletao
--  发布时间:2013/9/26 14:47:00
--  
图片点击可在新窗口打开查看
--  作者:jspta
--  发布时间:2013/9/26 14:51:00
--  

简单说下,这些是针对项目加载的表

haschange和Rejectchange针对表,

rowsstatus和reject是针对行的,

 

多个用户操作,同时修改,这种判断是无效的,因为是针对加载后的。

 


--  作者:狐狸爸爸
--  发布时间:2013/9/26 14:53:00
--  
是的
--  作者:jnletao
--  发布时间:2013/9/26 14:56:00
--  
以下是引用jspta在2013-9-26 14:51:00的发言:

简单说下,这些是针对项目加载的表

haschange和Rejectchange针对表,

rowsstatus和reject是针对行的,

 

多个用户操作,同时修改,这种判断是无效的,因为是针对加载后的。

 

那在网络多用户中如何 有效判断?


--  作者:狐狸爸爸
--  发布时间:2013/9/26 15:02:00
--  
不能判断。
--  作者:狐狸爸爸
--  发布时间:2013/9/26 15:03:00
--  

不过可以看看:

 

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

 


--  作者:hanxuntx
--  发布时间:2013/9/26 15:54:00
--  
这个是新增的属性么?
--  作者:Bin
--  发布时间:2013/9/26 16:06:00
--  
一直都有的呢.