2012-02-18 8 views
0

MS Access 2010では、TableAにTableAに関連する一対多があり、TableBにはTableBに関連する一対多があります。 TableCには、(ルックアップフィールドに加えて)1つの数値フィールドと1つの日付フィールドがあります。MSAccess:1対1の関係から1行を選択する

FormAのデータソースは、TableAとTableBを結合する選択クエリです。最新の日付の行からTableCの数値フィールドを含むFormAに追加の読み取り専用フィールドを1つ追加します。

これを行う最善の方法は何ですか? TableBにフィールドを作成し、結合クエリを実行する前にその列にデータを挿入する更新クエリ(またはマクロ?)を作成する必要がありますか?

ありがとうございました。

答えて

0

これはフォームで、あなただけ読ん必要、の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(" [数値フィールド] "、"テーブルC "、[[テーブル]] [ルックアップキー] ="&[PK]) ' です。 TableCの別のフィールド(日付)に基づいて結果を制限する方法を教えてください。 – ZachB

+0

DMaxと組み合わせることができます(http://office.microsoft.com/en-gb/access-help/dmin-dmax-functions-HA001228826.aspx) – Fionnuala

+0

ありがとうございます。 – ZachB