第3回の宿題の解答・解説

 

第3回の宿題

1.今回紹介したサンプルをもとにして、カーソルを前に移動する機能、先頭に移動する機能、最後に移動する機能をつけましょう。もちろん、EOFやBOFでエラーが発生しないように工夫してください。

ヒント:MovePrevious, MoveLast, BOFを新たに使うことになると思います。

2.1で作成したプログラムをかっこよくしてください。(どんな手段を使っても結構です)。

 

宿題の解答例のダウンロード Lha形式(拡張子は lzh) 35.0KB

 

注意

Animals.mdbの場所は個人個人で違うと思いますのでプログラムの中でAnimals.mdbを指定している箇所は自分で修正してください。Animals.mdbをまだお持ちでない方はデータベース講座第1回でダウンロードできます。

 

1の解答・解説

 

解答例として作成したサンプルプログラムはこのページの先頭の方からダウンロードできます。

内容は見ていただければわかるのですが、だいたいは第3回で作成したプログラムと同じです。ただし、カーソルを前に移動するためのボタンcmdPrivious、最後に移動するためのボタンcmdLast、先頭に移動するためのボタンcmdFirstを追加しています。

これらのボタンのプログラムを見て見ましょう。

Private Sub cmdPrevious_Click()

    '■F カーソルを前のレコードに移動
    Rs.MovePrevious                    'カーソルを前のレコードに移動
    If Rs.BOF Then Rs.MoveLast    'BOFの場合は最後に飛ぶ
    Call ShowData

End Sub


Private Sub cmdFirst_Click()

    '■G カーソルを先頭に移動
    Rs.MoveFirst
    Call ShowData

End Sub

Private Sub cmdLast_Click()

    '■H カーソルを最後に移動
    Rs.MoveLast
    Call ShowData

End Sub

どれもMovePrevious、MoveFirst、MoveLastの3つのメソッドを単純に使っているだけです。前に移動する場合のMovePreviousではBOF状態の時にエラーが発生するのでそれを防止するために、BOF時にはMoveLastをしています。

それから、ShowDataプロシージャを呼び出さないといくらカーソルを移動しても表示は変わらないので注意して下しさい。

---------------------------------------------------------------------------------------

しかし、実はこれではエラーになってしまいます。これは私が悪かったのですが、第3回の講座の中でForm_Loadイベントで

    Rs.Open "Q1_動物一覧", Con

となっている箇所がありましたが、ここを

    Rs.Open "Q1_動物一覧", Con, adOpenStatic

にするのが正解です。

これは、レコードセットを開くときにカーソルのタイプを正しく指定していないのでエラーになるわけで、adOpenStaticを指定すると目に戻れるタイプのカーソルを指定したことになります。このあたりはもうちょっと複雑なのでまだ解説するつもりはなかったのですが、私の手落ちでした。ご迷惑をおかけした方には申し訳ありませんでした。詳しいことはも他の機会に解説します。

この記述は現段階ではすでに修正されていますので、後からこの講座を読んでいらっしゃる方は問題ありません。

 

2の解答・解説

 

解答例として作成したサンプルはこのページの先頭の方からダウンロードできます。

1で作ったプログラムをかっこよくするということですが、とりあえずレイアウトを変えて、画像と音声を加えてみました。画像も音声もフクロウのもので、表示されている動物とは異なるのですが。まぁかっこよさの基準は人それぞれなのでみなさんが自分でなにかしら工夫されたのであればそれでよいと思います。

ただ、ちょっとずるいのですが、画面がさびしかったのでプログラムをちょっとだけいじって動物の説明も表示されるようにしました。これは1で作成するプログラムにはない機能ですね。