Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No76527.ランダムにレコードを抽出させる方法について

タイトルランダムにレコードを抽出させる方法について
記事No: 76527
投稿日: 2006/04/20(Thu) 14:30
投稿者: ハルウララ
OS:Windows2000
Access Version:97
初心者でありながら、英単語を覚えるためAccessを利用しようといざ作り始めました。
予め入力した単語をフォーム上の操作でランダムに次々表示させようという考えでした。
しかし、クエリーでレコードをランダムに並べ替えようとして、方法が分からず、つまづきました。
どなたかご親切な方がいらっしゃいましたら、クエリーでレコードをランダムに並び替える方法を
ぜひともアドバイスお願いします。

なおテーブルのフィールドは以下の通りです。
@a@(オートナンバー型)
A英単語 (テキスト型)
B意味 (メモ型)

タイトルRe: 過去ログ「ランダム」
記事No: 76528
投稿日: 2006/04/20(Thu) 14:36
投稿者: たん
質問を即上げる前に、自身の質問の中のキーワードで検索すべきでしょう。

過去ログ「ランダム」
http://www.accessclub.jp/search1/namazu.cgi?query=%83%89%83%93%83_%83%80&submit=%8C%9F%8D%F5

尚、ご希望の事をやるには、VBAが必須なので、VBAの知識がなければ、
その知識を有するまで、やるべきではないでしょう。

タイトルRe: ランダムにレコードを抽出させる方法について
記事No: 76530
投稿日: 2006/04/20(Thu) 15:03
投稿者: kitasue
> どなたかご親切な方がいらっしゃいましたら、クエリーでレコードをランダムに並び替える方法を
 クエリでレコードをランダムに並び替えるだけなら、
Rnd([No])
というフィールドを新規に作って、
そのフィールドの昇順か降順で並び替えればよいのでは。
 ただ、この[No]というフィールド名は変えたほうがよいでしょう。
 Yes/NoのNoと紛らわしいので。

タイトルRe^2: ランダムにレコードを抽出させる方法について
記事No: 76535
投稿日: 2006/04/20(Thu) 15:35
投稿者: たん
> Rnd([No])

だけでは残念ながら、無理かと。

http://www.accessclub.jp/bbs3/0134/superbeg46512.html
(前回提示の中からピックアップ。hatenaさんの記述を確認。)

>  ただ、この[No]というフィールド名は変えたほうがよいでしょう。
>  Yes/NoのNoと紛らわしいので。

同意。ちなみに、予約語及び名前付け規則に沿っていない名前は
この機会に全て直すべきでしょう。

タイトルRe^2: ランダムにレコードを抽出させる方法について
記事No: 76538
投稿日: 2006/04/20(Thu) 15:58
投稿者: ハルウララ
たん様、kitasue様 お返事誠にありがとうございます。


>  クエリでレコードをランダムに並び替えるだけなら、
> Rnd([No])
> というフィールドを新規に作って、
> そのフィールドの昇順か降順で並び替えればよいのでは。


早速、Rnd([No])というフィールドを入力してみたところ「式1: Rnd([No])」
との表示に・・・。
ちゃんとフォームを開ける度にレコードの順番も変わっていました。
kitasue様ありがとうございました!何とか当初の目的が果たせそうです。
あとフィールド名も「ナンバー」に変更しました。

タイトルRe^3: ランダムにレコードを抽出させる方法について
記事No: 76543
投稿日: 2006/04/20(Thu) 16:28
投稿者: kitasue
 あ〜、ごめんなさい!
 たんさんやhatenaさんのおっしゃる通りですので、
撤回します!
>ちゃんとフォームを開ける度にレコードの順番も変わっていました。
 でも、mdbを閉じて、再度開くと、同じ順番になりますよね?
 本当に、すみません!

closeフラグは修正で外せます。

タイトルRe^4: ランダムにレコードを抽出させる方法について
記事No: 76546
投稿日: 2006/04/20(Thu) 17:24
投稿者: ハルウララ
>  でも、mdbを閉じて、再度開くと、同じ順番になりますよね?
kitasue様、かえって何度もご連絡いただき申し訳ありません。
確かにmdbを閉じたところ、閉じる前と同じ順番になっておりました。
フォームを閉じて再び開いた時、順番は変わるのですが、一旦mdbを閉じ
再度開くと閉じる前の最初のレコード順になっています。

> closeフラグは修正で外せます。
この修正はどのように行うのでしょうか。
やはりVBAの知識が必要でしょうか。

タイトルRe^5: ランダムにレコードを抽出させる方法について
記事No: 76547
投稿日: 2006/04/20(Thu) 17:49
投稿者: kitasue
>> closeフラグは修正で外せます。
>この修正はどのように行うのでしょうか。
 ブラウザの下のほうに、
処理、記事No、パスワード
が並んでますよね。そこに記事Noを指定して、パスワードを入力すると、
記事の修正ができますから、解決マークのチェックを消せばOKです。

タイトルRe^5: ランダムにレコードを抽出させる方法について
記事No: 76548
投稿日: 2006/04/20(Thu) 18:08
投稿者: 水上
> やはりVBAの知識が必要でしょうか。
Rnd()
Time()
Asc()
オートナンバー
などを適当にくみあわせればできるかもしれません
Rnd()はいらないかな?
いいかげんかな?
もともとRndのないところでも乱数発生させてたわたし
20ぐらいのとき わすれましたけど。

タイトルRe^6: ランダムにレコードを抽出させる方法について
記事No: 76549
投稿日: 2006/04/20(Thu) 18:22
投稿者: kitasue
 VBAを使わない方法を考えてみました。

 マクロ「M_Rnd」を次の内容で登録します。
アクション「プロシージャの実行」
プロシージャ名「=Rnd()」

 次にマクロ「AutoExec」を次の内容で登録します。
アクション「マクロの実行」
マクロ名「M_Rnd」
実行回数「=Right(Time()/1,2)」

 以上で、mdbを開くとき、Time関数から得られた後ろ2桁の回数分だけRnd()を実行します。

 クエリを開くと、そのあとのRnd()からになります。
 ですからパターンは、90パターン程しかありませんが…

[次頁]

 

ページの先頭へ 前ページへ戻る