设为首页收藏本站Access中国
Office中国(www.office-cn.net),专业Office论坛

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4647|回复: 17

[模块/函数] [已解决]请教:如何用查询得出两个给定日期之间的所有日期列表?

[复制链接]
发表于 2013-5-30 09:06:14 | 显示全部楼层 |阅读模式
如题,希望用查询的方式得出结果,不用表。
比如:
给定日期  2013-4-23、2013-5-26
通过查询得出:
2013-4-23
2013-4-24
2013-4-25
...
2013-5-26

解决办法总结:
http://www.access-cn.com/info/3696-cn.html
发表于 2013-5-30 12:40:39 | 显示全部楼层
function datelist(byval d1 as date,byval d2 as date) as string
  '功能:为组合框或列表框提供数据源(值列表)
  dim str as string
  dim d as date
  d=d1
  do while true
     if d>d2 the exit do
     str=str & d & ";"
     d=dateadd("d",1,d)
  loop
  datelist=left(str,len(str)-1)
end function
 楼主| 发表于 2013-5-30 13:10:26 | 显示全部楼层
todaynew 发表于 2013-5-30 12:40
function datelist(byval d1 as date,byval d2 as date) as string
  '功能:为组合框或列表框提供数据源 ...

谢谢版主的回复。
我的用途不是解决组合框或列表框的数据源,而是解决“查询指定时间段内所有日期的营业收入,如果某天没有营业,也就没有收入的记录,但是又需要体现那天的收入为零”这样的需求。
是不是只有用临时表来列出所有的日期,然后才能用查询得出结果?
发表于 2013-5-30 14:36:27 | 显示全部楼层
aslxt 发表于 2013-5-30 13:10
谢谢版主的回复。
我的用途不是解决组合框或列表框的数据源,而是解决“查询指定时间段内所有日期的营业 ...

将缺少的日期追加到收入表中即可。
发表于 2013-5-30 18:29:37 | 显示全部楼层
用查询可以实现,两个查询即可。
第一步,任意选择一个表(数据足够多,能够唯一排序,有自动编号最好),然后就生成所需记录条数(结束时间-开始时间)的查询1。
第二步,利用以上查询1,很容易得出如下结果的查询2:
2013-4-23
2013-4-24
2013-4-25
...
2013-5-26
第三步,利用查询2就可以做很多事了,
 楼主| 发表于 2013-5-31 09:06:54 | 显示全部楼层
本帖最后由 aslxt 于 2013-5-31 09:12 编辑
cgsilicone 发表于 2013-5-30 18:29
用查询可以实现,两个查询即可。
第一步,任意选择一个表(数据足够多,能够唯一排序,有自动编号最好), ...


数据足够多,是指多到保证明天都有记录吗?
如果是那样就好办了,数据没有多到那种程度!
如附件,“营业报表”是数据源,“查询结果”是需要的查询结果示意。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-5-31 15:37:06 | 显示全部楼层
aslxt 发表于 2013-5-31 09:06
数据足够多,是指多到保证明天都有记录吗?
如果是那样就好办了,数据没有多到那种程度!
如附件,“ ...

我不能处理你的附件,请检查附件。
数据足够多的意思是,如果你要得到2013-1-1至2013-12-31的连续日期,数据库中表的数据需要达到356条无重复数据。对这个要使用的表是没有太多限制的,只需要记录条数够(不重复),不管字段有多少,是什么字段。
 楼主| 发表于 2013-5-31 17:56:11 | 显示全部楼层
cgsilicone 发表于 2013-5-31 15:37
我不能处理你的附件,请检查附件。
数据足够多的意思是,如果你要得到2013-1-1至2013-12-31的连续日期, ...


达不到你说的数据量,就像自动编号被删了一样,不连续

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-6-1 10:45:54 | 显示全部楼层
本帖最后由 cgsilicone 于 2013-6-1 11:49 编辑
aslxt 发表于 2013-5-31 17:56
达不到你说的数据量,就像自动编号被删了一样,不连续

我没有讲清思路,请看看附件,很容易实现,效率也高。
表中数据的多少,决定了查询“第2步查询2”中“union” 的多少。数据够多,就不用“union“。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2013-6-1 22:26:53 | 显示全部楼层
本帖最后由 netguestcn 于 2013-6-2 08:12 编辑

供参考:
1、建一临时表:日期表
2、利用自定义函数将营业起止日期间的所有日期追加到“日期表”
3、生成查询:无营业额日期
4、利用联合查询得到最终结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2021-4-17 23:22 , Processed in 0.078348 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表