以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于查询窗口的设计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47011)

--  作者:bobolan521
--  发布时间:2014/3/3 12:28:00
--  [求助]关于查询窗口的设计
你好,我有2个问题要请教一下,

1、请问一下,我的这个项目中,为什么查询1按钮中如果 部门没有选会提示出错,而查询2按钮中部门没选,或者选了都不会出错呢?我两个查询按钮里的代码类似的

2、如果我的窗体中启用了多个复选组合框,我该如何写table 的Filter 代码,因为有部分复选组合框,不一定会使用,我现在的一个窗体里有4个复选组合框,该如何写FLITER,

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目8.rar



--  作者:狐狸爸爸
--  发布时间:2014/3/3 12:32:00
--  

1、不要用iif,应该这样写:

Dim bm  As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox1")  
If bm.Value Is Nothing Then
   Tables("表A").Filter = "[部门名称]   In ( \'IT部\') "
Else
    Tables("表A").Filter= "[部门名称]  In ( \'" & bm.value.Replace(",","\',\'") & "\')"
End If

 

2、参考:

http://www.foxtable.com/help/topics/1058.htm

 


--  作者:lshshlxsh
--  发布时间:2014/3/3 12:37:00
--  

谢谢狐狸爸爸,你这样的写法,我了解的,但是因为我的窗体中用了很多个复选组合框,我该如何写条件呢,有可能我窗体中有四个复选结合框,我有可能用到了其中了一个,也有可能用两个,也有可能全部用,那我该如何写查询条件最简便呢?

Tables("表A").Filter= "[部门名称]  In ( \'" & bm.value.Replace(",","\',\'") & "\') and 民族 in ( \'" & mz.value.Replace(",","\',\'") & "\' and 省份 in ( \'" & sf.value.Replace(",","\',\'") & "\'))"  如果我省份不选择,执行这个代码会了错的

[此贴子已经被作者于2014-3-3 12:39:47编辑过]

--  作者:y2287958
--  发布时间:2014/3/3 12:39:00
--  
搜索一下吧
论坛很多例子

--  作者:bobolan521
--  发布时间:2014/3/3 12:41:00
--  

谢谢狐狸爸爸,你这样的写法,我了解的,但是因为我的窗体中用了很多个复选组合框,我该如何写条件呢,有可能我窗体中有四个复选结合框,我有可能用到了其中了一个,也有可能用两个,也有可能全部用,那我该如何写查询条件最简便呢?

Tables("表A").Filter= "[部门名称]  In ( \'" & bm.value.Replace(",","\',\'") & "\') and 民族 in ( \'" & mz.value.Replace(",","\',\'") & "\' and 省份 in ( \'" & sf.value.Replace(",","\',\'") & "\'))"  如果我省份不选择,执行这个代码会了错的


--  作者:狐狸爸爸
--  发布时间:2014/3/3 12:43:00
--  

这里告诉你方法了,逐个判断,逐个合并:

 

http://www.foxtable.com/help/topics/1058.htm

 


--  作者:狐狸爸爸
--  发布时间:2014/3/3 12:46:00
--  

具体到你的例子,就是:

 

Dim bm1  As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox1")  

Dim bm2  As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox2")  
Dim Filter As String
If bm1.Value IsNot Nothing Then
    Filter= "[部门名称]  In ( \'" & bm1.value.Replace(",","\',\'") & "\')"
End If

If bm2.Value IsNot Nothing Then

    If Filter > "" Then

       Filter = Filter & " And "

    End If
    Filter= "[民族]  In ( \'" & bm2.value.Replace(",","\',\'") & "\')"
End If

Tables("表A").Filter = Filter


--  作者:bobolan521
--  发布时间:2014/3/3 12:51:00
--  
谢谢
--  作者:blackzhu
--  发布时间:2014/3/3 12:59:00
--  
现成的要用呀
--  作者:狐狸爸爸
--  发布时间:2014/3/3 13:04:00
--  

前面漏了一点,应该:

 

Dim bm1  As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox1")  

Dim bm2  As WinForm.CheckedComboBox = e.Form.Controls("CheckedComboBox2")  
Dim Filter As String
If bm1.Value IsNot Nothing Then
    Filter= "[部门名称]  In ( \'" & bm1.value.Replace(",","\',\'") & "\')"
End If

If bm2.Value IsNot Nothing Then

    If Filter > "" Then

       Filter = Filter & " And "

    End If
    Filter= Filter & "[民族]  In ( \'" & bm2.value.Replace(",","\',\'") & "\')"
End If

Tables("表A").Filter = Filter