Microsoft Access Club >初心者講座 >アンケート管理ソフト >このページ >次頁 - 前項  サイト内検索


Accessの入力フォームの作成について : アンケート管理ソフト



さあ、今回は、質問に答えるフォーム作りを行いましょうか。新規フォームの作成には、Accessの「フォーム作成ウィザード」を利用します。

 フォーム作成ウィザード

最初の段階は、利用できるものはどしどし使いましょうね。このフォームの基になるテーブは、tbl_tempテーブルです。# tbl_questionテーブルではありませんよ。

ウィザードを利用すると下記のようなフォームが作成されますね。そうそう、このフォームは単票式ですよ。気をつけて下さい。#既にデータを入力しているテーブルをサンプルとして使用しています。

これは、フォームの原型です。このままじゃどうにもならないので、いつもどおりこのフォームにいろいろと手直しを行っていきましょうか。

 フォームのプロパティ操作

まず、フォームのプロパティを表示させて下さい。これは、フォームをデザインビューで開き、メニューバーの「表示」の「プロパティ」を左クリックします。すると、次のようなプロパティ画面が表示されます。
#他にもプロパティを表示させる方法はいろいろとあります。

Accessでソフトを作成する時の第一関門として、この「プロパティ操作」が挙げられるでしょうね。

このプロパティは、フォームやテーブルといった全体のものから、それぞれのテキストボックス等に至るまで、状況にあったプロパティをAccessが自動的に表示 します。
例えば、フォーム全体のプロパティには、「ピクチャ」がありますが、コンボボックスのプロパティにはないという具合です。

このようなプロパティは、どうすれば使いこなせるようになるのでしょうか。それは、覚えることと、使うこと、試してみることです。

また、調べてみたいプロパティは、マウスのカーソルを特定の項目に置いた状態で F1キィー を押して下さい。ヘルプが立ち上がります。これを印刷などして、繰り返し勉強しましょう。いろいろなカスタマイズが可能になります。ちょっと、他人に差を付けるのには必需品です。

但し、Accessにヘルプをインストールしていることが条件ですよ。このプロパティについては、深く掘り下げません。機能紹介で一冊の書籍にもなるぐらいですから‥。

では、順に進めていきますね。

初心者の方が作成したファイルを拝見すると、フォームでのコンボボックスの活用が少なく、テキストボックスでのデータ入力を主に設定されています。

それも、数値入力があったり、文字入力があったりで、それはもうバライティーにとんでいますね。
特に今回のように、何処の誰が入力するか分からない場合は、「このデータから選択して下さい」方式 、つまりコンボボックスやリストボックスにすべきです。こうすると期待した形式で答えが返ってきますからね。

オートナンバー型の「ID」をご覧下さい。なんとまあ大きいことで、仰天します。この「ID」、「記入日」及び「記入時間」のテキストボックスには、入力する必要がないようにしましょう。フォームには、必ずこのような項目がありますので、いの一番に変更します。変更の方法は、大別して2つあります。

  1. テキストボックスの「既定値」を利用する方法。
  2. フォームの「開く時」イベントを利用して、値を代入する方法。
 1.テキストボックスの「既定値」を利用する方法

このサンプル例は、既定値」=Date() を設定しています。Date() 関数は日付を返すAccessの組み込み関数です。このような「既定値」を利用した"自動入力"は、フォームが開いた瞬間にデータが表示され てとても便利ですよ。

しかし、テーブルのフィールド(この例では、記入日)にデータが格納された訳ではありません。
フォーム上で表示されているだけで、データを格納したレコードが存在する訳ではないんです。

このことは、今何のことやら判らないかも知れませんが、後々大きな意味を持ってきます ので、頭の片隅に置いておくことが必要です。

フォーム上の他のテキストボックス等にデータが入力されると同時にテーブルフィールドに"落ちます"。言い換えると、フォーム上のオートナンバー型フィールドが独自のデータを表示させて初めてテーブルデータとなる訳です。

 2.フォームの「開く時」イベントを利用して、値を代入する方法

下記のようなプロシージャをフォームの開く時イベントに記述します。

Private Sub Form_Open(Cancel As Integer)

  DoCmd.GoToRecord acDataForm, "フォーム名", acNewRec

    'VBAでは、Date()がDateと表示されます。
    Me.記入日 = Date
    
End Sub
解説

つまり、フォームの記入日フィールドに Date() を代入する方法です。

Me キーワード は、"このフォームの‥"と云う意味です。Me.記入日は、Forms!frm_question!記入日と同じ意味となります。VBA内の記述の際、できるだけMe キーワードの使用をお勧めするのは、Me キーワードを用いた方がVBAの実行速度が上がるからです。

但し、このようなフォームの開く時イベントにVBAを使った代入方式は、フォームが開いた瞬間に有効になります。
つまり、フォームのレコードが存在するようになってしまいます。オートナンバー型のフィールドを持っているなら、瞬時に番号を取得します。

上記の「既定値」を利用した方法と全く正反対ですね。これらの特性を生かして、使い分けして下さい。

 テキストボックスからコンボボックスに種類を変更

次に、テキストボックスからコンボボックスに種類を変更する方法についてお話しましょうか。

Accessは、オブジェクトの種類を一瞬のうちに変更する機能があります。これは便利な機能で、皆さんも重宝するものと思います。まず、変更したいオブジェクトにマウスのカーソルを置きます。次に右クリックで下記のような手順を踏んで下さい。

但し、この変換機能は、Accessが予め定めた種別のオブジェクトにしか変更ができません。しかし、最初から作成するのと比べると、手間と時間が節約できますね。

 

紙面が詰まってきたので、今日はこの辺で‥。
 

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

 


Accessの入力フォームの作成について : アンケート管理ソフト


 

-Microsoft Access Club-