本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[ACC2]どのフォームから開かれたフォームかを取得する方法

文書番号: 401631

最終更新日: 1997/11/01


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP401631

概要

サンプルデータベース NWIND.MDB の [メイン スイッチボード] フォームのように、フォームのイベントで他のフォームを開く処理があります。ここでは、あるフォームがどのフォームから開かれているかを取得する方法を紹介します。

手順

サンプルデータベース NWIND.MDB の [営業担当社員] フォームと [社員売上成績]フォームを元に説明します。
[営業担当社員] フォームのコマンドボタンをクリックしたら、 [営業担当社員] のフォーム名を情報として渡し [社員売上成績] フォームを開きます。
[社員売上成績] フォームを開く時に、受け取った情報をメッセージボックスで表示します。
[社員売上成績] フォームのコマンドボタンをクリックしたら、受け取った情報のフォーム名を使って、 [社員売上成績] フォームを開いた元のフォームである[営業担当社員] フォームを開きます。
  1. Access 2.0 を起動し、サンプルデータベース NWIND.MDB を開きます。
  2. データベース ウィンドウから、[営業担当社員] フォームを選択して、[デザイン] ボタンをクリックします。フォームのデザインビューが開きます。
  3. ツールボックスから [コマンドボタン] をクリックし、詳細セクションにコマンドボタンを追加作成します。コマンドボタンの [名前/Name] プロパティは「ボタン 0 」に設定してください。
  4. 追加作成したコマンドボタンのプロパティにイベントプロシージャを設定します。プロパティシートを表示するには、コマンドボタンを選択して [表示] -[プロパティ] コマンドを選択するか、ツールバーの <プロパティ> ボタンをクリックします。
    [GRAPHIC: ]
  5. [クリック時/OnClick] プロパティにフォーカスを移動し、[表示] - [コード]コマンドを選択するか、ツールバーの <コード> ボタンをクリックします。あるいは、プロパティの右側の <ビルド> ボタンをクリックします。[ビルダの選択]ダイアログボックスが表示されますので「コード ビルダ」を選択し、[OK] ボタンをクリックします。
  6. モジュールウィンドウで、下記のコードを入力します。
         ---------------------------------------------------------------------------
         Sub ボタン 0_Click ()
             DoCmd フォームを開く "社員売上成績", , , , , , Me.Name
                          '[営業担当社員] フォームのフォーム名を情報として渡します。
         End Sub
         ---------------------------------------------------------------------------
    
  7. [実行] - [モジュールのコンパイル] コマンドを選択するか、ツールバーの<コンパイル> ボタンをクリックします。エラーが表示されなければ、モジュールウィンドウを閉じてください。エラーが表示された場合は、入力ミスがないかどうか再度チェックしてください。
  8. フォームを保存してデザインビューを閉じます。
  9. データベース ウィンドウから、[社員売上成績] フォームを選択して、[デザイン]ボタンをクリックします。フォームのデザインビューが開きます。
  10. フォームの [開く時/OnOpen] プロパティにイベントプロシージャを設定します。
    プロパティシートを表示するには、[表示] - [プロパティ] コマンドを選択するか、ツールバーの <プロパティ> ボタンをクリックします。
  11. モジュールウィンドウで、下記のコードを入力します。
          --------------------------------------------------------------------------
          Sub Form_Open (Cancel As Integer)
                  MsgBox Me.OpenArgs
                  DoCmd 閉じる A_FORM, Me.OpenArgs
                       '渡された情報を元にフォームを閉じます。
          End Sub
          --------------------------------------------------------------------------
    
  12. [実行] - [モジュールのコンパイル] コマンドを選択するか、ツールバーの<コンパイル> ボタンをクリックします。エラーが表示されなければ、モジュールウィンドウを閉じてください。エラーが表示された場合は、入力ミスがないかどうか再度チェックしてください。
  13. ツールボックスから [コマンドボックス] をクリックし、詳細セクションにコマンドボタンを追加作成します。コマンドボタンの [名前/Name] プロパティは「ボタン 1 」に設定してください。
  14. 追加作成したコマンドボタンのプロパティにイベントプロシージャを設定します。プロパティシートを表示するには、コマンドボタンを選択して[表示] - [プロパティ] コマンドを選択するか、ツールバーの <プロパティ> ボタン をクリックします。
  15. [クリック時/OnClick] プロパティにフォーカスを移動し、[表示] - [コード]コマンドを選択するか、ツールバーの <コード> ボタンをクリックします。あるいは、プロパティの右側の <ビルド> ボタンをクリックします。[ビルダの選択]ダイアログボックスが表示されますので「コード ビルダ」を選択し、[OK] ボタンをクリックします。
  16. モジュールウィンドウで、下記のコードを入力します。
          --------------------------------------------------------------------------
          Sub ボタン 1_Click ()
                  DoCmd フォームを開く Me.OpenArgs
                       '渡された情報を元にフォームを開きます。
          End Sub
          --------------------------------------------------------------------------
    
  17. [実行] - [モジュールのコンパイル] コマンドを選択するか、ツールバーの<コンパイル> ボタンをクリックします。エラーが表示されなければ、モジュールウィンドウを閉じてください。エラーが表示された場合は、入力ミスがないかどうか再度チェックしてください。
  18. フォームを保存してデザインビューを閉じます。
    をクリックします。メッセージボックスに「営業担当社員」が表示されます。
    [OK] ボタンをクリックすると、[営業担当社員] フォーム が閉じて、[社員売上成績] フォームが開きます。
    [社員売上成績] フォームの [ボタン 1] コマンドボタンをクリックすると、[営業担当社員] フォームが開きます。

解 説

[OpenArgs] プロパティは、フォームを開く時に [フォームを開く/OpenForm]アクションの openargs引き数に指定された情報 (文字列式) を参照できます。
[OpenArgs] プロパティを使用するには、 AccessBasic から DoCmd ステートメントで[フォームを開く/OpenForm] アクションで openargs 引き数を設定して、フォームを開く必要があります。
openargs引き数にフォーム名を情報として設定しています。開いたフォームでは、[OpenArgs] プロパティを使用して [フォームを開く/OpenForm] アクションを実行したフォーム名を取得しています。

追 加

[社員売上成績] フォームを開く時に、[営業担当社員] フォームを閉じています。
同様に [社員売上成績] フォームのコマンドボタンをクリックして、[営業担当社員] フォームを開く時に [社員売上成績] フォームを閉じるには、各イベントプロシージャを次のように変更します。
■ [営業担当社員] フォーム
  フォーム [開く時/OnOpen] プロパティのイベントプロシージャ
  ----------------------------------------------------------------------------
  SubForm_Open ( Cancel As Integer )
  If Not IsNull(Me.OpenArgs) Then
  DoCmd 閉じる A_FORM , Me.OpenArgs
  EndIf
  End Sub
  ----------------------------------------------------------------------------
■ [社員売上成績] フォーム
  追加作成したコマンドボタンの [クリック時/OnClick] プロパティの
  イベントプロシージャ
  ----------------------------------------------------------------------------
  Sub ボタン 1_Click ()
  DoCmd フォームを開く Me.OpenArgs ,,,,,, Me.Name
  End Sub
  ----------------------------------------------------------------------------

Keywords: KBHOWTO KB401631
Technology: kbAccessSearch

inserted by FC2 system