プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

クエリで乱数を発生させるフィールドを作り


そのフィールドで並べ変えてTOP10を抽出とすればいいです

ただし、単純にRND関数を使っても
RND関数は引数を取りませんから、
Accessはクエリの演算処理の最適化に於いて
レコードとは関係ない関数とみなし
一度評価した値を全てのレコードに摘要します
その結果全レコードで同じ値になってしまいます

これを防ぐには下のようなユーザー関数を作り
あたかもレコードのあるフィールドに関係あるかのように見せて
レコード毎に評価させるという手を使います

Public Function myRND(anyField)
Randomize
myRND = Rnd
End Function

この関数をクエリで使い、引数にはフィールドの中のどれかを渡します
渡すフィールドは関数の中で使用するわけではありませんから
何でもいいです
    • good
    • 2
この回答へのお礼

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

お礼日時:2006/04/19 22:26

ACCESSをお使いでしたら、


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

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

お礼日時:2006/04/19 22:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す