MSAccess:从一对多关系中选择一行

问题描述:

在MS Access 2010中,TableA与TableB相关的一对多和TableB与TableC相关的一对多。 TableC有一个数字字段和一个日期字段(除查找字段外)。MSAccess:从一对多关系中选择一行

FormA的数据源是连接TableA和TableB的选择查询。我想将一个额外的只读字段添加到FormA中,该字段包含来自最近日期行的TableC中的数字字段。

要做到这一点,最好的方法是什么?我应该在TableB中创建一个字段并创建一个在联接查询运行之前填充该列的更新查询(或宏?)?

谢谢。

这是一个形式,你只需要阅读,所以使用DLookup应满足:http://support.microsoft.com/kb/208786

= DLookup("[numeric field]", "TableC", "[LookupKey] = " & [PK] & " AND TheDate = DMax(""TheDate"", ""TableC"", ""LookupKey=" & [PK] & """)") 

有两个问题由OP编辑,首先在于它暗示date是一个可接受的场名称,它是一个保留字,不应使用。其次,它表明DlookUp需要方括号,但它们不是。

或者:

Dim rs As DAO.Recordset 

s = "SELECT TOP 1 c.[numeric field] " _ 
    & "FROM TableC c " _ 
    & "WHERE c.LookupKey= " & Me.[PK] 
    & "ORDER BY c.TheDate DESC" 

set rs = currentDB.Openrecordset(s) 
Me.SomeControl = rs![numeric field] 
+0

谢谢。但我不清楚如何使用此方法选择与最近日期对应的数字字段。现在我有 '= DLookUp(“[numeric field]”,“TableC”,“[TableC]![LookupKey] =”&[PK])' 它返回多个值。如何根据TableC中的另一个字段(日期)限制结果? – ZachB 2012-02-18 23:42:50

+0

您可以将它与DMax(http://office.microsoft.com/en-gb/access-help/dmin-dmax-functions-HA001228826.aspx) – Fionnuala 2012-02-18 23:54:50

+0

很好,谢谢。 – ZachB 2012-02-19 00:24:57