以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 同步加载子表,适不适合加载外部数据表 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=129738) |
-- 作者:jq_shang -- 发布时间:2019/1/4 21:19:00 -- 同步加载子表,适不适合加载外部数据表 e.DataTable.LoadChildren("子表名") 在父表的afterload下用上述命令,加载子表出现问题。 父表名称:员工基础表 子表名称:个人持证情况表、员工职称表 以上全部是外部数据表。 任务:按单位加载员工基础表,同步加载对应的持证情况表和职称表。 问题现象一: 在项目事件beforeloadoutertable中,加入代码,限制基础表加载行: If e.DataTableName = "员工基础表" Then e.SelectString = "Select * Fro m {员工基础表} Where [部门] = \'" & usbm & "\'" End If 注意,这里没有限制持证表和职称表的加载。 在“员工基础表“的afterload表事件中,加入了代码: e.DataTable.LoadChildren("个人持证情况表") e.DataTable.LoadChildren("员工职称表") 运行,后两个表的记录全体加载了,超出了本部门范围。 问题的原因,是不是在项目事件beforeloadoutertable中没有设置限制呢? 加入限制加载的语句后,问题出边了另外一个极端: 问题现象二: 项目事件beforeloadoutertable代码,加入了后两表禁止加载的语句: Dim usbm As String usbm = e.user.group Select Case e.DataTablename Case "个人持证情况表" e.SelectString = "Select * Fro m {个人持证情况表} Where [_Identify] Is Null" Case "员工职称表" e.SelectString = "Select * Fro m {员工职称表} Where [_Identify] Is Null" Case "员工基础表" e.Selectstring = "select * fro m {员工基础表} where [部门] = \'" & usbm & "\'" DataTables("员工基础表").LoadChildren("个人持证情况表") DataTables("员工基础表").LoadChildren("员工职称表") End Select 最后这两句loadchildren语句,这边去掉,表事件afterload中加入,结果也一样——后两个表的记录,一条也没有加载进来。 所以问一下,这个loadchildren命令,对外部数据表有效吗?怎么用? 总的来说不会用,导致一抓就死,一放就乱。不限制就全加载,限制了,就完全不加载。就不听话。 [此贴子已经被作者于2019/1/4 21:29:25编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/1/4 21:38:00 -- 应该这样 beforeloadoutertable事件 Select Case e.DataTablename Case "个人持证情况表","员工职称表","员工基础表" e.SelectString = "Select * From {" & e.DataTablename & "} Where [_Identify] Is Null" End Select afteropenproject事件 DataTables("员工基础表").loadfilter = "[部门] = \'" & usbm & "\'" DataTables("员工基础表").load "员工基础表"的afterload表事件: e.DataTable.LoadChildren("个人持证情况表") e.DataTable.LoadChildren("员工职称表")
|
-- 作者:jq_shang -- 发布时间:2019/1/4 22:39:00 -- HI,版主辛苦了,我试试看。 当前正在看帮助文件,看得眼花缭乱。谢谢版主。
|
-- 作者:jq_shang -- 发布时间:2019/1/4 22:55:00 -- 嗯嗯,完全解决了。 谢谢甜版主。
|