以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请教多种筛选组合使用的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25483)

--  作者:boooxu
--  发布时间:2012/11/10 10:49:00
--  [求助]请教多种筛选组合使用的代码

正在设计个表格的筛选项,碰到了个难点,请高手帮个忙

 

状态栏的是,列出合格,或者待审,或者己取消的所有情况,
分类栏的也是,列出关键,或者非关键的所有情况。
两个并在一起,要同时满足状态栏和非类栏标准,这种代码怎么写?

----------------------------------------------

筛选项为

状态:口合格 口待审 口己取消

分类:口关键 口一般

 

-----------------------

单状态的筛选见下面代码,同理分类栏的代码也一样,怎么同时满足这二种状态的筛选?

 

Tables("信息表").filter = ""

 

Dim hg As WinForm.CheckBox = e.Form.Controls("CheckBox1")

Dim ds As WinForm.CheckBox = e.Form.Controls("CheckBox2")

Dim yqx As WinForm.CheckBox = e.Form.Controls("CheckBox3")

Dim Filter As String

 

With e.Form.Controls("CheckBox1")

    If hg.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'合格\'"

        Else

            Filter = "  状态 = \'合格\'"

        End If

    End If

End With

 

With e.Form.Controls("CheckBox2")

    If ds.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'待审\'"

        Else

            Filter = " 状态 = \'待审\'"

        End If

    End If

End With

 

With e.Form.Controls("CheckBox3")

    If yqx.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'己取消\'"

        Else

            Filter = " 状态 = \'己取消\'"

        End If

    End If

End With

 

Tables("信息表").Filter = Filter


--  作者:lin_hailun
--  发布时间:2012/11/10 11:15:00
--  
 简单写一个,供楼主参考。

Tables("信息表").filter = ""

 

Dim hg As WinForm.CheckBox = e.Form.Controls("CheckBox1")

Dim ds As WinForm.CheckBox = e.Form.Controls("CheckBox2")

Dim yqx As WinForm.CheckBox = e.Form.Controls("CheckBox3")

Dim filter1 As String = "1=2"

 

If hg.Checked then
    filter1 = filter1 & " or 状态 = \'合格\' "
End If

If ds.Checked then
    filter1 = filter1 & " or 状态 = \'待审\' "
End If

If yqx.Checked then
    filter1 = filter1 & " or 状态 = \'己取消\'"
End If

 

\'----------------------------------------------


Dim gj As WinForm.CheckBox = e.Form.Controls("CheckBox4")

Dim yb As WinForm.CheckBox = e.Form.Controls("CheckBox5")

Dim filter2 As String = "1=2"


If gj.Checked then
    filter2 = filter2 & " or 分类 = \'关键\' "
End If

If yb.Checked then
    filter2 = filter2 & " or 分类 = \'一般\'"
End If


msgbox("(" & filter1 & ") And (" & filter2 & ")")


Tables("信息表").Filter = "(" & filter1 & ") And (" & filter2 & ")"


[此贴子已经被作者于2012-11-10 11:14:54编辑过]

--  作者:boooxu
--  发布时间:2012/11/10 11:52:00
--  

谢谢楼上的狐友,学习中

 

楼主能不能加点说明,特别是

 

Dim filter1 As String = "1=2"

msgbox("(" & filter1 & ") And (" & filter2 & ")")

这二句能说明下不,

或者告诉下哪里可以查看相关的资料


--  作者:lin_hailun
--  发布时间:2012/11/10 11:58:00
--  
 加入1=2,主要是想不必判断filter是否是空,直接可以连接。

 1=2 or 状态 = \'合格\'

 这样,语法就不会有错,而1=2,本来就是假,不会影响or运算。

----------------------

 msgbox("(" & filter1 & ") And (" & filter2 & ")")

 这句代码,主要是想弹出给你看最后生成的条件是什么。

 --------------------------------

 or 和 and,是有优先级别的,就好象 加+ 和 乘* 一样,所以左右要加括号

--  作者:boooxu
--  发布时间:2012/11/10 12:14:00
--  

明白了,谢谢


--  作者:boooxu
--  发布时间:2012/11/10 15:41:00
--  

这个脚本怎么实现不了功能,

弹出提示错误的窗口了

 

259d83cc.form---\'(窗口标题)

(1=2 or 状态=\'合\')and (1=2)---\'(窗口内容)

 

什么情况?

 

 


--  作者:lin_hailun
--  发布时间:2012/11/10 15:59:00
--  
 把报错的内容贴上来。图片。
--  作者:sgs
--  发布时间:2012/11/10 16:00:00
--  
看看foxtable帮助资料,自行设计查询窗口这一章节
--  作者:boooxu
--  发布时间:2012/11/10 16:13:00
--  

图片点击可在新窗口打开查看

这是单点状态合格时的图片,确定后返回空值。

我发现个情况,

单选一个,或单选一种状态的多个选项时都会出错,且返回空值,

 

二种状态都选,至少选一个时,搜索是对的


--  作者:lin_hailun
--  发布时间:2012/11/10 17:39:00
--  
 楼主,那你希望是怎样一种条件去筛选呢?

 我不懂了。你筛选的条件好像说不太通吧?

 没有选中,你希望怎样显示?
[此贴子已经被作者于2012-11-10 17:39:28编辑过]