<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97 VBAの森>なんかいっこ作ってみますか



(2)

5.テーブルに新規追加させてください。

さて、次からいよいよ、処理を書いていきます。
1レコード追加するって処理を作るんですけどね。

ただ追加させてくれないですよ。d1に追加させてくれ、とお願いしないとならないんです。

d1.AddNew

これで、d1、つまり[テーブル]にレコードの追加をさせてくれるようになります。
こんなことまで書いてやらないと何にもしないんですよ。気が利かないですよねまったく。

で、次に「どういうデータを追加したいのか」ということを書きます。
これも1レコードいっぺんに、というわけにはいきません。
フィールドいっこいっこに、丁寧に値を入力していきます。皆さん、作ったテーブルのフィールド名、ご記憶ですか?

なんでもセルフサービスですからね。

うーん、どんな値を追加しましょうかねぇ・・。まあ、練習ですから、適当にやりましょうか。

d1![名前] = "あやのこうじ"
d1![数量] = 140
d1![日付] = "99/03/25"

こんな風にしましょうか。フィールド名は必ず、皆さんが作った正しい名前にして下さいね。
気が利かないので、ちょっとでも名前が違うと、何にもしません。

で、最初にAddnewって書いてるのに、これだけじゃ何にもしないんですよね。
Accessのテーブルはレコード単位に更新されていくので、1レコード分の値が揃ったところで「更新させていただきます」とお願いしないとならないんです。で、

d1.Update"

と書き添えます。

d1.AddNew
d1![名前] = "あやのこうじ"
d1![数量] = 140
d1![日付] = "99/03/25"
d1.Update

いちおうこれで、

あやのこうじ 140 99/03/25

というレコードが、テーブルに追加されます。
主キーにしているフィールドはオートナンバー型にしていただいてると思うんで、特に処理は要らないですよね。

んでは、画面の上の方を見て下さい。
「コンパイル」という作業をします。しなくてもいいことなんですけど・・・。
とりあえず簡単な構文チェックをしてくれるので、間違った入力とか矛盾しているところなどを見つけることができます。

「コンパイル」ツールボタンをクリックすると、ひととおりさーっと目を通してくれます。え、誰がって、えーと・・・Accessが、かな。
ただ、実際には「実行してみないとわからない処理」というのもありますんで、形式的なチェックだけですけどね。


6.デバッグしてみます

では、ちょっと試してみましょう。エラーが生じないかどうかチェックしながらテスト実行することをデバッグなんて言います。
デバッグにはデバッグウィンドウというやつがありますんで、これを使って仮実行しましょう。
ツールバーのデバッグウィンドウというボタンをクリックします。

と、なんかウィンドウが出てきますね。細かいことは抜きにして、下のところに

?プロシージャ名(引数)

という感じで入力してEnterすると、プロシージャが実行されます。引数ってのは今回は関係ないんで、また今度お話しますです。

と、カーソルがぴかぴかしてますけど、何にも起こらないですねぇ。

でも、特にエラーが出ず、カーソルが次の次の行でぴかぴかしてるなら、処理は恐らく成功してます。テーブルを開いて見てみましょう。
なんかエラーが出たり、カーソルがずーっと点滅しない状態で棒立ちしている場合は、もしかしたらどっか構文が違っていたりして、失敗かもしれません。

エラーが出たーという方は、エラーメッセージの内容を読んで、[デバッグ]というボタンをクリックすると、エラーと思しき個所が黄色く反転して表示されますので、間違ってないかどうかチェックしてください。

これがデバッグウィンドウ。テストするのによく使います。


さて、テーブルの方ですが・・・・・・1件、データ追加されてます?

もう1回実行すると、おんなじ内容のレコードがもう1件追加されます。あたりまえですよね。

まあ、何万回実行しても、フィールドに書き込んでる値は

あやのこうじ 140 99/03/25

これだけですけどね。でも「うっかり2度実行しちゃった」というこちらの事情は、Accessには伝わらないので、忠実に同じ内容をもう1件、もう1件と追加して、あやのこうじだらけになります。

そんなこともありまして、主キーを作るならオートナンバー型で、ということにしたんですけどね。重複しちゃいますからね。
こういう時のためにも、VBA以外に、テーブルの仕組みなどの知識も併せ持ちたいところです。

じゃ、テーブルは閉じましょうか。