Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口使用复选框筛选数据问题


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

主题:[求助]窗口使用复选框筛选数据问题

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
[求助]窗口使用复选框筛选数据问题  发帖心情 Post By:2017/7/13 18:45:00 [只看该作者]

在窗体按钮中写了这么一段代码

理论上执行后应该是:如果复选框CheckBox2是勾选状态,则筛选出表中 [标记] 一栏不包含“停止补货”字符的行。
但是实际执行中,不光不包含“停止补货”的字符不显示,连 空值 的也不显示了。

If e.Form.Controls("CheckBox2").Checked = True 
    Filter &= " and 标记 Not Like '%停止补货%'" 
End If

麻烦老师帮忙看看是哪个地方出了问题,谢谢!
[此贴子已经被作者于2017/7/13 18:45:38编辑过]

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


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

If e.Form.Controls("CheckBox2").Checked = True 
    Filter &= " and (标记 Not Like '%停止补货%' or 标记 is null)" 
End If

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2017/7/13 19:15:00 [只看该作者]

刚刚已经发现了这个问题了,但是又带来筛选语句的另外一个问题:
两个复选框只能使用其中一个,第二个复选框生效的时候第一个复选框就失效了。。。

我写的代码是这样的

Dim Filter As String
With e.Form.Controls("CheckedComboBox1")
    If .Value IsNot Nothing Then
        Filter &= " and 产品种类_产品大类 in ('" & .Text.Replace(",", "','") & "')"
    End If
End With
With e.Form.Controls("CheckedComboBox2")
    If .Value IsNot Nothing Then
        Filter &= " and 供应商 in ('" & .Text.Replace(",", "','") & "')"
    End If
End With
With e.Form.Controls("CheckedComboBox3")
    If .Value IsNot Nothing Then
        Filter &= " and 标记 in ('" & .Text.Replace(",", "','") & "')"
    End If
End With
With e.Form.Controls("CheckedComboBox4")
    If .Value IsNot Nothing Then
        Filter &= " and 品名 in ('" & .Text.Replace(",", "','") & "')"
    End If
End With
If e.Form.Controls("CheckBox1").Checked = True 
    If Filter >"" Then
        Filter = Filter & " And "    
    End If
    Filter =  Filter & "库存预警_补货数量 > 0 "
End If
If  e.Form.Controls("CheckBox2").Checked = True 
    If Filter >"" Then
        Filter = Filter & " And "    
    End If
    Filter = Filter & "标记 Not Like '%停止补货%' Or 标记 is Null" 
End If
If Filter >"" Then
Tables("查询_采购关联").Filter = Filter
End If

理想的运算结果是
如果CheckBox1和2都勾选,应该是显示   库存预警_补货数量 > 0    同时  标记 Not Like '%停止补货%' Or 标记 is Null 的结果
但是实际上如果勾选了CheckBox2,那CheckBox1的勾选就失效了,显示的结果包含了  存预警_补货数量 > 0、<=0 的情况。。

不知道是代码哪里出了问题,麻烦老师纠正一下。非常感谢!

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2017/7/13 19:19:00 [只看该作者]

问题已解决!

将我刚刚的代码最后一段改为:
If  e.Form.Controls("CheckBox2").Checked = True 
    If Filter >"" Then
        Filter = Filter & " And "    
    End If
    Filter = Filter & "(标记 Not Like '%停止补货%' Or 标记 is Null)" 
End If

就是在条件
标记 Not Like '%停止补货%' Or 标记 is Null
加个括号就可以了。。

但是运算就出现错误了,提示And前缺少操作符
[此贴子已经被作者于2017/7/13 19:22:41编辑过]

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


加好友 发短信
等级:幼狐 帖子:94 积分:862 威望:0 精华:0 注册:2017/7/9 3:59:00
  发帖心情 Post By:2017/7/13 19:26:00 [只看该作者]

把最前面的
Dim Filter As String 
改为
Dim Filter As String = "1=1"
就没问题了。

这个= "1=1"是什么意思呢?

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


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

 如果你写了1=1,就不用写这个判断

 

    If Filter >"" Then

        Filter = Filter & " And "    
    End If
 
 

 回到顶部