MSACCESS: selezione di una riga da una relazione da uno a molti
-
27-10-2019 - |
Domanda
In MS Access 2010, ho una tablea correlata a una to-to-many a TableB e TableB relativa a una to-to-many a Tablec. Tablec ha un campo numerico e un campo di data (oltre al campo di ricerca).
Forma's DataSource è una query selezionata che si unisce a Tablea e TableB. Voglio aggiungere un campo di sola lettura aggiuntivo a forma che contiene il campo numerico da Tablec dalla riga con la data più recente.
Qual è il modo migliore per farlo? Dovrei creare un campo in tableb e creare una query di aggiornamento (o macro?) Che popola quella colonna prima della query di join in esecuzione?
Grazie.
Soluzione
Questo è un modulo e hai bisogno di lettura solo, quindi Dlookup dovrebbe adattarsi: http://support.microsoft.com/kb/208786
= DLookup("[numeric field]", "TableC", "[LookupKey] = " & [PK] & " AND TheDate = DMax(""TheDate"", ""TableC"", ""LookupKey=" & [PK] & """)")
Ci sono due problemi con la modifica dell'OP, il primo è che lo suggerisce date
è un nome di campo accettabile, è una parola riservata e non dovrebbe essere utilizzata. In secondo luogo, suggerisce che le parentesi quadrate sono necessarie a Dlookup, non lo sono.
In alternativa:
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]