以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口使用复选框筛选数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103662) |
|
-- 作者:magus1123 -- 发布时间: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编辑过]
|
|
-- 作者:有点甜 -- 发布时间:2017/7/13 19:07:00 -- If e.Form.Controls("CheckBox2").Checked = True
Filter &= " and (标记 Not Like \'%停止补货%\' or 标记 is null)"
End If
|
|
-- 作者:magus1123 -- 发布时间: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 -- 发布时间:2017/7/13 19:19:00 --
[此贴子已经被作者于2017/7/13 19:22:41编辑过]
|
|
-- 作者:magus1123 -- 发布时间:2017/7/13 19:26:00 -- 把最前面的 Dim Filter As String 改为 Dim Filter As String = "1=1" 就没问题了。 这个= "1=1"是什么意思呢?
|
|
-- 作者:有点甜 -- 发布时间:2017/7/13 19:44:00 -- 如果你写了1=1,就不用写这个判断
If Filter >"" Then Filter = Filter & " And "
End If
|