フォームに入力されたデータをテーブルに保存する場合、教科書的なやり方は、フォームのプロパティシートの設定のデータ入力用にするのですが、私は使いません。
データ入力用にすると、入力時にマウスホイールをコロコロすると、データを保存するつもりがないのに保存されてしまう・・・といった問題が起こるからです。
どのような方法でフォームのデータをテーブルに保存するかというと、
「追加クエリ」を使うのです!
ではやってみましょう。
追加クエリでテーブルに保存する方法
「T-機器情報テーブル」に「機器情報入力フォーム」のデータを入力する仕組みを作っていきます。
ツールバー「作成」から「クエリデザイン」をクリックします。
「T-機器情報テーブル」にデータを追加したいので、選択して「追加(A)」をクリックします。
クエリの画面に「T-機器情報テーブル」が表示されました。
「廃棄日」フィールドは新規登録フォームにはないので、「廃棄日」以外のフィールドをクエリデザイングリッドに追加します。
クエリの名前は「追加-機器情報テーブル」にします。
この状態ではただのクエリです。
「機器情報テーブル」にデータを入力するためには、追加クエリにする必要があります。
ツールバー「デザイン」から「追加」をクリックします。
カレントデータベース(C)にチェックを入れて、テーブル名を「T-機器情報テーブル」を選択して、「OK」をクリックします。
追加クエリというのは、フィールドの情報を「レコードの追加」で設定したレコードに保存されます。
フィールドの欄にフォームテキストボックスを設定していきます。
フィールドの「機器ID」にカーソルを出して、右クリックをして、「ビルド(B)」をクリックします。
式ビルダーが起動します。
式を手打ちしなくてもビルダーを使って記述することができるので、とっても便利です。
ちょっとしたテクニックとして、参照したいフォームをあらかじめフォームビューでもデザインビューでもいいので起動しておくとフォームを選ぶ時に楽です。
accdbファイル内にオブジェクトの数が少ないときはそれほど気にならないのですが、数が多くなると探すのが大変ですよね。
参照するフォームをあらかじめ開いておくと、「読み込まれたフォーム」から参照するフォームをすぐに探し出すことができるので便利です。
同様にすべてのフィールドにレコードを追加するフォームのテキストボックスを割り振っていきます。
この作業、結構めんどくさいです・・・
でもがんばって!
「T-機器情報テーブル」が表示されていると追加クエリがうまく動作しないので消してしまいます。
これで、「T-機器情報テーブル」に「機器情報入力フォーム」のデータを入力するための追加クエリが完成しました。
フォームに追加クエリを動作させるボタンを作る
「機器情報入力フォーム」にデータ入力をして、情報を保存するボタンを作っていきます。
ツールバー「デザイン」から、「ボタン」をクリックします。
「備考」のテキストボックスの下あたりにボタンを配置します。
設置したボタンのプロパティシートを開き名前を「保存」にします。
ボタンの表題も「保存」にします。
では、このボタンにVBAを組み込んでいきます。
「イベント」タブの「クリック時」の「…」をクリックすると、ビルダーの選択が表示されます。
「コードビルダー」を選択して「OK」をクリックします
VBAが起動します。
下記のコードを入力します。
DoCmd.SetWarnings False
DoCmd.OpenQuery "追加T-機器情報テーブル"
DoCmd.SetWarnings True
このコードは何かというと・・・
DoCmd.SetWarnings False
というコードはAccess上で何が警告が出た時に、それを無視するというコードです。
DoCmd.OpenQuery "追加-機器情報テーブル"
これは、「追加T-機器情報テーブル」というクエリを起動するという命令のコードです。
そして
DoCmd.SetWarnings True
このコードは警告を無視する設定に変更したものを元に戻すという命令のコードです。
データ入力後もテキストボックスにデータが残っていると、入力された感が感じられないので、テキストボックスをキレイにするためにこのコードを入力します。
Me!機器番号 = Null
Me!資産番号 = Null
Me!機器分類 = Null
Me!品名 = Null
Me!型番 = Null
Me!メーカー = Null
Me!備考 = Null
DoCmd.GoToControl "機器番号"
このコードを入力を追加することで、機器情報入力フォームに新規データを入力する準備が整います。
テキストボックスのデータをNull(空白)にして、カーソルを「機器番号」に持ってきます。
VBAの画面はこんな感じになっています。
VBAの画面をとして、いったん「機器情報入力フォーム」を上書き保存しましょう。
「機器情報入力フォーム」をフォームビューで開いて動作チェックをしてみます。
何となくそれっぽい情報を入力してみました。
保存を押すと・・・
テキストボックスの中身がNull(空白)になり、カーソルも「機器番号」に移動しました。
「T-機器情報テーブル」を開くと、ちゃんとデータ入力されていることが分かります。
コメント