以文本方式查看主题

-  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",能通过语句自动找到对应的数据库的表名吗?