ms-access - MS Access db,VBA 表单动态默认值条件
问题描述
我正在使用下面的表格,不确定我是否可以实现这个逻辑:
Start Date = Now();
If Expedited then Exp_Date = Start_Date + 72 hours
else Exp_Date = Start_Date + 30 days.
我将此表达式用作默认值,但看起来在评估时它并不关心 ExpeditedYN 中的值。
=IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAdd("d",30,Date()))
理想情况下,我想翻转 Exp.Date 默认单击 Expedited 框,这在 VB 中是否可用。试过 DLookUp (D --> Dynamic??) 但它不起作用
DLookUp(IIf([ExpYN]=True,DateAdd("h",72,Now()),DateAdd("d",30,Date())))
解决方案
在默认值中使用IIf
或DLookup
引用同一记录上的另一个字段不会让您有任何收获,因为 Access 只会在首次启动新记录时询问默认值要填写什么值。这意味着它将基于其他字段的默认值,因此不会响应任何用户输入。
我建议您保留两者的默认值StartDate
和DeadlineDate
简单,类似于您已经是这样:
StartDate
的默认值:Now()
DeadlineDate
的默认值:DateAdd("d",30,Now())
然后在更改 Expedited 时在代码中更改它。有几种方法可以做到这一点,我可能会将它放在复选框的更新前事件中,因此它无需移出记录即可运行。如果您以后可能希望能够更改记录,您也可以基于 StartDate 字段。您可以使用 Access 的宏生成器来构建它,但在这里向您展示 VBA 会更容易:
If ExpYN Then
DeadlineDate = DateAdd("h", 72, StartDate)
Else
DeadlineDate = DateAdd("d", 30, StartDate)
End If
如果您希望探险过程基于单击按钮的时刻而不是 中的 DateTime 数据StartDate
,只需将StartDate
(或调用该字段的任何内容)更改为Now()
.
推荐阅读
- git - 赫斯基钩子不在 Lerna monorepo 中运行
- c# - 如何自动更新 DataGridViewColumn?
- javascript - 使用 ASP.NET Razor 的 Ajax POST
- android - 如何在 RecyclerView 上使用 Firebase 存储显示多个用户的图像
- java - 接收数据时如何以图形方式更改数字?
- python - .map_diag(plt.hist,bins=30) - 对角线上没有直方图
- c# - 单击关闭按钮后,我在这一行出现 System.IO.IO.Exception 错误 'string machine_data = serialPort1.ReadTo("\u0003");'
- laravel - Laravel Echo + Websockets + 私人频道
- css - 如何使用 Bootstrap 4 和 Scss 将容器的宽度覆盖为 1440px 并使列同时响应
- android - 在 RecyclerView android 中使用 MediaPlayer 设置 ProgressBar