以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于独占编辑与数据加载的疑问  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69740)

--  作者:huangfanzi
--  发布时间:2015/6/10 10:02:00
--  [求助]关于独占编辑与数据加载的疑问
SQL数据库,有张员工表,假定数据量会是很大的,因此在外部数据表设置中设了“[_Identify] Is Null,也就是只加载结构,不加载数据,为了进行独占式编辑,根据帮助文件,在这个表加载按钮中有以下代码:
If DataTables.Contains("员工") = False Then \'如果表没有加载
    DataTables.Load("员工") \'加载表
    \'解锁非正常退出时被锁定的记录
    DataTables("员工").ReplaceFor("编辑者",Nothing,"编辑者 = \'" & _UserName & "\'")
    DataTables("员工").Save()
    Tables("员工").Cols.Remove("编辑者","Log") \'移除编辑者列与Log列,避免用户直接修改此列
End If
MainTable = Tables("员工")
上面的代码执行后得到一张空表,同时设置了加载树进行后续操作。
现在有问题来了,由于是张空表,代码中红字部分是不是没有意义了,我应该如何操作才能实现解锁非正常退出时被锁定的记录这个功能呢?

--  作者:Bin
--  发布时间:2015/6/10 10:06:00
--  
难度你一直都是空表吗? 没有加载到对应的数据? 有的话加载条件是什么? 可以设置对应的加载条件.
--  作者:Bin
--  发布时间:2015/6/10 10:06:00
--  
如果一直是空表.那你也没必要替换啊.因为你根本没操作任何数据.


如果不考虑效率问题,直接把ReplaceFor 改为SQLReplaceFor 就OK.

--  作者:huangfanzi
--  发布时间:2015/6/10 10:10:00
--  
就这张员工表而言,我会设置按部门与姓名的加载树,如:Tables("员工").OpenLoadTree("部门|姓名")


--  作者:Bin
--  发布时间:2015/6/10 10:11:00
--  
那就有加载条件的啊.你再Load了.也应该按照加载条件加载到对应的数据.怎么可能会空呢.

或者你用3楼直接就用 SQLReplaceFor

--  作者:huangfanzi
--  发布时间:2015/6/10 10:21:00
--  
表在加载后就是一张空表,然后我通过设置的加载树来加载数据,根据BIN老师的提示,用SQLReplaceFor进行后台替换确实是好方法,但我又想到一个揪心的问题,如果这个项目中有N张表,我是不是要执行N次的SQLReplaceFor
--  作者:Bin
--  发布时间:2015/6/10 10:25:00
--  
是的