除非单击,否则MS Access报告未绑定DLookup不会更新

时间:2015-04-23 17:22:37

标签: access-vba ms-access-2013

我必须在Access 2013报表中使用未绑定的文本框,因为虽然我要查找的数据位于相关表中,但子表中可能没有匹配的记录。

基本上,我有一个主库存表,它有一个主键和一个唯一索引“Stock#”。此表包含与该单个库存号相关的数据,还有另外5个相关表,其中包含与该库存号相关的其他数据,例如成本,销售额,位置等。在主表中创建库存记录时,子记录在4个表中创建,包含一些基本的初始数据,并且它们都以一对一的关系锁定。尽管我使用了未绑定的表单,但我选择构建这样的数据以避免记录锁定冲突,并提高多用户环境中的性能。

这是我的问题:

我正在设计一个库存快照报告,它包含来自所有五个表的数据。其中一个具有一对一关系的表不会与库存记录一起创建。它来自外部源(键跟踪机)。问题是,有时库存号可能存在​​于数据库中,但它尚未进入关键机器。在大多数情况下,除了设计绑定报告外,没什么大不了的。我的绑定报告的查询选择所有库存表中的数据,包括关键数据表。假设我在库存表中有200个库存号,其他4个表中有200个相同的记录。但是,关键数据表只有195条记录。这意味着报告将仅选择库存号和相关数据,其中所有五个表(195条记录)中都存在完全匹配。我的解决方案是在未绑定的文本框中创建一个dlookup,使用以下语法:

=DLookUp("[KeyTrakExport]![CurrentlyOutTo]","[KeyTrakExport]","    [KeyTrakExport]![Stock#]= " & Chr(34) & [Reports]![TestInvtReport]![Stock#] & Chr(34))

我尝试了很多这方面的变种,无论是否有Chr(34),并且至少有5种工作方法可以查找关键数据。但问题是,让它实际检索值(如果有的话)的唯一方法是单击报表上的每个键数据文本框。我尝试了许多不同的requery / update方法,并使用VBA检索值并将其植入文本框中。这些都不能正常工作,如果有的话,它们会为报告中的所有记录分配相同的值。我知道Access在很多方面受到限制,但在转换到真正的开发之前我必须使用它几个月。有没有人知道如何在报告加载后立即更新此dlookup函数,并且每当刷新它时?或者我应该废弃它并使用像报告一样设计的连续形式?

谢谢,

马特

1 个答案:

答案 0 :(得分:0)

我实际上刚刚找到了解决方案。我之前已经尝试过这种语法,但无济于事,但在安装了最新的Office更新并重新启动后,这种方法很有效。

=DLookUp("[CurrentlyOutTo]","[KeyTrakExport]","[Stock#]=  '" & [Reports]!    [TestInvtReport]![Stock#] & "'")