| Access実践入門 TOPへ |
| ■ マイクロソフトアクセス、削除選択フォームの一本化 | |
| 1つの確認フォームを共通で使う Ver1.0では削除の確認フォームをそれぞれに作っていますが、1つのフォームで処理する方法に変更します。 「fo削除選択」のデザインを開いてください。 メッセージを表示するラベルのプロパティを見てください。 [名前]が選択ラベルになっています。 次に、フォーム全体のプロパティを見てください。 [開く時]のプロシージャの見てください。 Select Case delmode Case 1 Me.選択ラベル.Caption = "この勤務先データを削除します" Case 2 Me.選択ラベル.Caption = "この住所録データを削除します" Case 3 Me.選択ラベル.Caption = "この進物データを削除します" Case 4 Me.選択ラベル.Caption = "この区分データを削除します" Case 5 Me.選択ラベル.Caption = "この和暦データを削除します" End Select delmode という変数を使っています。 プログラム全体から参照できる、変数として、モジュールの先頭で変数の宣言をしていますので、後で確認しておいてください。 次のように書いています。 Public delmode As Integer '削除データのチェック '1=勤務先削除 '2=住所録削除 '3=進物削除 '4=区分削除 '5=和暦削除 では、[開く時]のプロシージャですが、Select Case の条件式を使っています。 Caption とは、[標題]のことです。 このフォームを呼び出す側で、変数に数値を入れてから呼び出しています。 たとえば、勤務先入力のフォームから呼び出すときに、次のように書いています。 ![]() ここでは、delmodeは1が入っていますから、ラベルの[標題]は、"この勤務先データを削除します"が入ります。 「削除する」ボタンの[クリック時]のプロシージャを見てください。 Select Case delmode Case 1 DoCmd.OpenQuery "qu勤務先削除" DoCmd.Close DoCmd.ShowAllRecords Case 2 If DCount("住所録番号", "ta進物", "[住所録番号]='" & Form_fo住所録入力.住所録番号 & "'") <> 0 Then MsgBox ("進物データが存在するので削除できません。") DoCmd.Close Exit Sub Else DoCmd.OpenQuery "qu住所録削除" DoCmd.Close DoCmd.Close DoCmd.ShowAllRecords End If Case 3 DoCmd.OpenQuery "qu進物削除" DoCmd.Close DoCmd.Close DoCmd.ShowAllRecords Case 4 DoCmd.OpenQuery "qu区分削除" DoCmd.Close DoCmd.ShowAllRecords Case 5 DoCmd.OpenQuery "qu和暦削除" DoCmd.Close DoCmd.ShowAllRecords End Select Ver1.0では各マクロに書いてあったものを、プロシージャで書いています。 Case 2 の住所録のデータを削除するときに、1つ処理を入れてあります。 進物データにその人のデータが存在した場合に、リレーションシップが登録されているため、エラーが出て、削除できません。 エラーの画面を出さないで、事前に処理を中止させるようにしています。 DCount()関数で、テーブルのデータを検索しています。 検索結果がゼロでなければ、削除はできません。 勤務先と、区分にも住所録データで使われているかどうか調べる、このような処理を追加する必要があるでしょう。(サンプルではしていません) |
|