Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access db、VBA窗体动态默认值启用条件_Ms Access_Vba - Fatal编程技术网

Ms access MS Access db、VBA窗体动态默认值启用条件

Ms access MS Access db、VBA窗体动态默认值启用条件,ms-access,vba,Ms Access,Vba,我正在使用下面的表单,不确定是否可以实现此逻辑: 我使用这个表达式作为默认值,但在进行评估时,它似乎并不关心ExpeditDyn中的值 =IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAdd("d",30,Date())) 理想情况下,我想翻转Exp.Date默认点击加速框,这在VB中是可用的。尝试了DLookUp(D-->动态???)但不起作用 DLookUp(IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAd

我正在使用下面的表单,不确定是否可以实现此逻辑:

我使用这个表达式作为默认值,但在进行评估时,它似乎并不关心ExpeditDyn中的值

=IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAdd("d",30,Date()))
理想情况下,我想翻转Exp.Date默认点击加速框,这在VB中是可用的。尝试了DLookUp(D-->动态???)但不起作用

DLookUp(IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAdd("d",30,Date())))
德克萨斯州
Dai

DefaultValue仅触发一次-当任何字段的输入首次启动记录时。如果计算基于加急值,则DLookup不应工作,因为记录尚未提交到表中。记录在以下时间提交:1。关闭表/查询/表单或2。移动到另一个记录或3。运行要保存的代码。如果希望基于加速值以编程方式修改DeadlineDate值,则代码需要处于“加速后更新”事件中,并放弃DefaultValue方法


我!DeadlineDate=IIf(Me!ExpYN,DateAdd(“h”,72,Now()),DateAdd(“d”,30,Now())
使用
IIf
DLookup
在默认值中引用同一条记录上的另一个字段不会让您有任何结果,因为Access只会询问默认值在首次启动新记录时填写什么值。这意味着它将基于其他字段的默认值,因此不会响应任何用户输入

我建议您将
StartDate
DeadlineDate
的默认值保持简单,类似于您现在的状态:

StartDate
的默认值:
Now()

DeadlineDate
的默认值:
DateAdd(“d”,30,Now())

然后在加急更改时在代码中更改它。有几种方法可以做到这一点,我可能会把它放在复选框的“更新前”事件中,这样它就可以运行而不必移出记录。如果您希望以后能够更改记录,也可以基于StartDate字段。您可以使用Access的“宏生成器”进行构建,但在此处更容易显示VBA:

If ExpYN Then
    DeadlineDate = DateAdd("h", 72, StartDate)
Else
    DeadlineDate = DateAdd("d", 30, StartDate)
End If

如果您希望考察过程基于单击按钮的时刻而不是
StartDate
中的日期时间数据,只需将
StartDate
(或该字段的任何名称)更改为
Now()

Access将知道复选框的名称是否为“加急”。实际上,在if条件下,您必须使用复选框的名称。您所说的“正在运行”是什么意思?只需在复选框的单击事件中使用您的基本代码行-它将“动态”更改Exp_日期,非常感谢Harun和dbM,是的,它现在可以使用默认的简单表达式:=IIf([ExpYN]=True,DateAdd(“h”,72,now()),DateAdd(“d”,30,Date()))。我现在修改了我的问题,一旦填写了默认值,我就不能修改它,单击“加急”,不确定这是否可用。。默认值可能只工作一次(?)是的,@MikeS,默认值只触发一次。您可以在每次选中或取消选中复选框时更新它:下面的两个答案都说明了您可以如何做到这一点。如果其中一人回答了问题,您是否可以接受其中一人,以便问题显示为已解决?
If ExpYN Then
    DeadlineDate = DateAdd("h", 72, StartDate)
Else
    DeadlineDate = DateAdd("d", 30, StartDate)
End If