以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求教网络版的问题:A用户删除数据后B用户可以继续操作 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40872) |
-- 作者:atmetmicoo -- 发布时间:2013/10/4 9:23:00 -- 求教网络版的问题:A用户删除数据后B用户可以继续操作 例如B用户加载了"表A"的一条数据,而A用户在B用户加载之后删除了该条数据 目前B用户的Datatable中还存在这条数据,B用户可以通过代码 tables("表A").Current()修改数据,经过认真测试,执行代码tables("表A").Current.save()保存该表时,如果数据库中没有该条数据,则Table中会自动删除该数据,但是没有提示,我的解决方式是BeforeSaveDataRow事件中加入下面代码: If e.DataRow.RowState = DataRowState.Added OrElse e.DataRow.RowState = DataRowState.Detached Then Else Dim cmd As New SQLCommand cmd.C cmd.CommandText = "Select count(*) from {STAllocate} where _identify = " & e.DataRow("_identify") Dim s As Integer = cmd.ExecuteScalar If s <1 Then e.Cancel = True MessageBox.Show("该数据已被删除,保存无效") End If End If 以上方法比较麻烦,望各位高手赐教。
[此贴子已经被作者于2013-10-4 10:18:09编辑过]
|
-- 作者:程兴刚 -- 发布时间:2013/10/4 9:30:00 -- 只加载自己加载的数据,别人看不到您的数据,也就不会出现多用户同时加载一条记录! |
-- 作者:有点甜 -- 发布时间:2013/10/4 9:34:00 -- 只能是在保存之前检查一下数据库是否还存有该条记录,如果不存在,就不允许改行保存。
只能是这样了,通过sql语句查找比较主键_Identify |
-- 作者:lsy -- 发布时间:2013/10/4 9:34:00 -- 凡是可以新增、修改的表,都应该有日期列、操作员列,会省去很多麻烦,带来很多便利。 |
-- 作者:atmetmicoo -- 发布时间:2013/10/4 9:44:00 -- 以下是引用程兴刚在2013-10-4 9:30:00的发言: 只加载自己加载的数据,别人看不到您的数据,也就不会出现多用户同时加载一条记录! 程版,我用的是SQL数据库,2个用户同时加载同一条数据到各自的DataTable中是很有可能的 |
-- 作者:atmetmicoo -- 发布时间:2013/10/4 9:49:00 -- 以下是引用有点甜在2013-10-4 9:34:00的发言: 只能是在保存之前检查一下数据库是否还存有该条记录,如果不存在,就不允许改行保存。
只能是这样了,通过sql语句查找比较主键_Identify 谢谢【有点甜】的支招,这个方法不错,不过会要增加很多代码啊 |
-- 作者:有点甜 -- 发布时间:2013/10/4 10:08:00 -- 代码不多,就一个查询而已,写在表的(全局表)的beforesavedatarow事件。 参考 http://www.foxtable.com/help/topics/0696.htm http://www.foxtable.com/help/topics/0696.htm [此贴子已经被作者于2013-10-4 10:10:26编辑过]
|
-- 作者:atmetmicoo -- 发布时间:2013/10/4 10:22:00 -- 以下是引用有点甜在2013-10-4 10:08:00的发言: 代码不多,就一个查询而已,写在表的(全局表)的beforesavedatarow事件。 参考 http://www.foxtable.com/help/topics/0696.htm http://www.foxtable.com/help/topics/0696.htm [此贴子已经被作者于2013-10-4 10:10:26编辑过]
继续感谢,因为我的表比较多,所以需要的设置改类代码的地方会比较多。 |
-- 作者:有点甜 -- 发布时间:2013/10/4 10:24:00 -- 代码写在全局表事件里,只需要写一次 |
-- 作者:atmetmicoo -- 发布时间:2013/10/4 10:47:00 -- 以下是引用有点甜在2013-10-4 10:24:00的发言: 代码写在全局表事件里,只需要写一次 请指教,因为狐表中的Table名称不能跟数据库中的表名一一对一,例如,A/B/C三个表有可能同时引用数据库中的表名"TEST",能通过语句自动找到对应的数据库的表名吗? |