Foxtable(狐表)用户栏目专家坐堂 → [求助]关于二个以上checkedComboBox进行组合筛选的问题


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

主题:[求助]关于二个以上checkedComboBox进行组合筛选的问题

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]关于二个以上checkedComboBox进行组合筛选的问题  发帖心情 Post By:2015/2/11 13:23:00 [只看该作者]

有个“筛选”按钮,有如下代码:
Dim FilterPH As String
With e.Form.Controls("checkedComboBox_牌号")
    If .Value IsNot Nothing Then
        FilterPH = "牌号 In ('" & .Value.Replace(",", "','") & "')"
    End If
End With

Dim FilterHD As String
With e.Form.Controls("checkedComboBox_厚度")
    If .Value IsNot Nothing Then
        FilterHD = "厚度 In ('" & .Value.Replace(",", "','") & "')"
    End If
End With

If FilterPH > "" OrElse FilterHD > ""   Then
    Tables("销售出库明细主窗口_Table_工序合并表_副本").Filter = FilterPH And FilterHD & "and [工序] ='成品入库' and [库存标记]=true "
End If

执行后,返回:从字符串“牌号 In ('316L','4J29','4J36')”到类型“Long”的转换无效。
说明:'316L','4J29','4J36'是我任意选择的牌号

谢谢老师

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/2/11 13:43:00 [只看该作者]

上面的问题初步解决了,代码如下:
Dim PH As WinForm.CheckedComboBox = e.Form.Controls("checkedComboBox_牌号")
Dim HD As WinForm.CheckedComboBox = e.Form.Controls("checkedComboBox_厚度")
Tables("销售出库明细主窗口_Table_工序合并表_副本").Filter="牌号 in ('" & PH.Text.replace(",", "','") & "') and 厚度 in ('" & HD.Text.replace(",", "','") & "')" & "and [工序] ='成品入库' and [库存标记]=true "

这段代码有个问题,就是如果有一个CheckedComboBox不选择任何值,代码执行结果会出错,如何改能实现如果不选择就是默认选择了所有项目

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


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

 看了一下,即便没有值,也是没有问题。

 

 报什么错?


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/2/11 14:47:00 [只看该作者]

甜老师,你可来了,刚才把我急死了,等不急你回复,我自己摸索,还真搞出来了,但不知代码是不是合理。

checkedComboBox_牌号 的ENTER事件
e.Sender.Combolist = "全选" & "|" & DataTables("工序合并表").GetComboListString("牌号" , "[工序] ='成品入库' and [库存标记]=true ")

checkedComboBox_牌号 的LEAVE事件
If e.Sender.Text.Contains("全选") Then
    e.Sender.Text = e.Sender.Combolist.Replace("全选","").Replace("|",",").TrimStart(",")
End If

checkedComboBox_厚度 的ENTER事件
e.Sender.Combolist = "全选" & "|" & DataTables("工序合并表").GetComboListString("厚度" , "[工序] ='成品入库' and [库存标记]=true ")

checkedComboBox_厚度 的LEAVE事件
If e.Sender.Text.Contains("全选") Then
    e.Sender.Text = e.Sender.Combolist.Replace("全选","").Replace("|",",").TrimStart(",")
End If

筛选按钮的CLICK事件
Dim PH As WinForm.CheckedComboBox = e.Form.Controls("checkedComboBox_牌号")
Dim HD As WinForm.CheckedComboBox = e.Form.Controls("checkedComboBox_厚度")

If PH.Text="" Then
PH.Text = PH.Combolist.Replace("全选","").Replace("|",",").TrimStart(",")
End If

If HD.Text="" Then
HD.Text = HD.Combolist.Replace("全选","").Replace("|",",").TrimStart(",")
End If

Tables("销售出库明细主窗口_Table_工序合并表_副本").Filter="牌号 in ('" & PH.Text.replace(",", "','") & "') and 厚度 in ('" & HD.Text.replace(",", "','") & "')" & "and [工序] ='成品入库' and [库存标记]=true "

以上代码可以实现如下功能:
CheckedComboBox的下拉中会有“全选”的项目,选中后就可实现全选的效果
CheckedComboBox的下拉中不选中任何项目,点筛选按钮后实现CheckedComboBox默认全选的效果

以上代码写的是否合理,是否有更直接简便的代码,请甜老师赐教!
[此贴子已经被作者于2015/2/11 14:47:07编辑过]

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


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

  代码合理,也只能这样做,那现在有什么问题?

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/2/11 15:01:00 [只看该作者]

还有一个问题,想实现联动筛选功能,感觉有点难,老师看看能不能帮我写出来
假定有个 CheckBox_联动筛选 控件,当这个被选中时,实现以下功能:
checkedComboBox_牌号中选中了牌号A,B,C,这时checkedComboBox_厚度的下拉内容中只有牌号A、B、C所对应的厚度,不会显示所有厚度,这样可大大提高选择速度,甜老师,这段感觉好复杂的代码能帮我写下吗?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/2/11 15:04:00 [只看该作者]


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


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

 参考7楼,条件你变换成 in (xxx) 即可。

 回到顶部