• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:access2003でデータをランダムに抽出したいです。)

Access2003でデータをランダムに抽出する方法とは?

このQ&Aのポイント
  • Access2003でデータをランダムに抽出する方法について教えてください。
  • データをランダムに抽出して、一度抽出したものは10回までは抽出されないツールの作り方を知りたいです。
  • また、Access VBAでのプログラム作成とレポートでの印刷が可能かも教えてください。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

1つの実現案になります。 使用するテーブルは以下の2つ(構成等は案です) ・俳句の入っているテーブル テーブル名:T俳句 フィールド名:an, rd, 俳句 フィールドの型:an(オートナンバ),rd(単精度浮動小数点型),俳句(テキスト型) ・1日5件選んだテーブル(10日分格納) テーブル名:T除外 フィールド名:an, 日付 フィールドの型:an(長整数),日付(日付型) 処理の流れ:概要) 1)その日に処理したかは T除外の日付で判別 2)T除外の日付で10日前のものがあったら、日付をもとに削除 3)乱数を発生させ、T俳句のrdを書き換える 4)T除外にある an 以外のT俳句のrd昇順のTOP 5の an を実施した日付とともにT除外へ登録 5)印刷等はT除外の日付をもとに an とT俳句の an を結び付けて・・・ 記述例) SQLを記述しますが、クエリからでも VBA のExecute からでも処理しやすい方で、、 1)DLookup("日付","T除外","日付 = Date()") Is Null で、今日は処理していない 2)今日より10日以前のものがあるか判別するなら DLookup("日付","T除外","日付 < Date()-10") Is Null そのまま削除するのなら、 DELETE * FROM T除外 WHERE ((T除外.日付) < Date()-10); 3)乱数の書き込み UPDATE T俳句 SET T俳句.rd = Rnd([an]); 4)T除外にある an 以外で、T俳句 rd 昇順の TOP 5 をT除外に追加 INSERT INTO T除外 ( an, 日付 ) SELECT TOP 5 T俳句.an, Date() AS 日付 FROM T俳句 LEFT JOIN T除外 ON T俳句.an = T除外.an WHERE ((T除外.an) Is Null) ORDER BY T俳句.rd; 5)今日選んだ5件の俳句部分を抽出 SELECT T俳句.俳句 FROM T俳句 INNER JOIN T除外 ON T俳句.an = T除外.an WHERE ((T除外.日付) = Date()); これらを組み合わせていけば、そこそこのものができると思います。 ※ シートに入れる、っていうのがわかりませんでした。

ping913
質問者

お礼

お礼が遅くなってしまい、申し訳ありません。 丁寧なご説明ありがとうございました。

関連するQ&A