确定货物是否已按月计费

时间:2015-09-01 13:08:07

标签: sql ms-access ms-access-2007 jet-sql

我有一个仓储数据库,它使用“ShipRefs”(标签为表单上的货件)字段将项目与特定货件相关联。我现在正在创建一个发票表单,以便为每个货件每月生成一个帐单。我可以通过组合框选择基于客户的货件,但我不能根据他们是否按月收费来过滤这些货件。 enter image description here

确定货物是否已按当月结算并且仅显示未在组合框中结算的那些货物的最佳方法是什么?  (请注意,“Last Billdate”字段是对此失败的尝试) 数据:

enter image description here

QUERY用于货件组合框行来源:

SELECT DISTINCT ItemList.ShipRef, ItemList.CRef, InvoiceData.[Last Billdate]
FROM ItemList AS ItemList_1, ItemList INNER JOIN InvoiceData ON ItemList.ShipRef = InvoiceData.Shipment
WHERE (((ItemList.CRef)=[Forms]![InvoiceData]![Customer]) AND ((InvoiceData.[Last Billdate])>=Date()-30));

1 个答案:

答案 0 :(得分:1)

从您的回复中......

  

我只想要那些不属于当月的记录   是仅记录发票日期为空的记录

我认为DateSerial()在此确定目标日期非常有用。这是一个立即窗口示例:

? DateSerial(Year(Date()), Month(Date()), 1)
9/1/2015 

? DateSerial(Year(Date()), Month(Date()) + 1, 1)
10/1/2015 

这是一个使用DateSerial表达式的查询,并将结果集限制为发票日期为空的那些行:

SELECT id.*
FROM InvoiceData AS id
WHERE
    id.[Invoice Date] Is Null
    And
        (
               id.[Last BillDate] < DateSerial(Year(Date()), Month(Date()), 1)
            Or id.[Last BillDate] >= DateSerial(Year(Date()), Month(Date()) + 1, 1)
        );