以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在窗体中实现多条件查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113889)

--  作者:top123
--  发布时间:2018/1/24 17:47:00
--  如何在窗体中实现多条件查询
1、用一个按钮实现所有列的查询(已实现)
2、所有列 与 另外一个条件共同查询,得出结果(未实现)
3、查询中如何使用通配符表达所有列(未实现)



--  作者:有点甜
--  发布时间:2018/1/24 18:09:00
--  

你如何做的?参考 http://www.foxtable.com/webhelp/scr/1058.htm

 


--  作者:top123
--  发布时间:2018/1/25 14:15:00
--  

Dim Filter As String

With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then
        Filter =  "[姓名]= \'" & .Value & "\' Or [电话]= \'" & .Value & "\' Or [地区]= \' " & .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
      If Filter > "" Then
        Tables("订单表").Filter = Filter
    End If
所有列 与 另外一个条件共同查询,得出结果(未实现)

[此贴子已经被作者于2018/1/25 14:23:31编辑过]

--  作者:top123
--  发布时间:2018/1/25 14:20:00
--  

Filter =  "[姓名]= \'" & .Value & "\' Or [电话]= \'" & .Value & "\' Or [地区]= \'" & .Value & ""

1、在单一查询时,这句中,每个例都可以被查询到

2、在和时间合并起来查询时,只有一个例会被执行

[此贴子已经被作者于2018/1/25 14:20:06编辑过]

--  作者:有点甜
--  发布时间:2018/1/25 15:17:00
--  

前后,加上括号

 

 Filter =  "([姓名]= \'" & .Value & "\' Or [电话]= \'" & .Value & "\')"

 


 


--  作者:top123
--  发布时间:2018/1/25 16:59:00
--  

谢谢,有点甜,已经可以实现了

另外咨询下,查询中如何使用通配符表达所有列


--  作者:有点甜
--  发布时间:2018/1/25 18:08:00
--  

Filter =  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\')"

 

如果某列不是字符列

 

Filter =  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\' or convert(日期, \'System.String\') like \'%" & .value & "%\')"


--  作者:top123
--  发布时间:2018/1/25 22:10:00
--  
谢谢,有点甜,已经可以实现了,厉害!!!
Filter =  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\' or convert(日期, \'System.String\') like \'%" & .value & "%\')",
其中这里面的日期,只能按固定格式,能不能实现日期的多种写法

--  作者:有点甜
--  发布时间:2018/1/25 22:48:00
--  

 

以下是引用top123在2018/1/25 22:10:00的发言:
谢谢,有点甜,已经可以实现了,厉害!!!
Filter =  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\' or convert(日期, \'System.String\') like \'%" & .value & "%\')",
其中这里面的日期,只能按固定格式,能不能实现日期的多种写法

 

比较麻烦,因为筛选条件是用表达式的,表达式处理日期列,要这样处理

 

http://www.foxtable.com/webhelp/scr/1285.htm

 

[此贴子已经被作者于2018/1/25 22:48:44编辑过]

--  作者:top123
--  发布时间:2018/3/4 14:46:00
--  

Dim Filter As String

With e.Form.Controls("cmbProduct")
    If .Value IsNot Nothing Then

      Filter =  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\' or convert(日期, \'System.String\') like \'%" & .value & "%\')",
        Filter =   End If
End With
    With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter &  "([姓名] like \'%" & .Value & "%\' Or [电话] like \'%" & .Value & "%\' or convert(日期, \'System.String\') like \'%" & .value & "%\')"
End If
End With
      If Filter > "" Then
        Tables("订单表").Filter = Filter
    End If
这段代码,不能实现两个条件同时查询,这是什么情况