アクセス担当のまみです。
フォームからデータを登録できるようなプログラムを作成して、動作確認もバッチリ!だと思っていたんだけどなんだか動かない時がある・・・?
動く時と動かない時の違いは何?って色々やってみてたら、別のフォームから開いてすぐの時だってわかりました!
今回は、フォームを開いたときの処理についてお伝えしますね。
Contents
ファイルを準備しよう
今回、説明のために「宛名印刷」ファイルを使用します。
プログラム作成の基本となる「フォームの作成」、「データの登録」、「データの検索」、「データの修正」、「レコードの削除」を「宛名印刷」ファイルを作成しながら、お伝えしています。
シリーズを読破すると、ついでにはがきの宛名印刷ができるようになっちゃいます。
お時間がありましたら是非、下記の記事から作成してみてください。
まずは、「宛名印刷」ファイルを開きましょう。
「F_データ入力」フォームでさっそく動作確認してみましょう。
必須項目が空白だとメッセージが出るようにしているのですが、実は、メッセージがでる時と、でない時があるんです。
メインメニューから「F_データ入力」を開いてすぐに、私は「氏名」のみ入力で「登録」してみました。
ふりがなが見えるようにテキストボックスのサイズを変更しておきましょう。
「F_データ入力」をデザインビューで開きましょう。
「txしめい」と「tx氏名」のサイズは揃えておきたいので、①「txしめい」と「tx氏名」を選択した状態で、②幅を「4cm」にしておきましょう。
バグだし
では、氏名だけで登録できてしまった原因を突き止めてみましょう。
色々動作確認してみて、気が付きました?
どうやらフォームが開いたときに、空白と認識しないようです。
クリアボタンや登録ボタンを左クリックしたら、空白が入るようにしているので、2度目以降はちゃんと認識するんですね。
ということは、フォームを開く時にテキストボックスに空白を入れてあげればいいんですね。
こういう作業のことをバグだしって言うんです。
色々動かして、あれって思うことがあったりして、じゃあどうすればいいのかなってそういう作業が楽しいって思えたら、いろいろなアイデアが浮かんできますよ!
フォームを開いたときの処理
ではさっそくコードを入力していきましょう。
「F_データ入力」フォームを、デザインビューで開きましょう。
①を左クリック、または②で「フォーム」を選択します。
③「クリック時」のを左クリックして、「イベントプロシージャ」を選んで、を左クリックします。
「Private Sub Form_Load()」と「End Sub」の間に下記のコードを入力します。
Me!tx氏名 = "" Me!tx郵便番号 = "" Me!cmb印刷要否 = ""
フォームが開いたときに空白にしたいのは、必須項目のみなので、「tx氏名」「tx郵便番号」「cmb印刷要否」の3つに空白をいれます。
これで、「F_データ入力」をフォームビューにして、動作確認してみましょう。
確認したいのは、フォームが開いた時なので、メインメニューに一度戻ってくださいね!
うまくいきましたでしょうか?
いろいろなパターンで試してみてくださいね!
まだ修正が必要だったりするかも?
コードをコピーされたい場合は下記の記事を参考にしてください。
※フォームの読み込み時に空白を入れる処理をしていても、入力した後にバックスペースキーやデリートキーで空白にすると、認識してくれないバグがありました。
Nz関数を使用することで、読み込み時に空白を入れなくてもエラーにならないことがわかりましたので、追記させていただきます。
記事を削除しようかとも思ったのですが、空白でなく、最初から値を入れておきたいこともあるかと思い、そのまま残すことにしました。
まとめ
今回は、フォームを開いたときの処理についてのお話でした。
フォームを開いたときに、どんな動きをしてほしいのかってことをどこに書いたらいいのかがわかったかなぁって思います。
色々動作確認してみてくださいね。