以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 自定义用户登录引发的加载问题-已解決 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39191) |
||||
-- 作者:realredred -- 发布时间:2013/8/18 0:23:00 -- 自定义用户登录引发的加载问题-已解決 自定义用户登录 可变性更大 由于用户组別多,相对要加载的表总数量多 想做到的是对应用户來加載合适的表.
现在已经做到如下:
打开项目后--->默认用户登录
禁止加载所有表(除权限表)
並自动显示自定义登录窗--->实际用户登入
按权限表显示对应的表(代码设在登录窗口的"确定"键里.)
问题是,显示出來的表,並未加载
如果在 BeforeLoadOuterTable 里设,以实际现存显示表,进行一次性加载,具体如何呢? 还是仍然设在登入的确定键里呢?
我曾想过用 查表名 以历遍來把现存表重加載一次. 不过好像不成功... 附上开发版例子
[此贴子已经被作者于2013-8-20 1:08:22编辑过]
|
||||
-- 作者:realredred -- 发布时间:2013/8/18 9:46:00 -- 我在自定义登录窗的确定键 加入以下的代码 For Each dtn As DataTable In DataTables Dim dtnam As String dtnam = dtn.name If Tables(dtnam).Visible = True Then DataTables(dtnam).LoadFilter = "[_Identify] > 0 " DataTables(dtnam).Load Messagebox.show(dtn.name & "加载完成") End If Next 结果可以把现存显示的表进行加載,但感觉好像繞了一圈,有沒有更好的方法。呢?
[此贴子已经被作者于2013-8-18 10:05:18编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/8/18 20:14:00 -- 你这样做,差不多了。 在beforeloadoutertable写代码 If e.DataTableName <> "授权表" Then e.SelectString = "select * from {" & e.DataTableName & "} where 1=2" End If 如果要在想一开始就决定是否加载表,也可以,就是用sql代码先读取授权表的内容,然后根据授权表得到哪些表需要加载(得到一个集合)。在beforeloadoutertable比较e.DaTableName是否在集合里,控制加载。 (不过这样也不见得好多少)
|
||||
-- 作者:realredred -- 发布时间:2013/8/20 0:55:00 -- 那麼就好了,最怕就是设得太差,影响內存 |