以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]查询窗口如何增加固定条件筛选  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20574)

--  作者:wangwenlon
--  发布时间:2012/6/12 17:29:00
--  [求助]查询窗口如何增加固定条件筛选

比如我想再以下查询设计中加入,不包含手机号码列中含6543和4987的条件,6543和4987设置为固定值不需要选择

标题 Click事件代码
清除条件 e.Form.Controls("cmbProduct").Value = Nothing
e.Form.Controls(
"cmbCustomer").Value = Nothing
e.Form.Controls(
"cmbEmployee").Value = Nothing
e.Form.Controls(
"StartDate").Value = Nothing
e.Form.Controls(
"EndDate").Value = Nothing
撤销筛选 Tables("订单").ApplyFilter = False
开始筛选 Dim Filter As String
With
e.Form.Controls("cmbProduct")
    If
.Value IsNot Nothing Then
        Filter =
"产品 = \'" & .Value & "\'"
   
End If
End
With
With
e.Form.Controls("cmbCustomer")
    If
.Value IsNot Nothing Then
        If
Filter > "" Then
            Filter = Filter &
" And "
   
    End If
        Filter = Filter &
"客户 = \'" & .Value & "\'"
   
End If
End
With
With
e.Form.Controls("cmbEmployee")
    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


--  作者:狐狸爸爸
--  发布时间:2012/6/12 18:05:00
--  
If Filter > "" Then
    Tables("订单").Filter = Filter
End If
 
改为:
 
If Filter > "" Then
    Tables("订单").Filter = Filter & “ And 固定条件”
else
    Tables("订单").Filter = "固定条件”
End If

--  作者:wangwenlon
--  发布时间:2012/6/13 14:51:00
--  

帅哥,你太牛了,不包含怎么表达?

这个是包含:[备注] Like \'*⊙*\'

那不包含的命令是什么?

 

还有多个固定条件怎么整合?谢谢


--  作者:don
--  发布时间:2012/6/13 14:57:00
--  

在 Like 运算符之前,可以加上Not关键词,表示不类似的意思,例如:

[姓名] Not Like \'李*\'

表示姓名不是以“李”开头,也就是不是姓李的。



运算符与函数

本节详细介绍表达式所支持的运算符和函数。
CaseStudy目录下有一个示例文件“表达式.table”,可以帮助大家快速掌握本节介绍的运算符和函数。

运算符

在创建比较表达式时,允许使用下列运算符:

<

>

<=

>=

<>

=

In

Like

在表达式中还支持下列算术运算符:

+(加)

-(减)

*(乘)

/(除)

%(模数)

对于数值,允许使用小数和科学记数法。

列名称推荐用方括号括起来,字符串的值应括在单引号内。
日期值应放在符号 (#) 内,顺序为“月/日/年”例如:

[姓名] = \'贺辉\'

[单价] <= 50.00

[出生日期] < #9/17/1970#

#9/17/1970#表示1970年9月17日。

若要连接字符串,请使用 + 字符,例如:

 \'HA\' + \'PT\'

可以用 And 或者 Or 串联条件表达式。

用 And 串联的条件表达式必须同时满足,例如:

[省籍] = \'湖南\' And [学历] = \'博士\'

表示省籍为湖南,且学历为博士。

用 Or 串联的条件表达式只需满足一个即可,例如:

[省籍] = \'湖南\' Or [省籍] = \'广东

表示省籍为湖南或者广东。

计算表达式值的时候,And 优先于 Or,可以使用括号组合表达式来强制改变优先级,例如:

([省籍] = \'湖南\' Or [省籍] = \'广东\') And [学历] = \'博士\'

表示省籍是湖南或者广东的博士。

Like 运算符用于比较字符串,在 Like 比较中,* 和 % 作为通配符,两者可以互换,表示任意个数的字符,通配符只能在开头或者结尾出现。例如:

[姓名] Like \'*赫*\'

[姓名] Like \'赫*\'

[姓名] Like \'*赫\'

分别表示姓名中包括“赫”,姓名开头是“赫”(姓赫),姓名结尾是“赫”

在字符串的中间不允许使用通配符。例如,不允许 \'赫*丰\'

由于* 和 % 默认作为通配符,如果要将其作为比较内容的一部分,必须用方括号括起来,例如:

[型号] Like \'A[*]*\'

表示型号以“A*”开头。

在 Like 运算符之前,可以加上Not关键词,表示不类似的意思,例如:

[姓名] Not Like \'李*\'

表示姓名不是以“李”开头,也就是不是姓李的。

In 运算符用来判断某一个值是否在指定的一系列值中,例如:

[国籍] In (\'中国\',\'美国\',\'英国\',\'法国\',\'俄罗斯\')

表示判断国籍是否是上述五国之一,显然这比用OR来连接多个表达式要简洁很多。

同样如果在 In 运算符之前,加上 Not 关键词,表示不在指定的一系列值之中,例如:

[国籍] Not In (\'中国\',\'美国\',\'英国\',\'法国\',\'俄罗斯\')

表示国籍非上述指定的五国


--  作者:wangwenlon
--  发布时间:2012/6/13 15:05:00
--  

谢谢了,那多个条件并列如何表达?

 

比如这个是单个固定条件:

 

If Filter > "" Then
    Tables("订单").Filter = Filter & “ And 固定条件”
else
    Tables("订单").Filter = "固定条件”
End If

 

如果是对同一列3个不同的固定条件筛选该怎么表达呢?


--  作者:don
--  发布时间:2012/6/13 15:14:00
--  
認真看看幫助再說吧,你要是有心看4樓給你的,想必這不是問題
--  作者:wangwenlon
--  发布时间:2012/6/13 15:49:00
--  

明白了,谢谢