• ベストアンサー

テーブル内の最新情報を抜き出したい

Accessで ・管理NOマスタ ・履歴情報マスタ の2種類のテーブルがあり、履歴テーブルでは、管理NOごとに変更のあった日付及び内容を追加していっています。 このうち、カードNOを軸として、履歴内のカードNOごとの最新更新日だけのレコード情報を抽出することは、可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

カードNOごとに更新日の新しい順で順位をつけ 1番のみを抽出すればいいです 順位:DCount("*","履歴情報マスタ","カードNO=" & カードNO & " and 更新日<=#" & 更新日 & "#") このフィールドの抽出条件欄に =1 蛇足 マスタというのは雛形、元になるものという意味で マスタテーブルは半固定的な基本データを集めたもののことです 履歴はそれとは対置する活動記録(トラン)ですから >履歴情報マスタ このネーミングはおかしいですね

tettinn
質問者

お礼

CHRONOS_0さん 早々の回答ありがとうござます。 上記の方法で一度試してみます。 >蛇足 マスタというのは雛形、元になるものという意味で マスタテーブルは半固定的な基本データを集めたもののことです 履歴はそれとは対置する活動記録(トラン)ですから >履歴情報マスタ このネーミングはおかしいですね 確かにおかしいですね(笑 とりあえずテーブル訂正しておきます。

その他の回答 (1)

noname#140971
noname#140971
回答No.1

<管理番号> ID____管理番号 1_____100 2_____200 ID_____管理番号_ID___更新日 1______1__________________2007/02/10 2______1__________________2007/02/20 3______2__________________2007/03/01 [イミディエイト] ? DBSelects("SELECT TOP 2 ID, 更新日 FROM 履歴情報 WHERE 管理番号_ID=(SELECT ID FROM 管理番号 WHERE 管理番号=100) ORDER BY 更新日") 1;2007/02/10;2;2007/02/20; ? DBSelects("SELECT TOP 2 ID, 更新日 FROM 履歴情報 WHERE 管理番号_ID=(SELECT ID FROM 管理番号 WHERE 管理番号=100) ORDER BY 更新日 DESC") 2;2007/02/20;1;2007/02/10; こういう感じで抽出できるかと思います。 TOP 2 を TOP 1 にすれば最新のみに限定できるかと・・・。 なお、DBSelects関数は、この回答のために自作したものです。

tettinn
質問者

お礼

Husky2007さん 早々の回答ありがとうございます。 わざわざ関数まで自作していただき、感謝です。 その関数を早速使って試してみます。 ご丁寧にありがとうございました。

関連するQ&A