以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 筛选出现错误,重新加载后又可以 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=115295) |
-- 作者:aza520 -- 发布时间:2018/3/4 17:42:00 -- 筛选出现错误,重新加载后又可以 打开项目时,在第一个打开的窗口可以正常筛选,切换到第二个打开的窗口时就会出现如图类型的错误,但在加载树重新加载后又可以正常筛选,切换到第三次打开的窗口时又会出现类似的问题,反复检查了代码,一直没找出问题,请问老师,怎么才能找出问题? |
-- 作者:aza520 -- 发布时间:2018/3/4 17:53:00 -- 而且用“开发者”登录时,筛选就不存在上述问题 |
-- 作者:有点甜 -- 发布时间:2018/3/4 18:12:00 -- 提示列名无效,说明你加载条件合成不正确,比如列名写错了。
检查你表格 beforeLoad 等等事件代码,看看哪里有问题。
|
-- 作者:aza520 -- 发布时间:2018/3/4 20:26:00 -- 在表的BeforeLoad事件有如下代码,刚好用户属于以下三个用户组时出现问题,开发者就不会。反复检查了,列名没有错,就是不知问题在哪? If User.Group = "乡镇" Dim fl As String = "[乡] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If If User.Group = "县办" Dim fl As String = "[县] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If If User.Group = "建设办" Dim fl As String = "[项目名称] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If |
-- 作者:aza520 -- 发布时间:2018/3/4 20:26:00 -- 在表的BeforeLoad事件有如下代码,刚好用户属于以下三个用户组时出现问题,开发者就不会。反复检查了,列名没有错,就是不知问题在哪? If User.Group = "乡镇" Dim fl As String = "[乡] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If If User.Group = "县办" Dim fl As String = "[县] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If If User.Group = "建设办" Dim fl As String = "[项目名称] = \'" & User.Name & "\'" If e.DataTable.LoadFilter = "" Then e.DataTable.LoadFilter = fl ElseIf e.DataTable.LoadFilter.IndexOf(fl) < 0 Then e.DataTable.LoadFilter = e.DataTable.Loadfilter & " And " & fl End If End If |
-- 作者:有点甜 -- 发布时间:2018/3/4 20:32:00 -- 在代码的最后,加入这个代码,看弹出什么
msgbox( e.DataTable.LoadFilter )
msgbox( e.DataTable.DataCols.Contains("乡") ) |
-- 作者:aza520 -- 发布时间:2018/3/4 20:46:00 -- 分别弹出: |
-- 作者:有点甜 -- 发布时间:2018/3/4 21:05:00 -- loadFilter那里,你把【乡镇】改成【乡】行不行?或者倒过来【乡】改成【乡镇】 |
-- 作者:aza520 -- 发布时间:2018/3/4 21:06:00 -- 我还在项目的LoadUserSetting事件设置了如下代码: If User.Name = "开发者" Or User.Name = "管理员" Then DataTables("S征地记录").LoadFilter = "" Else DataTables("S征地记录").LoadFilter = "乡 = \'" & User.Name & "\' or 县 = \'" & User.Name & "\' or 项目名称 = \'" & User.Name & "\'" End If
|
-- 作者:有点甜 -- 发布时间:2018/3/4 21:09:00 -- 你表格【S征地记录】的列名到底是【乡】还是【乡镇】?要规范,统一啊,不然你合成的条件肯定是错误的。 |