1

Access 2007 データベースのレコードを単純な 2 列のテーブルに保存し、次のクエリを使用してレポートを生成しています。

sql = "SELECT 
        OrderDate AS `Order Date and Time`, 
        Items AS `Ordered Items` 
    FROM Orders 
    WHERE Format(Orders.OrderDate,'mm/dd/yyyy')  
       >= Format(#" + startDate.Value.Date + "#,'mm/dd/yyyy') 
      AND Format(Orders.OrderDate,'mm/dd/yyyy')
       <= Format(#" + endDate.Value.Date + "#,'mm/dd/yyyy')
    ORDER BY OrderDate"

startDateおよびendDateVB.2010 の datePicker オブジェクトです。

startDateendDateが同じ年にある場合、レポートは期待どおりに生成されます。たとえば、11 月 18 日から 12 月 27 日までの注文を確認すると、期待どおりの結果が得られます。しかし、たとえば 2012 年 11 月 1 日から 2013 年 1 月 8 日までの場合、すべての月 (11 月、12 月、1 月) にレコードがあるにもかかわらず、レコードは表示されません。

何が間違っている可能性がありますか?

4

1 に答える 1

3

フォーマットされた日付ではなく、クエリで実際の日付を使用します。何かのようなもの:

SELECT OrderDate, Items 
FROM Orders 
WHERE Orders.OrderDate BETWEEN #startDate.Value.Date# AND #endDate.Value.Date# 
ORDER BY OrderDate;

http://www.databasedev.co.uk/sql-between.html

または、元のクエリを保持する場合は、日付の形式を変更して、年が最も重要になり、次に月と日が続くようにします。

SELECT OrderDate AS `Order Date and Time`, Items AS `Ordered Items` 
FROM Orders 
WHERE Format(Orders.OrderDate,'yyyy/mm/dd') >= Format(#" + startDate.Value.Date + "#,'yyyy/mm/dd') 
AND Format(Orders.OrderDate,'yyyy/mm/dd') <= Format(#" + endDate.Value.Date + "#,'yyyy/mm/dd') 
ORDER BY OrderDate;
于 2012-12-17T21:53:08.420 に答える