以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎么实现万用型筛选窗口  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25403)

--  作者:zhuzhi
--  发布时间:2012/11/8 15:43:00
--  [求助]怎么实现万用型筛选窗口

我想用下面的代码做个万用型筛选窗口

Dim Filter As String
With e.Form.Controls("ComboBox2")
    If .Value IsNot Nothing Then
        Filter = "职工号= \'" & .Value & "\'"
    End If
End With
If Filter > "" Then
    Tables("职工总库").Filter = Filter
End If

 

我想用两个组合框来筛选数据,第一个组合框用来选择查询项目,比如上面代码中的职工号,第二个组合框用来选择对应的数值。最后,我可以不用设置很多的查询项,只用修改2个组合框的值,就能在窗口中以不同的条件筛选数据

于是把上面的代码改成

 

Dim Filter As String

With e.Form.Controls("ComboBox1")
With e.Form.Controls("ComboBox2")
    If .Value IsNot Nothing Then
        Filter = "ComboBox1= \'" & .Value & "\'"
    End If
End With
If Filter > "" Then
    Tables("职工总库").Filter = Filter
End If

 

结果当然是华丽地出错了。首先是语法错误,去掉With e.Form.Controls("ComboBox1")后,又显示找不到列ComboBox1

 

我该怎么做才好呢?

 

求教!非常感谢!


--  作者:狐狸爸爸
--  发布时间:2012/11/8 15:49:00
--  

用心去体会下面的代码:

 

 

Dim Filter As String
If e.Form.Controls("ComboBox1").Value IsNot Nothing Then
    Filter =  e.Form.Controls("ComboBox1").Value
    If  e.Form.Controls("ComboBox2").Value IsNot Nothing Then
        Filter = Filter & "= \'" & e.Form.Controls("ComboBox2").Value & "\'"
    Else
        Filter = Filter & " Is Null"
    End If
    Tables("职工总库").Filter = Filter
End If


--  作者:zhuzhi
--  发布时间:2012/11/8 17:46:00
--  
以下是引用狐狸爸爸在2012-11-8 15:49:00的发言:

用心去体会下面的代码:

 

 

Dim Filter As String
If e.Form.Controls("ComboBox1").Value IsNot Nothing Then
    Filter =  e.Form.Controls("ComboBox1").Value
    If  e.Form.Controls("ComboBox2").Value IsNot Nothing Then
        Filter = Filter & "= \'" & e.Form.Controls("ComboBox2").Value & "\'"
    Else
        Filter = Filter & " Is Null"
    End If
    Tables("职工总库").Filter = Filter
End If

呃,感谢狐爸!可以使用!

我感觉,重点在于那两个then(因为这两个,让我另外一个想法也实现了,获得了双倍的答案,所以更加高兴!谢谢~!

Filter =  e.Form.Controls("ComboBox1").Value是不是定义ComboBox1的值啊?

Filter = Filter & "= \'" & e.Form.Controls("ComboBox2").Value & "\'"这一句,哪个字段代表ComboBox1的值呢……那几个"号,也让我有些搞不清楚。

底子薄,抱歉!只能伸手了……
此外,还想请教一个问题,如何让ComboBox2的选值的范围,取决于ComboBox1的选值呢?比如说ComboBox1选择了车间,ComboBox2就自动变成一车间、二车间……ComboBox1再选择性别,ComboBox2就自动在男和女中选择。

 

十分的感谢啊!


--  作者:狐狸爸爸
--  发布时间:2012/11/8 17:50:00
--  

设置ComboBox2的Enter事件:

 

Select Case e.Form.Controls("ComboBox1").Value

     Case "车间"

          e.Sender.ComboList = "一车间|二车间"

     Case "性别"

           e.Sender.ComboList = "男|女"

End Select


--  作者:zhuzhi
--  发布时间:2012/11/8 18:12:00
--  
原来如此!我一定要记下来,背下来,谢谢!
--  作者:狐狸爸爸
--  发布时间:2012/11/8 18:12:00
--  
不需要记,也不需要背,多看帮助多练习,不懂就问。
--  作者:Fotable
--  发布时间:2012/11/8 18:38:00
--  
你还可以用一个输入框 来输入运算符