如何在Access 2010表单上显示“相关数据”

时间:2013-01-28 14:00:18

标签: ms-access ms-access-2010

在Access应用程序的表单上,我有一对级联组合框:一个未绑定(Source)和一个Bound(信息,绑定到长InformationID)。 Source用于缩小Information中可用的选项范围,这是一个必填字段。表格上还有一个必填字段:标题。

为确保用户对组合做出正确的选择,并在创建后查看每条记录时使用,我需要在表单上显示与每个组合中当前所选值相关的只读信息。这包括一些富文本备忘录字段。此信息不是表单记录源的一部分(因为它包含它会使记录集不可更新,更不用说影响性能,因为其中可能有很多的富文本备忘录)。用户可以双击这些有限大小的只读备忘录字段之一,弹出一个弹出窗体,一次显示更多文本。

我首先尝试定义组合以包含多个隐藏列,其中包含必要的数据,并在表单上的只读字段中的公式中使用这些隐藏列。这截断了富文本备忘录字段。 NO-GO。

然后我尝试使用链接到组合的子表单(没有边框,因此它们看起来像表单的一部分)来显示数据。这有效,但有副作用,如果用户点击子表单内的字段,他们可能会收到一条消息,告诉他们主表单上的另一个必填字段尚未完成(因为将焦点移动到子表单尝试保存主表单)。但是,如果他们点击主窗体中的其他字段,则在相同的情况下它们不会得到相同的错误。不一致,可能会让用户疯狂(这让我在测试过程中疯狂)。再一次,禁止。

是否有另一种技术可以让我显示完整的富文本字段但避免子表单的缺点?

2 个答案:

答案 0 :(得分:1)

听起来您希望用户查看但不能编辑关联的富文本提示内容。在“信息”组合框的“更新后”事件中,使用DLookup()检索备注字段内容并将该富文本加载到文本框中。

假设包含备注字段的表中也存在InformationID,并且是数字数据类型......

Me.txtDetails = DLookup("memo_field", "table_name", _
    "InformationID = " & Me.cboInformation)

如果InformationID是文字,请在DLookup表达式的最后一段添加引号。

    "InformationID = '" & Me.cboInformation & "'")

您可以在表单的On Current事件中执行相同的操作,以便用户在记录之间导航时可以看到这些详细信息。

答案 1 :(得分:0)

我终于采用了https://stackoverflow.com/a/14566357/1943174给出的答案的变体。 我没有编写表单的On Current事件和Information组合框的After Update事件来更新文本字段,而是将文本字段创建为计算字段,控制源设置为

=IIf(IsNull([Information]),"",DLookup("memo_field","table_name","[InformationID] = " & [Information]))

只要记录更改或信息更新(或撤消),该字段就会更新。