■ ストアドプロシージャについて(3回目)
前回に引き続き、ストアドプロシージャから担当者マスタに変更、
削除をしてみます。
今回は少し長くなりますが、ストアドプロシージャの最終回となります。
■ 変更するストアドプロシージャ
1.担当者マスタを1レコードを変更するストアドプロシージャを作ります。
・構文
update テーブル名 set 列名1=式1,列名2=式2, ・・・
[where 検索条件]
set 以下に記述された列名が式の値で更新されます。
where を指定しないとテーブル名の全てのレコードが対象
になります。
では、早速作ってみましょう。
ストアドプロシージャの「デザインを使用してストアドプロシージャ
を作成する」をダブルクリックします。
下記のsp_担当者マスタ_updのストアドプロシージャをコピーペースト
して貼り付けます。
Alter Procedure sp_担当者マスタ_upd
(
@担当者コード int,
@担当者名 varchar (20),
@カナ名 varchar (20)
)
As
update 担当者マスタ
set 担当者コード=@担当者コード,担当者名=@担当者名,カナ名=@カナ名
where 担当者コード=@担当者コード
return
「sp_担当者マスタ_upd」 の名前で保存します。
実行してみましょう。
2.「sp_担当者マスタ_upd」をダブルクリックします。
「パラメータの入力」の画面が出てきますので入力していきます。
2−1.担当者コードに 「1」 と入力して「OK」をクリックします。
2−2.担当者名に 「田中」 と入力して「OK」をクリックします。
2−3.カナ名に 「タナカ」 と入力して「OK」をクリックします。
2−4.「ストアドプロシージャは実行されましたが、レコードは
返されませんでした」というメッセージが表示されます。
「OK」をクリックします。
実際に変更できているか、確認してみましょう。
担当者マスタのテーブルをダブルクリックしてみると前回登録されて
いた担当者名が ”高橋” から ”田中” に、カナ名が ”タカハシ”
から ”タナカ” に変更されています。
■ 削除するストアドプロシージャ
3.担当者マスタを1レコードを削除するストアドプロシージャを作ります。
・構文
delete テーブル名
[where 検索条件]
where を指定しないとテーブル名の全レコードが削除されます
から気をつけてください。
では、早速作ってみましょう。
ストアドプロシージャの「デザインを使用してストアドプロシージャを
作成する」をダブルクリックします。
下記のsp_担当者マスタ_delのストアドプロシージャをコピーペースト
して貼り付けます。
Alter Procedure sp_担当者マスタ_del
(
@担当者コード int
)
As
delete 担当者マスタ
where 担当者コード = @担当者コード
return
「sp_担当者マスタ_del」 の名前で保存します。
実行してみましょう。
4.「sp_担当者マスタ_del」をダブルクリックします。
「パラメータの入力」の画面が出てきますので入力していきます。
4−1.担当者コードに 「1」 と入力して「OK」をクリックします。
4−2.「ストアドプロシージャは実行されましたが、レコードは
返されませんでした」というメッセージが表示されます。
「OK」をクリックします。
実際に削除されているか、確認してみましょう。
■ 対象となる複数レコードを取得するストアドプロシージャ
5.担当者マスタリスト画面から範囲指定した担当者コードを入力して
印刷させるストアドプロシージャです。
これを行う前に、前回作成した「書き込むストアドプロシージャ」で
担当者を5、6人ほど登録して始めて下さい。
では、早速作ってみましょう。
ストアドプロシージャの「デザインを使用してストアドプロシージャを
作成する」をダブルクリックします。
下記のrp_sp_担当者マスタリスト_コード順のストアドプロシージャを
コピーペーストして貼り付けます。
Alter Procedure rp_sp_担当者マスタリスト_コード順
(
@sta担当者コード int,
@end担当者コード int
)
As
SELECT *
FROM 担当者マスタ
WHERE (担当者マスタ.担当者コード >= @sta担当者コード ) and
(担当者マスタ.担当者コード <= @end担当者コード )
order by 担当者マスタ.担当者コード
return
「rp_sp_担当者マスタリスト_コード順」 の名前で保存します。
実行してみましょう。
6.「rp_sp_担当者マスタリスト_コード順」をダブルクリックします。
「パラメータの入力」の画面が出てきますので入力していきます。
6−1.「sta担当者コード」に読み出したい先頭の担当者コードを
入力して「OK」をクリックします。
6−2.「end担当者コード」に読み出したい最終の担当者コードを
入力して「OK」をクリックします
範囲指定した担当者のみが読み出せたと思います。
■ ストアドプロシージャのまとめ
ストアドプロシージャで担当者マスタを使って処理をしました。
1.データを読み込むストアドプロシージャを作成しました。
2.データを書き込みむストアドプロシージャを作成しました。
3.データを変更するストアドプロシージャを作成しました。
4.データを削除するストアドプロシージャを作成しました。
5.対象となる複数レコードを取得するストアドプロシージャを
作成しました。
(複数の条件を指定して必要なデータだけを取得するものです)
データの処理は、これらを使えば作成できます。
フォームにデータ項目を作成し、その項目からストアドプロシージャの
項目に送り、これらの作成したストアドプロシージャをVBAに記述すれば
担当者マスタのデータを登録、変更、削除、読み込むことができます。
また、担当者マスタリストでは、担当者コードの項目を2つ作れば
リストに必要な担当者のみ印刷できます。
ストアドプロシージャで重要なことは作成した物を、「パラメータの入力」
の画面で直接入力してみて自分の思ったとおりにできているかを
確認してみることです。
*注意
ストアドプロシージャで記述する際、全角スペースはエラー
になります。
スペースを入れる場合は、半角スペースで行ってください。
(例)エラーメッセージは下記のようになります。
「ADOエラー:行 10: ’ ’の近くに不正な構文が
あります。」上から数えて10行目に全角スペースが
あることを意味しています。
システムを作成する人により、SQLの記述に難易度差はあります。
でも、1〜5を駆使することにより、例え高度なSQLを使わなくても
データの処理(加工)をすることは可能となります。
まったく高度なSQLを知らなくてもとは、決して言いません。
ですから、SQLの習得はご自身でされてください。
自分が理解できる本を選んで学んでください。
今回、ストアドプロシージャを3回に分けて担当者マスタを用いて
解説しました。
次回は、第1コースの最終回(第10回)となります。
マクロの説明をします。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
Accessを学習するなら、やっぱり実務処理として応用のきくクラサバシステム
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|