メールマガジン【アクセスで作るシリーズ】


バックナンバー 【会計ソフト編】 Vol.51
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

    ACCESSで作るシリーズ  【会計ソフト編】

    発 行 : Yoshihisa Fukuda          2001. 4.28 Vol.51

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------

 前回はデータの参照をやってみました。
 今回はレコードの追加、更新、削除する方法を解説します。

== ◇ 第5章 拡張機能     ====================

--------------------------------------
 第6回 VBAでのテーブル操作(続き)
--------------------------------------

 前回と同様に SAMPLE_DB.MDB というデーターベースの中に ABC_TABLE と言う
 テーブルがあり FIELD_1(テキスト型)のフィールドがあるとしましょう。
 今回は、新規のレコードを追加したり、FIELD_1 のデータを変更(更新)したり
 また、レコードを削除したりするプログラムを作成してみましょう。

◆レコードを追加する
 まず、最初にデータベースを開き、そのデーターベースオブジェクトを使用して
 テーブルを開きレコードセットを獲得します。
 これは前回と同様で、幾つかの書き方がありましたが以下の方法を使ってみます。

 Dim SMPL_DB As Database
 Dim ABC_T As Recordset

 Set SMPL_DB = CurrentDb
 Set ABC_T = SMPL_DB.OpenRecordset("ABC_TABLE")

 では、レコードセットを使ってレコードの追加をしましょう。
 まず、FIELD_1 に追加するデータを設定するのですが、その際の手順は以下の様に
 なります。

 (1)レコードセットに対してAddNewメソッドで新しいレコードを作成します。
 (2)FIELD_1に追加するデータを代入します。
 (3)Updateメソッドで追加したレコードを実際に登録します。

 これをプログラムで書くと以下のようになります。

 ABC_T.AddNew
 ABC_T.Fields("FIELD_1").Value = "追加データ"
 ABC_T.Update

 最後のUpdateメソッドを行う前に、レコードを移動したりすると、追加は無効と
 なります。(更新の場合も同様です)
 
◆データを変更(更新)する

 では、次に現在登録されているデータを変更して見ましょう。
 修正の手順は以下のようになります。

 (1)修正したいデータのレコードをカレントレコードへ移動する。
 (2)レコードセットに対してEditメソッドで修正可能状態にする。
 (3)FIELD_1に変更したいデータを代入します。
 (4)Updateメソッドで変更したレコードを実際に登録します。

 これをプログラムで書くと以下のようになります。

 ABC_T.MoveLast
 ABC_T.Edit
 ABC_T.Fields("FIELD_1").Value = "変更データ"
 ABC_T.Update

 このプログラムは、最後のデータを「変更データ」に書き換えています。

◆レコードを削除する

 最後にレコード削除です。
 これは、とても簡単でプログラムは以下のようになります。

 ABC_T.MoveLast
 ABC_T.Delete

 削除したいレコードに移動して Delete メソッドで削除します。

 要点としては AddNewメソッドと Editメソッドを使った時は、必ず最後にUpdate
 メソッドを行う事です。

◆レコードセット、データベースのクローズ

 最後にレコードセットとデータベースをクローズします。
 また、会計ソフトでは抜けていますが、オブジェクトの関連付けの解除も行うのが
 良いでしょう。

 プログラムは以下のようになります。

 ABC_T.Close
 SMPL_DB.Close

 Set ABC_T = Nothing
 Set SMPL_DB = Nothing

レコードの追加、更新、削除もこうやって見れば簡単ですね。
でも、これがプログラムの中にあると、複雑に見えたりしてしまいます。
その理由の一つは、データの検索にあると思います。

レコードの更新や削除は、そのプログラム自体はとても簡単ですが、実際は更新する
データを探したり、削除するデータを探して、レコードを移動しなくてはいけません。

その部分がプログラムを複雑に見せているのだと思います。
--------------------------------------
次回は、データの検索方法を紹介します。
______________________________________
◆◇ Q&Aコーナー    ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

Q1.
 KamokuSetFormを開いて最初の科目コードにカーソルがある状態でエンターキーを
 打つと次のフィールドへ行かず、フォームが閉じてしまいます
 (TABキーは使えます)。
 エンターキーの設定(ツールーオプション)は「次のフィールド」になっていますし、
 プロパティでは「既定」、タブストップは「はい」で問題ないと思うのですが、
 なぜフォームが閉じるのかわかりません。

A1.
 KamokuSetForm の[閉じる]ボタンの[既定のボタン]プロパティが[はい]になって
 いるとご質問の現象が起こります。
 [既定のボタン]プロパティとは、ボタンにフォーカスが無い時でもENTERキーで
 動作できるようにするプロパティで、何時でもENTERキーで動作させたいボタンが
 ある場合などに用います。
 KamokuSetForm の[閉じる]ボタンの[既定のボタン]プロパティを[いいえ]にすれば
 解決します。

______________________________________
◆◇ お知らせ       ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇

 ゴールデンウィークを活用して、ホームページの引越を行う予定です。
 新しいURLは、まだ正式に決めていませんが、決まり次第、皆様にお知らせします。

 また、ゴールデンウィーク中にアンケートをお願いするかも知れませんので、
 その際には、是非ご協力をお願いいたします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ ACCESSで作るシリーズ 【会計ソフト編】
◇ 発 行 元  :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
  ご質問等   :y.fukuda@ro.bekkoame.ne.jp

◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
  しています。(まぐまぐID:0000030446)
◇ バックナンバー:http://www.bekkoame.ne.jp/ro/y.fukuda/
◇ 登録・解除  :http://www.bekkoame.ne.jp/ro/y.fukuda/

 Copyright(C) 2000-2001 Yoshihisa Fukuda All rights reserved.

◇転載について
 このメールマガジンの無断転載などは、一切禁止です。
 転載をご希望の方は、事前にメールで連絡をください。
◇免責
 このメールマガジン及びホームページの内容による、いかなる損害、障害などに
 関して発行者は一切の責任を負いません。
 掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□