Foxtable(狐表)用户栏目专家坐堂 → 过滤条件增加代码


  共有2721人关注过本帖树形打印复制链接

主题:过滤条件增加代码

帅哥哟,离线,有人找我吗?
weibu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
过滤条件增加代码  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
老师代码还是报错  发帖心情 Post By:2018/12/15 9:41:00 [只看该作者]

错误所在事件:
详细错误信息:
'#' 附近有语法错误。


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/15 10:23:00 [只看该作者]

msgbox(filter2) 看看条件

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

 回到顶部
帅哥哟,离线,有人找我吗?
weibu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:659 积分:5357 威望:0 精华:0 注册:2018/5/19 22:27:00
部门多层级筛选不执行And部分  发帖心情 Post By:2018/12/17 17:10:00 [只看该作者]

老师,如果登陆者是管理者下面管理多个部门,下面代码中的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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/17 17:21:00 [只看该作者]

代码改成

 

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


 回到顶部