我正在尝试将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代码中编写它来实现?
答案 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)