Enable/Disable 基于 parent 中记录属性的表单列表字段 table

Enable/Disable Form List Field based on record attribute in parent table

我的数据库中有两个表:Add_New_Initiative 和 Add_Risk

Add_New_Initiative 和 Add_Risk 之间存在 1:M 关系。

通过 Add_Risk 表单添加风险时,用户必须从下拉组合框中 select 相关 Initiative_ID。

基于 selection,Add_Risk 表格中标题为 Risk_Area 的值列表将被启用或禁用。要确定这一点,我需要按 Initiative_ID 查找记录,并查看用户之前 select 对 Add_New_Initiative 表格中标题为 Tier 的值列表的回答。

从逻辑上讲,我认为结果是这样的:

  1. 如果 Add_Risk 表单上的 Initiative_ID 为 Null,则 Risk_Area 将被禁用。
  2. 如果 Add_Risk 表单上的 Initiative_ID 不为空,则在 Add_New_Initiative 表单上查找 Tier 值,以使用用户 [=] 的 Initiative_ID 记录35=] 在 Add_Risk 表格上。
  3. 如果 Tier 为 1 或 2,则 Risk_Area 将在 Add_Risk 表单上启用。
  4. 如果 Tier 为 3 或 Null,则 Risk_Area 将在 Add_Risk 表单上禁用。

在 VBA 中编码时,我将如何引用存储在另一个 Form/Table 中的 Tier 值?

根据问题,您在其他表中遇到了 looking/referencing 数据问题。
执行 dlookup 以在 table/query 中查找特定值。

dim VarTier as integer
VarTier = nz(Dlookup("Tier","Add_New_Initiative","Initiative_ID=" & me.Initiative_ID.value),-1)

Dlookup 将 return:

  1. 如果没有找到符合条件的记录,则为空,由 nz 处理,从而使 VarTier 为 -1,因此您可以使用 if 语句处理它。
  2. 如果找到 Initiative_ID 等于 Add_Risk 形式的记录,它将 return 该记录的 Tier 值。

然后您必须将查找结果与简单的 if 进行比较。

If Vartier = 1 or VarTier = 2 then
    me.list.enabled = true
End If

在此处了解有关 Dlookup 的更多信息。
https://msdn.microsoft.com/es-es/library/office/ff834404(v=office.15).aspx