以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  菜单的时间筛选  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=790)

--  作者:blackzhu
--  发布时间:2008/10/7 17:37:00
--  菜单的时间筛选

DIM SD AS DATE
DIM ED AS DATE
With RibbonTabs("【定位筛选】")("定位筛选")
        If Date.TryParse(.Items("SD").Text,SD) Then \'如果输入了有效的起始日期
        If Date.TryParse(.Items("ED").Text,ED) Then \'而且输入了有效的结束日期
            \'那么筛选两个日期之间的数据
            CurrentTable.Filter = "[订购日期] >= #" & SD & "# And [订购日期] <= #" & ED & "#"
            
     Else \'否则筛选大于起始日期的数据
            CurrentTable.Filter = "[订购日期] >= #" & SD & "#"
       
End If
    ElseIf Date.TryParse(.Items("ED").Text, ED) Then \'如果输入了有效的结束日期
        CurrentTable.Filter = "[订购日期] <= #" & ED & "#"

End If
 END WITH

 上面的代码我在其中的一张表中可以成功的筛选出日期,但我想问一下,如果在另外一张表有一个字段为“提取日期”的话,菜单的时间筛选应该怎么加进这个字段或者就是说时间筛选的菜单通用代码是怎样写的!我跟这个代码改写了几个,都不筛选。


--  作者:czy
--  发布时间:2008/10/7 18:14:00
--  

一个建议。
如果菜单中的以日期筛选要多个表使用,建议将各表的的日期列统一命名,如果想直观的体现日期名称,可以改一下日期列的列标题,这样就可以达到通用了。


--  作者:blackzhu
--  发布时间:2008/10/7 19:25:00
--  
以下是引用czy在2008-10-7 18:14:00的发言:

一个建议。
如果菜单中的以日期筛选要多个表使用,建议将各表的的日期列统一命名,如果想直观的体现日期名称,可以改一下日期列的列标题,这样就可以达到通用了。

  老大不会吧,比如有一张表示库存的,有进仓日期和出仓日期,全部改为日期,字段就重复了。怎么做表?


--  作者:czy
--  发布时间:2008/10/7 20:22:00
--  
进仓有入库表,出仓有出库表,怎么会重复呢?
如果进仓日期和出仓日期同属一个表,你可以在菜单中再增加一个编辑框,执行筛选前先选择数据来源列,再执行筛选也不会有问题.
--  作者:blackzhu
--  发布时间:2008/10/7 20:33:00
--  
以下是引用czy在2008-10-7 20:22:00的发言:
进仓有入库表,出仓有出库表,怎么会重复呢?
如果进仓日期和出仓日期同属一个表,你可以在菜单中再增加一个编辑框,执行筛选前先选择数据来源列,再执行筛选也不会有问题.

我只是举个列子而已。


--  作者:blackzhu
--  发布时间:2008/10/7 21:32:00
--  
以下是引用czy在2008-10-7 18:14:00的发言:

一个建议。
如果菜单中的以日期筛选要多个表使用,建议将各表的的日期列统一命名,如果想直观的体现日期名称,可以改一下日期列的列标题,这样就可以达到通用了。

    我也知道这样是最好的,但这样改的话,我有很多东西必须全部动了。有一些是日期参与代码计算的,还有报表都设计好了。请狐爸和LXL老师看看有什么简便的方法可以解决?

  好长时间没有看见LXL老师的帖子了。干嘛去了?


--  作者:狐狸爸爸
--  发布时间:2008/10/7 22:04:00
--  
这种功能没有意义的,系统菜单提供的日期筛选,比这个强大得多没,而且通用。

如果一定要自己做,可以改为下面的代码,不过必须先选择日期列,才能正常筛选:


DIM SD AS DATE

DIM ED AS DATE

Dim ColName As string = CurrentTable.Cols(CurrentTable.Colsel).Name

If CurrentTable.Cols(ColName).IsDate = False Then

    Messagebox.show("请选择日期列")

End If

With RibbonTabs("【定位筛选】")("定位筛选")

    If Date.TryParse(.Items("SD").Text,SD) Then \'如果输入了有效的起始日期

        If Date.TryParse(.Items("ED").Text,ED) Then \'而且输入了有效的结束日期

            \'那么筛选两个日期之间的数据

             CurrentTable.Filter = ColName & " >= #" & SD & "# And " & ColName & "<= #" & ED & "#"

         Else \'否则筛选大于起始日期的数据

            CurrentTable.Filter = ColName &  " >= #" & SD & "#"

       

        End If

    ElseIf Date.TryParse(.Items("ED").Text, ED) Then \'如果输入了有效的结束日期

        CurrentTable.Filter = ColName & " <= #" & ED & "#"

    End If

END WITH