以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于 .RejectChanges()的疑惑  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=61950)

--  作者:huangfanzi
--  发布时间:2014/12/22 22:39:00
--  [求助]关于 .RejectChanges()的疑惑
在局域网下使用,服务器的数据库文件中有表A与表C
表A上一些操作会更自动改表B的数据
表A的窗口上有个退出按钮,退出前会提示是否保存表A的操作,如果选择否后,会执行以下代码:
DataTables("表A").RejectChanges()
DataTables("表C").RejectChanges()

现在的问题来了,有另一个用户在操作表B,这张表上的操作同样也会更改部分表C数据,当表A用户选择不保存退出时,表B用户对表C的修改会不会保留,还是也一样被取消操作了。

现在没局域网条件测试,请老师解答一下,这涉及到我现在一些代码的写法,谢谢!

--  作者:有点甜
--  发布时间:2014/12/22 22:46:00
--  

 每个用户都有一份数据的拷贝,修改数据的时候,都是修改自己电脑的数据,最后保存的时候,才会把数据写回数据库的。

 

 互不影响,但是如果修改了同一行,就以最后保存的为准。


--  作者:huangfanzi
--  发布时间:2014/12/22 22:55:00
--  
明白了,根据这个问题,又有二个延伸问题:
1,表A上进行一些操作后更改了表C的数据后并点了保存表A与表C,表C在之前已经被一用户打开使用,但是这时应该看不到表C的变化(被表A更改后的结果),表C用户如何在不退出系统或退出当前表的前提下看到表C被表A的修改结果,其实也就是刷新一下,这个刷新的代码如何写?
2、表A的操作删除了表C的某一行并保存,表C之前已经用户打开,然后在表A用户点保存之后也点了保存,这时,在数据库里,这一行被删除的数据是不是又被恢复了?

--  作者:有点甜
--  发布时间:2014/12/23
--  

1、刷新代码:Tables("表a").Load

 

2、如果删除了,这一行就删除了,保存的时候不会恢复。


--  作者:黄训良
--  发布时间:2014/12/23 0:18:00
--  
这种情况最好使用事务处理。
--  作者:huangfanzi
--  发布时间:2014/12/23 8:50:00
--  
根据老师的指导我说下以下的操作思路,老师看下是否正确:
A用户在A表上的某个操作锁定了C表上某一行,以便阻止用户再编辑此行,例如A表是原料入库表,C表是原料入库通知表,当某原料入库后,不得再修改此原料的通知记录,在A表锁定C表前,C表用户已经打开了C表,此时,相关的记录是可以编辑的,现在有一个问题:
C用户在修改其实已经被锁定的哪条记录时,在修改前如何有效率的判断此条还能不能被编辑,总不能在此行被选择中就执行datatables("表C").load  ??
另一个极端情况,在A用户锁定C表相关记录前,C用户正在编辑这一即将被A用户锁定的记录,对于这种情况,难道要在DataColChanging里加入laod代码?这好像更没效率
或者以上情况是不是根本不会出现,是不是当A用户把C表相关记录锁定并保存后,C表上相关记录所做的更改就是点了保存也不会存入数据库,因此相关记录已经锁定了。

昨晚突然想到了在局域网中使用的一些问题,之前一直是单机状态下开发,这些问题没想到过,现在思路有些凌乱,请见谅!

--  作者:有点甜
--  发布时间:2014/12/23 9:03:00
--  

 回复6楼,独占编辑参考

 

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