以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]行锁定 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54928) |
-- 作者:lesliecheung912 -- 发布时间:2014/8/7 15:05:00 -- [求助]行锁定 在窗口中录入出库明细,录完一条明细后点保存按钮,代码为: with tables("出库表") .Current.Locked = True .Current.Save end with 这样的话当前行就会锁定,但是关闭窗口以后,刚才锁定的行会自动解锁, 窗口的AfterClose事件为: DataTables("出库表").LoadFilter = "_Identify Is NULL" DataTables("出库表").Load DataTables("出库表").AllowEdit = False BeforeClose事件为: Dim hasSave As Boolean = True For Each r As Row In Tables("出库表").Rows If r.DataRow.RowState <> DataRowState.Unchanged Then hasSave = False End If Next If not hasSave Then MessageBox.Show("请保存出库明细!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question) e.cancel =True End If 这些代码我测试过,都不会影响行锁定,另外表的表事件中也无与行锁定相关代码 请问各位大神,还可能什么地方对于行锁定有影响呢?
[此贴子已经被作者于2014-8-7 15:05:27编辑过]
|
-- 作者:Bin -- 发布时间:2014/8/7 15:09:00 -- 例子发出来看看. |
-- 作者:lesliecheung912 -- 发布时间:2014/8/7 15:12:00 -- 外部数据源,不方便发 |
-- 作者:Bin -- 发布时间:2014/8/7 15:13:00 -- 做个内部数据源的例子 |
-- 作者:lesliecheung912 -- 发布时间:2014/8/7 15:15:00 -- 稍等哈 |
-- 作者:lesliecheung912 -- 发布时间:2014/8/7 17:33:00 -- 我查出原因了,就是在执行了DataTables("库存表").Load以后行锁定自动取消的 |
-- 作者:有点甜 -- 发布时间:2014/8/7 17:37:00 -- 以下是引用lesliecheung912在2014-8-7 17:33:00的发言:
我查出原因了,就是在执行了DataTables("库存表").Load以后行锁定自动取消的
锁定不应该自动取消吧?因为锁了以后,数据是保存到数据库连去的,即便重新加载,也是锁定的。
|
-- 作者:lesliecheung912 -- 发布时间:2014/8/8 8:56:00 -- 现在就是因为重新Load以后出的问题,做了内部数据源例子无法再现... 所以不知为何是这样,重新加载跟取消行锁定按说一点关系都没有啊
|
-- 作者:有点甜 -- 发布时间:2014/8/8 9:30:00 -- 以下是引用lesliecheung912在2014-8-8 8:56:00的发言:
现在就是因为重新Load以后出的问题,做了内部数据源例子无法再现... 所以不知为何是这样,重新加载跟取消行锁定按说一点关系都没有啊
你去看看你的数据库,执行了 r.Locked = True 和 r.Save 以后,你看看你的数据库对应的列_Locked是否为True了
如果不是True,你就看一下你是否在BeforeSaveDataRow事件写了取消等代码。 |
-- 作者:lesliecheung912 -- 发布时间:2014/8/8 10:08:00 -- 保存以后,_locked变为True,但如果点了查询或者关闭窗口(查询按钮和窗口的AfterClose事件都有datatables("出库表").load的代码), 在执行完load以后,_locked就变为了False。 全局表事件BeforeSaveDataRow中无代码
|