获取一个月内的第一个和最后一个日期

时间:2013-06-26 15:48:05

标签: vba ms-access

我有两个组合框,可让用户选择日期和年份。我想要做的是在访问中将其转换为我的查询,这需要[开始日期]和[结束日期]参数。

即。用户在组合框中选择“May”和“2013”​​

我的查询是在[开始日期]和[结束日期]之间设置的,所以我想将这个月份和年份选择从组合框转换为包含MM的两个字符串(startdate和enddate,然后将它们作为命令参数传递) / DD / YYYY,MM / DD / YYYY。获取两个字符串并获得第一个有效日和最后一个有效日的最佳方法是什么。我有:

FirstDayInMonth = DateSerial( _
 Year(Date), Month(Date), 1)

LastDayInMonth = DateSerial( _
 Year(dtmDate), Month(dtmDate) + 1, 0)

但我需要将字符串切换为日期格式,以便仅使用月份(“MAY”)和年份(“2013”​​)返回所选月份的第一天/最后一天?我错过了一些比较简单的东西吗?

2 个答案:

答案 0 :(得分:4)

使“月”组合框有两列(Column Count属性为2):

 1 | Jan
 2 | Feb
...
12 | Dec

将组合框的Bound Column设置为1,使其.Value为月份编号,但只显示月份名称(隐藏数字),方法是设置第一个列为零:

Column Widths: 0";0.75"

答案 1 :(得分:2)

那么,你是否从组合框中得到月份和年份(整数或长整数,而不是日期)?
然后试试这个:

Dim m As Long
Dim y As Long
Dim d_from As Date
Dim d_until As Date

m = CLng("01") ' get these two from your comboboxes
y = CLng("2013") 
d_from = DateSerial(y, m, 1)

d_until = DateAdd("m", 1, d_from)
d_until = DateAdd("d", -1, d_until)

如果您有第一个日期,则计算第二个日期(月中的最后一天),加上一个月,然后再过一天。