0

日付としてdate_days1つのフィールドを含むテーブルがありますattdate

1 つまたは 2 つのパラメーターを受け入れるクエリを作成したいと考えています。すなわち:

QueryGetDays(#01/06/2013#,#30/06/2013#)
QueryGetDays(#01/06/2013#) and the query can tell the end of month by itself.

このクエリは、date_days の既存のレコードをすべて削除し、2013 年 1 月 6 日から 2013 年 6 月 30 日までの日付をテーブルに挿入します。date_days

もちろん、日付を生成してvb.netから挿入できます

しかし、それは ACCESS でクエリを使用して実行できるのでしょうか?

4

2 に答える 2

1

私は挑戦が好きです。1 つのフィールド (dummydate) を持つダミー テーブル (dummytable という名前) を作成し、0 (またはその他の数値) の 1 つのレコードを追加すると、次のクエリを実行できます。ポップアップ表示されるパラメーター ボックスに月の最初の日付 (2012 年 1 月 6 日) を入力すると、2012 年 1 月 6 日から 2012 年 6 月 30 日までのすべての日付が入力されます。2012 年 1 月 2 日と入力すると、2012 年 2 月 29 日までの日付が入力されます。

PARAMETERS [Enter date] DateTime;
INSERT INTO date_days (attdate) 
SELECT [Enter date]+dummydate  
FROM (
        SELECT 0 AS dummydate FROM dummytable
        UNION SELECT 1 FROM dummytable 
        UNION SELECT 2 FROM dummytable 
        UNION SELECT 3 FROM dummytable 
        UNION SELECT 4 FROM dummytable 
        UNION SELECT 5 FROM dummytable
        UNION SELECT 6 FROM dummytable 
        UNION SELECT 7 FROM dummytable
        UNION SELECT 8 FROM dummytable 
        UNION SELECT 9 FROM dummytable 
        -- fill in the rest here..
        UNION SELECT 24 FROM dummytable 
        UNION SELECT 25 FROM dummytable 
        UNION SELECT 26 FROM dummytable 
        UNION SELECT 27 FROM dummytable
        UNION SELECT 28 FROM dummytable 
        UNION SELECT 29 FROM dummytable
        UNION SELECT 30 FROM dummytable 
) WHERE Month([Enter date]+dummydate) = Month([Enter date]);

DELETE クエリは、個別に実行する必要があります。

于 2013-07-03T15:25:27.423 に答える
0

これを行うより効率的な方法は、tblNosという名前のテーブルを作成し、0 から 30 までの数字のみを含むNosという名前の単一フィールドを作成することです。次に、次のクエリを実行します。

PARAMETERS [Enter date] DateTime;
INSERT INTO date_days ( attdate )
SELECT [Enter date]+Nos FROM tblNos
WHERE Month([Enter date]+Nos) = Month([Enter date]);
于 2013-07-04T19:14:17.713 に答える