以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教日期列的筛选  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52253)

--  作者:zyys2813
--  发布时间:2014/6/12 9:37:00
--  请教日期列的筛选

有一日期列,如[结账日期],有的未结账是空的,有的已结账的有日期,请问如何筛选 某日期前已结账和未结账?

 

 


--  作者:zyys2813
--  发布时间:2014/6/12 9:39:00
--  

代码如下:

With e.Form.Controls("结束日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "(结账日期 <= #" & .Value & "# and 结账日期 is  null)"
    End If
End With


--  作者:有点甜
--  发布时间:2014/6/12 9:39:00
--  
 呃,只有一列日期列吗?那怎么查?数据为空的时候,怎么知道日期值?
--  作者:zyys2813
--  发布时间:2014/6/12 9:43:00
--  

不是只有一列,上面的代码是其中一段,红色部分不会表达

比如筛选 2014年5月31日前 未结账的,在6月份结账的不要包括在内,因为数据是动态的

[此贴子已经被作者于2014-6-12 9:43:44编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/6/12 9:51:00
--  
楼主重新描述问题,估计没有人看懂你的问题。
--  作者:zyys2813
--  发布时间:2014/6/12 9:58:00
--  

Dim Filter As String
With e.Form.Controls("领取单位1")
    If .Value IsNot Nothing Then
        Filter = "领取单位 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("制品名称1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "制品名称 like \'*" & .Value & "*\'"
    End If
End With
With e.Form.Controls("起始日期1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "出库日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("结束日期1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "出库日期 <= #" & .Value & "#"
    End If
End With

With e.Form.Controls("结束日期1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "结账日期 <= #" & .Value & "#"  \' and 结账日期 is  null)"
    End If
End With

If Filter > "" Then
    Tables("财务管理_外欠明细").Filter = Filter
End If

Tables("财务管理_外欠明细").Sort = "编号,出库日期"

 

因为有对账的需要,所以需要查询 截止到 <结束时间>的外欠明细,但数据是动态的,可能需要查询时在<结束时间>后又有结账的,但在<结束时间>后结账的在查询时间段内仍属于未结账的,需要筛选出在<结束时间>前未结账的行

 

呵呵,不知道表达清楚没有


--  作者:狐狸爸爸
--  发布时间:2014/6/12 10:08:00
--  

1、正本的表,筛选之后,新增行不受筛选条件的影响,不管是否符合筛选条件,新增行都会显示,除非你重新筛选。

2、或者你用副本,副本新增行受筛选条件的影响,如果不符合已经设定的筛选条件,新增行不会显示。


--  作者:zyys2813
--  发布时间:2014/6/12 10:21:00
--  
噢,不是新增行的问题,原有的行(一般是欠款出库,[结账日期]列为空),结账后在[结账日期]列填上结账日期的
[此贴子已经被作者于2014-6-12 10:22:17编辑过]

--  作者:狐狸爸爸
--  发布时间:2014/6/12 10:24:00
--  

已经筛选出来的行,更加不受影响。

要不你用副本吧


--  作者:有点甜
--  发布时间:2014/6/12 10:39:00
--  

是不是这个意思?

 

With e.Form.Controls("结束日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "(结账日期 <= #" & .Value & "# or 结账日期 is  null)"
    End If
End With