<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002チョ〜入門部屋>ということで百人一首
  1 2 3 4 5 6 7 8 9



ということで百人一首 9

■仕上げ

乱数発生させるクエリ、できましたですか?
そうしたら、[上の句用]フォームのレコードソースも差し替えます。

そっとフォームビューに切り替えてみると・・・。
今度は、必ずしも1の句から表示される・・・とは限らないですよね。
試しに「次の句」ボタンをクリックしてみると・・。出てくる順番もバラバラだと思います。
もちろん、ランダムですから、1の句から始まる可能性も、ありますけれどもね。



じゃ、このフォームは保存しつつ閉じて、最終確認です。
いちおう、テーブルを開いて、[選択]フィールドにチェックがついてるレコードがないかどうか、確認しておきましょう。

チェックついてるやつがあったら、クリックしてはずしといてくださいね。出ないと、ちゃんとしたテストができないですからネ。



みなさん百人一首お詳しいですか?
わたしあんまり詳しくないもんで、最初はちょいとカンニングモードでテストをいたします。

ええと、最初に出てきた歌は、80番の歌か・・・。
下の句も、80番のものをクリックすれば、正解のはず。
と、これを100回繰り返しつつ、がんばってクリアしてみてください。

え?めんどくさい?
だめですっ。全部一通り繰り返し動かしてこそ、見つけにくい問題点が見えてくるもんなんですから。



うむ・・・下の句のほうのフォーム、一番下に、「新規入力行」が出てきますね。

気にしなければいいところなんですが、これ、出ないほうがいいなぁ。
じゃあ、下の句のフォームのデザインビューで調整しましょうか。いったん[百人一首フォーム]は閉じましょう。



ついでに、「やりなおし」みたいな処理があったらいいと思いません?
例えば、今みたいに、途中で止めてフォームを閉じると、↓テーブルの中のチェックボックスはところどころチェックついてますよね。

最初からかるた詠みしたい場合は、これ全部カチカチクリックしてオフにしとかないとなりません。
めんどくさいですよねー。

それには、テーブルの[選択]フィールドの値を、全部オフにする処理を作らないとならないですよね。
これは、更新クエリというやつを使いましょう。
更新クエリとは、テーブルの中のデータを一括更新するときなどに作るクエリです。
じゃ、ちょっと作ってみましょうか。



作り方は、途中まで普通のクエリと同じです。
[100ku]テーブルを基にしたクエリを新規作成し、[選択]フィールドだけ選んでおきます。
で、ツールバーの「クエリの種類」の横っちょのリストボタンを↓クリックして、一覧から「更新」を選びます。

そうすると、「レコードの更新」という欄ができるので、ここに false と半角で入力します。

これで、全レコードのチェックボックスをオフにすることになります。

じゃ、このクエリ、実行してみましょうか。ツールバーの「実行」ボタンを↓クリックしてください。

仰々しい確認メッセージが出ますね。いちおう、レコードの中身を書き換えるクエリなので、必ず確認メッセージが出るようになってます。

このクエリ実行後、クエリは閉じずにちょっと横にのけといて、テーブルを広げて見てみましょう。
さっきまでチェックついてたところが、全部真っ白になってると思います。

このクエリを実行すれば、いつでも[選択]フィールドを真っ白にすることができるってわけです。
確認できたら、テーブルは閉じちゃっていいですよ。

それじゃ、このクエリに名前を付けておきましょうか。[Q_初期化]とでもしておこうかな。

では次に、上の句のフォームをデザインビューで開いて、適当な場所にコマンドボタンをひとつ作り足してください。

このコマンドボタンのプロパティの中の「クリック時のイベント」を作ります。

今度も、マクロじゃなくてコードを書きますよ。
マクロでもいいんですけどね。
コードは、こんな感じになります。

ちょっと見にくいですけども、そんなに込み入ったことはやってないので、じっくり眺めて同じように入力してみてください。

上のコード、細かいところをちょっとだけ解説、です。
このメッセージ、↓別にエラーではないので毎回出ても問題じゃないんですが、正しく動作することがわかれば、もう表示しなくてもいいかなーと思うんですよね。

そこで、確認メッセージを非表示にする、というマクロアクションを実行します。
SetWarningsというやつが、それです。

そのあと、OpenQueryという命令を下して、さっき作った更新クエリを実行します。
SetWarningでFasleにした場合、このコードやマクロが終了すれば、自動的にまた確認メッセージが出る設定に戻る仕組みになってはいるんですが、いちおう、元に戻すという意味で、もう一度SetWarningをやってます。

で、次に、まず、上の句のフォームの方を再クエリです。
これやれば、乱数が新しくふりなおされて、歌の順番が変わるはずです。
そして、下の句のフォームの方も再クエリします。
再クエリするのは、下の句のフォームではなくて、サブフォームの埋め込み部分を再クエリするということ、くれぐれもお間違えのないように・・。
コントロール名は必ずしも「埋め込み4」ではないと思いますので、必ず確認してくださいね。

さてさて、ここまでいかがでしょう。
これで、ほぼ完成です。

百人一首データベースを作成することなんてまずありえないと思いますけれど、でも、要所要所で出てきた手法は、いろいろなところで役立つんじゃないかなーと思います。

最後の仕上げ。
上の句のフォームと、下の句のフォームの[番号]テキストボックスを、見えなくします。
削除しちゃだめですよ。え?なんでだめなのかって?んもー今まで何をやってきたんですかっ。もう一度よく落ち着いて考えてみてください。
こんなん、MS-Accessの操作方法を学習するとかしないとか以前のことですよ。どうか見失わないで、落ち着いて。

見えなくする方法はいろいろあるんですが、テキストボックスの「可視」プロパティを いいえ にするのが一番手っ取り早いかなと思います。

これは、フォーム上に存在はしているけれど、見えなくするためのプロパティなので、処理上必要だけど見せたくないテキストボックスとかによく使います。ほら、見えなくなるでしょ。
あとは、下の句の行数をもっと増やして大きなフォームにするとか、文字の色やフォントを変えてみるとか、いろいろ工夫してみてくださいね。