• ベストアンサー

ACCESSでのランダムのレコード抽出

例えば100件のレコード(100個の数字)があり(その中には重複する数字も存在します)、その中から10件をランダムに抽出する、という作業がアクセスで可能でしょうか?1

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

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

クエリで乱数を発生させるフィールドを作り そのフィールドで並べ変えてTOP10を抽出とすればいいです ただし、単純にRND関数を使っても RND関数は引数を取りませんから、 Accessはクエリの演算処理の最適化に於いて レコードとは関係ない関数とみなし 一度評価した値を全てのレコードに摘要します その結果全レコードで同じ値になってしまいます これを防ぐには下のようなユーザー関数を作り あたかもレコードのあるフィールドに関係あるかのように見せて レコード毎に評価させるという手を使います Public Function myRND(anyField) Randomize myRND = Rnd End Function この関数をクエリで使い、引数にはフィールドの中のどれかを渡します 渡すフィールドは関数の中で使用するわけではありませんから 何でもいいです

yohereon
質問者

お礼

御礼が遅くなって申し訳ありません。 おかげさまで解決しそうです。

その他の回答 (1)

  • ppmi
  • ベストアンサー率28% (40/139)
回答No.1

ACCESSをお使いでしたら、 モジュール→新規作成で 関数をつくり a = rnd() * 100 とすれば、aには0~99の数字がランダムに入って きます。 あとは工夫次第でいろいろな展開ができます。 イマイチ質問者さんのどんなことがしたいのか わからないので、具体的にいえませんが

yohereon
質問者

お礼

アドバイスありがとうございました。

関連するQ&A