【问题标题】:Getting the first and last dates in a month获取一个月内的第一个和最后一个日期
【发布时间】:2013-06-23 20:48:10
【问题描述】:

我有两个组合框,可让用户选择日期和年份。我想要做的是把它翻译成我在访问中的查询,这需要一个[开始日期]和一个[结束日期]参数。

I.E.用户在组合框中选择“May”和“2013”​​

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

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

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

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

【问题讨论】:

  • 您的月份组合框是否包含“Jan”、“Feb”、“Mar”等?

标签: vba ms-access


【解决方案1】:

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

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

将组合框的Bound Column 设置为1,使其.Value 是月份编号,但通过将第一列的宽度设置为零来仅显示月份名称(隐藏数字):

Column Widths: 0";0.75"

【讨论】:

  • +1。组合框/列表框控件中的多个列非常有用。只需隐藏索引值/等以及您不希望用户看到的其他内容。
  • 我们可以从Combobox.ListIndex 获得这个号码,而不需要额外的列。但是它是零索引的,所以我们需要添加 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)

当您有第一个日期时,您可以通过添加一个月然后返回一天来计算第二个日期(一个月中的最后一天)。

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2021-03-22
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多