![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000--VBAの小屋>俳句をひねろう |
さて・・・。
今日は唐突ですが、俳句でも作ってみようかと思います。
といっても、Accessに俳句を作ることはできませんから、あらかじめ用意した語句を組み合わせて、ひとつの「句」を作るためのプロシージャを作ってみようと思います。
テーブルの中からお目当てのレコードを探し当てる方法はいろいろありますが、今日はそのうちのひとつ、Findという命令を使っていろいろやってみようと思います。
また、変数の扱いなどについても少しおさらいしていきますので、ぜひ挑戦してみてくださいね。
まずは準備から・・・。
適当な句を作るといっても、コンピュータにはそんなことはできませんから、あらかじめいろいろな言葉を教えておいてやらなければなりません。
俳句に使えそうな言葉を、あらかじめいっぱい入力しておくためのテーブルを設けます。
俳句は、5,7,5で構成されてますね。ほんとは、季語がないと俳句じゃないんですけど・・・まあ、今日は川柳もあり、ってことで、取り組みましょう。
ですんで、5文字の語句が入ったテーブルをふたつと、7文字の語句が入ったテーブルをひとつ、合計3つ用意します。
デザインはこんな感じかな・・・。
Nbrというフィールドは、語句に番号を振っておきます。これがね、このシステムの最大のポイントになるんですよ。
数値型で用意いたしましょう。
で、それぞれのテーブルに、適当な語句を7〜8個くらい、入れておきましょう。
Nbrは、続き番号を必ず入力しておきます。飛ばしちゃダメですよ。必ず、続き番号で入力してくださいね。
こんな感じですかね。
そしたら、新しくモジュールをひとつ作成し、その中にプロシージャをひとつ作ってください。
そうですねぇ・・・Subプロシージャでいいです。後で、フォームか何かの中で動くようにしましょう。
まずは、5,7,5という3つの語句を代入する変数を作っちゃいましょう。
全部テキスト型(String)です。
で、最大のポイントに差し掛かります。
「乱数」というものです。
コンピュータは、指示されたことしかやりません。自分の意志で行動しているわけではないので、「適当にいくつか選んどいて」といわれても、「何番と何番か言っていただかないと困ります」と言い返してきて何もしません。
なので、「テーブルの中から適当な語句を選びだせ」という、いわゆる意外性を狙った処理は、できないのです。
そこで・・・。
「乱数」というものを使います。これは、コンピュータの中で、適当な数字をランダムに返してくるというもので、AccessにはRndという関数が用意されてます。
これを使うと、指定された範囲内で、適当な数字をはじき出すことができます。
ちょっと試してみましょうか。
Bangouという名前の変数を一つ設けてください。型は・・・とりあえず何も宣言しなくてよいです。何も宣言しないと、Variant型という、何でもありのデータ型として扱ってくれるんでしたよね。でも、ちょっとばかりメモリを余分に食うので、あまりオススメではないんですが・・・。
で、その下で、BangouにRnd関数の値を代入するよう、指定してみましょう。
これで、この時点で、Bangouにどういう値が入っているか、調べたいんですけどね・・・どうやったら調べることができるかな。メッセージボックスとか活用してもよいですけれど、今日は「ウォッチ」という機能を使ってみましょうか。変数にどういう値が入ってくるか調べるのにとても便利な機能です。
メニューバーの[表示]→[ウォッチウィンドウ]を選ぶと、画面のどこかに「ウォッチ」という小さなウィンドウが現われます。
ついでに、同じメニューの中から「イミディエイトウィンドウ」も出してください。
わたしのは、イミディエイトウィンドウとくっついた状態になってました。別にどこに出ててもいいですよ。
で、「ウォッチウィンドウ」の中を右クリックして、ウォッチ式の編集をします。
Bangouという変数を、式の欄に指定して、OKボタンをクリックしましょう。
で、後は「どの時点でのBangouの中身を知りたいのか」という指示を出してやるんですが・・・。多分、Bangou=Rndと書いてある行で調べても、Bangouの中身はまだ空っぽだと思うんですよね。この行より下で調べないと・・・でも、まだ何も処理を作ってないから、すぐ下はEnd Subで、終わっちゃいますね。ありゃー。
じゃあ、下のように、BangouにBangouを代入するという、ちょいと無駄な処理を作っておいて、ここで調べるとしましょう。
どうするかというと・・・左端をクリックするんです。そうすると、茶色っぽい丸印がつきますよね。
ここで一旦処理が止まって、この時点のBangouの中身を知らせてくれるんです。
![]() |
![]() |
![]() |