在宏生成器的条件中访问 2013 主键

Access 2013 primary key in where condition of macro builder

我已经在网上和这个网站上进行了搜索,但没有看到我的特定问题的答案。我想根据当前记录生成一个报告(简单),但以主键作为 Where 条件(不太容易)。如果可能的话,我希望使用宏生成器并避免 VBA。

在宏生成器中,我可以通过在 Where 条件中输入“[First Name]=[Reports]![Contracts]![First Name]”轻松完成此操作。 'First Name' 只是我的主 table 和报告中的常规字段。但是,客户名称很容易更改,所以我希望我可以使用主键“Id”,因为这应该是一个更可靠且不变的值。但是如果我尝试使用“[Id]=[Reports]![Contracts]![Id]”,我会得到整个 'Enter a Parameter' 对话框(即使我输入了 Id 值,它也只会输出每条记录)。

为什么这适用于 First Name 字段而不适用于 Id 字段?是因为 Access 不喜欢将主键用于 Where 条件吗?如果我使用表达式生成器,Access 将识别出我的报告中存在的 Id 字段,并且(因此,我认为)可用于此目的。我假设我在等号左边遗漏了一些东西?我试过我。和我!在括号之前和里面,但什么也没有。我也试过像“[Tables]![Main]![Id]=[Reports]![Contracts]![Id]”和“[Main]![Id]=[Reports]![Contracts]![Id]”这样的东西。

您可以尝试创建一个临时变量并将其传递给打开报告操作。

例如,假设您希望在用户单击数据表视图中记录的字段 'First Name' 时打开该记录的报表。您的 On Click 嵌入式宏将是:

SetTempVar
    Name tmpID
    Expression = [Id]
OpenReport
    Report Name Contracts
    View Report
    Filter Name
    Where Condition = [Id]=[TempVars]![tmpID]
    Window Mode Dialog
RemoveTempVar
    Name tmpID