MSAccess: выбор одной строки из отношения один ко многим - PullRequest
0 голосов
/ 18 февраля 2012

В MS Access 2010 у меня есть TableA, связанный один-ко-многим с TableB, и TableB связанный один-ко-многим с TableC. TableC имеет одно числовое поле и одно поле даты (в дополнение к полю поиска).

Источник данных FormA - это запрос выбора, который объединяет TableA и TableB. Я хочу добавить одно дополнительное поле только для чтения в FormA, которое содержит числовое поле из TableC из строки с самой последней датой.

Какой лучший способ сделать это? Должен ли я создать поле в TableB и создать запрос на обновление (или макрос?), Который заполняет этот столбец перед выполнением запроса на соединение?

Спасибо.

1 Ответ

0 голосов
/ 19 февраля 2012

Это форма, и вам требуется только чтение, поэтому 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...