以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  过滤条件增加代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=128794)

--  作者:weibu
--  发布时间:2018/12/15 9:06:00
--  过滤条件增加代码
Dim dr As DataRow = DataTables("用户信息").find("用户名 = \'" & 用户名 & "\'")  \'找到当前登录者所在的行
Dim filter As String = "1=2"
If dr("职位") = "管理者" Then
    Dim drs = DataTables("部门信息").Select("层级 like \'" & dr("层级") & "%\'")
    For Each cdr As DataRow In drs
        Filter &= " or 当前所在部门 = \'" & cdr("所属部门") & "\'And 是否可用 = 1" 
    Next
    Else If dr("职位") = "职员" Then
    Filter = "当前所在部门 = \'" & dr("所属部门") & "\'And 是否可用 = 1" 
End If
Dim Str1 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter) 
e.Form().Controls("Button26").Text ="当前库存: " & Str1
Dim filter2 As String = “filter And 过保日期 <= #" & Date.Today & "#"      这句代码是否有问题?我想在filter上增加筛选条件;bue错提示AND附件有非布尔型
Dim Str2 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter2) 
e.Form().Controls("Button25").Text ="超保质期: " & Str2
[此贴子已经被作者于2018/12/15 9:23:38编辑过]

--  作者:有点蓝
--  发布时间:2018/12/15 9:26:00
--  
Dim dr As DataRow = DataTables("用户信息").find("用户名 = \'" & 用户名 & "\'")  \'找到当前登录者所在的行
If dr IsNot Nothing Then
    Dim filter As String = "1=2"
    If dr("职位") = "管理者" Then
        Dim drs = DataTables("部门信息").Select("层级 like \'" & dr("层级") & "%\'")
        For Each cdr As DataRow In drs
            Filter &= " or 当前所在部门 = \'" & cdr("所属部门") & "\' And 是否可用 = 1 "
        Next
    Else If dr("职位") = "职员" Then
        Filter = "当前所在部门 = \'" & dr("所属部门") & "\' And 是否可用 = 1 "
    End If
    Dim Str1 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter)
    e.Form.Controls("Button26").Text ="当前库存: " & Str1
    Dim filter2 As String = filter & " And 过保日期 <= #" & Date.Today & "#"      这句代码是否有问题?我想在filter上增加筛选条件
    Dim Str2 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter2)
    e.Form.Controls("Button25").Text ="超保质期: " & Str2
End If

--  作者:weibu
--  发布时间:2018/12/15 9:41:00
--  老师代码还是报错
错误所在事件:
详细错误信息:
\'#\' 附近有语法错误。


--  作者:有点蓝
--  发布时间:2018/12/15 10:23:00
--  
msgbox(filter2) 看看条件

如果是SqlServer数据库,#改为单引号

--  作者:weibu
--  发布时间:2018/12/17 17:10:00
--  部门多层级筛选不执行And部分
老师,如果登陆者是管理者下面管理多个部门,下面代码中的filter2 ,计数没有执行And 过保日期 <= \'" & Date.Today & "\'"  ,如果是管理一个部门,则执行了filter2 
这是为什么?
代码需要如何修改?
Dim dr As DataRow = DataTables("用户信息").find("用户名 = \'" & 用户名 & "\'")  \'找到当前登录者所在的行
e.Form.Controls("DateTimePicker1").Value = Date.Today
e.Form.Controls("DateTimePicker2").Value = Date.Today
If dr IsNot Nothing Then
    Dim filter As String = "1=2"
    If dr("职位") = "管理者" Then
        Dim drs = DataTables("部门信息").Select("层级 like \'" & dr("层级") & "%\'")
        For Each cdr As DataRow In drs
            Filter &= " or 当前所在部门 = \'" & cdr("所属部门") & "\' And 是否可用 = 1 "
                   Next
    Else If dr("职位") = "职员" Then
        Filter = "当前所在部门 = \'" & dr("所属部门") & "\' And 是否可用 = 1 "
       
End If
    Dim Str1 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter)
    e.Form.Controls("Button26").Text ="当前库存: " & Str1

    Dim filter2 As String = filter & " And 过保日期 <= \'" & Date.Today & "\'"  
    Dim Str2 As Integer = DataTables("溯源码").SQLCompute("Count(*)", filter2) ’登陆者下面管理多个部门时,计数的值是仅筛选了filter的部分,并没有执行And 过保日期 <= \'" & Date.Today & "\'"  ,这是为什么?
    e.Form.Controls("Button25").Text ="超保质期: " & Str2
End if

--  作者:有点甜
--  发布时间:2018/12/17 17:21:00
--  

代码改成

 

Dim filter2 As String = "(" & filter & ") And 过保日期 <= \'" & Date.Today & "\'"