Microsoft Access VBA中的DateAdd函数

时间:2016-09-20 21:55:23

标签: vba ms-access access-vba dateadd

我正在尝试将DateAdd功能实现到我的Microsoft Access 2010表单中。我有一个表单,当用户输入日期(属性名称为“txtStartDate”,然后我希望将来不同部分的输出为18个日历日(属性名称为“textEndDate”)。

我知道格式是

library(dplyr)
df1 %>% left_join(df2, by="i1") %>% group_by(i1) %>% slice(loci[1])
# Source: local data frame [5 x 4]
# Groups: i1 [5]
# 
#      i1  loci     x     y
#   <dbl> <dbl> <dbl> <dbl>
# 1     0     2   434   545
# 2     1     2   422  4565
# 3     2     3     2   545
# 4     3     2   234    35
# 5     4     3    34    45

library(data.table)
setDT(df1)
setDT(df2)
df1[df2, on="i1"][,.SD[loci[1]], by=i1]
#    i1 loci   x    y
# 1:  0    2 434  545
# 2:  1    2 422 4565
# 3:  2    3   2  545
# 4:  3    2 234   35
# 5:  4    3  34   45

但如何在VBA代码中编写它来实现?

5 个答案:

答案 0 :(得分:1)

听起来您希望在更新后进行设置。因此,请使用开始日期的 AfterUpdate 事件:

Private Sub txtStartDate_AfterUpdate()

    Dim EndDate As Variant

    If IsDate(Me!txtStartDate.Value) Then
       EndDate = DateAdd("d", 18, Me!txtStartDate.Value)
    Else
       EndDate = Null
    End If
    Me!txtEndDate.Value = EndDate

End Sub

答案 1 :(得分:0)

希望这有点帮助,原始日期和新日期的两个声明。然后Msgbox在不同的行显示它们:

sub addingDate()
Dim txtStartDate As Date
Dim txtEndDate As Date
    txtStartDate = Now 'Or wherever you get this info from
    txtEndDate = DateAdd("d", 18, txtStartDate)
    MsgBox (txtStartDate & vbNewLine & txtEndDate)
End Sub

答案 2 :(得分:0)

听起来您正在隐式将文本框值从String转换为Date。您可能需要添加一些检查,例如:

private void dataGridViewCargo_SelectionChanged(object sender, EventArgs e)
{
    var row = dataGridViewCargo.CurrentRow;
    cargoDisplayMessageIdTextBox.Text = 
        row.Cells["iDDataGridViewTextBoxColumn"].Value.ToString();
    cargoDisplaySubjectTextBox.Text =
        row .Cells["subjectDataGridViewTextBoxColumn"].Value.ToString();
}

如果您的代码在具有美国/英语/日语日期的不同区域日期设置的系统上运行,您将特别注意这种行为。 可能需要在控件本身上使用日期选择器或其他日期验证。

答案 3 :(得分:0)

您不需要VBA来执行此操作,只需将表达式作为其他文本框的 ControlSource

=DateAdd("d", 18, [txtStartDate])

答案 4 :(得分:0)

试试这个:

= DateAdd("d", 18, cdate(txtStartDate)