填写所有月份的表格

时间:2013-07-03 12:07:32

标签: ms-access

我有一个表date_days,其中包含1个字段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中的所有现有记录,并在表date_days中插入2013年6月1日至2013年6月30日的日期

ofcource我可以生成日期并从vb.net执行插入

但我想知道是否可以在ACCESS中使用查询来完成?

2 个答案:

答案 0 :(得分:1)

我喜欢挑战。如果我们使用单个字段(dummydate)创建一个虚拟表(名为dummytable),并添加一个0(或任何其他数字)的记录,我们可以运行以下查询。在弹出的参数框中输入当月的第一个日期(2012年6月1日),它将填充2012年6月1日到2012年6月30日之间的所有日期。输入1/2/2012将输入截至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查询需要单独运行。

答案 1 :(得分:0)

嗯,更有效的方法是创建一个名为 tblNos 的表,其中包含一个名为 Nos 的字段,其中只包含数字0到30.然后运行这个查询:

PARAMETERS [Enter date] DateTime;
INSERT INTO date_days ( attdate )
SELECT [Enter date]+Nos FROM tblNos
WHERE Month([Enter date]+Nos) = Month([Enter date]);
相关问题