以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110353)

--  作者:沪上游客
--  发布时间:2017/12/1 13:03:00
--  [求助]
老师您好!
我想做一个业绩筛选,在窗口有一个CheckedComboBox控件可以多值和一个筛选按钮,不知道对于CheckedComboBox控件多值筛选代码怎么写?请老师指教。谢谢!
这个单值可以筛选,如下图:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171201125538.jpg
图片点击可在新窗口打开查看

但是二个以上的多选就不行了,如下图:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171201125527.jpg
图片点击可在新窗口打开查看

按钮代码:
Dim Filter As String
With e.Form.Controls("CheckedComboBox2")
    If .Value IsNot Nothing Then
        Filter = "所属省份 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("TextBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If 
        Filter = Filter & "施工区域 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("NumericComboBox1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If 
        Filter = Filter & "实际造价 >= \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If 
        Filter = Filter & "开工日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If 
        Filter = Filter & "竣工日期 <= #" & .Value & "#"
    End If
End With

If Filter > "" Then
    Tables("工程合同基础数据").Filter = Filter
End If
Dim lbl As WinForm.Label
lbl = e.Form.Controls("Label5")
lbl.Text = "符合条件工程数:" & Tables("工程合同基础数据").Rows.Count & "个"

--  作者:沪上游客
--  发布时间:2017/12/1 13:10:00
--  
另外如果“工程地省份”为多选,那么“工程地区域”自动为灰色不给录入。怎么样实现?谢谢!


--  作者:有点甜
--  发布时间:2017/12/1 15:20:00
--  
With e.Form.Controls("CheckedComboBox2")
    If .Value IsNot Nothing Then
        Filter = "所属省份 = \'" & .Value & "\'"
    End If
End With

 

改成

 

With e.Form.Controls("CheckedComboBox2")
    If .Value IsNot Nothing Then
        Filter = "所属省份 in (\'" & .Value.Replace(",", "\',\'") & "\')"
    End If
End With

--  作者:有点甜
--  发布时间:2017/12/1 15:23:00
--  
以下是引用沪上游客在2017/12/1 13:10:00的发言:
另外如果“工程地省份”为多选,那么“工程地区域”自动为灰色不给录入。怎么样实现?谢谢!

 

[工程地省份] 按钮,TextChanged事件

 

If e.sender.Text.contains(",") Then

    e.form.controls("工程地区域").Enabled = False

Else

    e.form.controls("工程地区域").Enabled = true

End If


--  作者:沪上游客
--  发布时间:2017/12/1 21:18:00
--  
谢谢老师,已解决!