以文本方式查看主题

-  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
--  筛选出现错误,重新加载后又可以
打开项目时,在第一个打开的窗口可以正常筛选,切换到第二个打开的窗口时就会出现如图类型的错误,但在加载树重新加载后又可以正常筛选,切换到第三次打开的窗口时又会出现类似的问题,反复检查了代码,一直没找出问题,请问老师,怎么才能找出问题?

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180304173629.png
图片点击可在新窗口打开查看


--  作者: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
--  

分别弹出:

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:333.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间: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征地记录】的列名到底是【乡】还是【乡镇】?要规范,统一啊,不然你合成的条件肯定是错误的。