21 フォーム系 - フォームのレコードソースを収集する

カレントデータベース内にあるフォーム名の一覧とともに、それぞれのフォームのレコードソースを収集します。
  1. まず「Database」オブジェクトの変数である「dbs」に”カレントデータベース”をセットします。

  2. 次に「Container」オブジェクトの変数である「ctn」に、カレントデータベースの「Containers」コレクション内にある”フォーム(Forms)”をセットします。これによってそのオブジェクト変数に”データベース内のフォームのグループ全体への参照”がセットされます。

  3. Container内にあるすべてのフォームのコレクションである「Documents」の中から、For Each〜Nextステートメントでひとつずつフォーム情報を取り出し、「Document」オブジェクトの変数「doc」にセットしていきます。

  4. 取り出されたひとつのフォーム情報のうち、フォーム名である「Name」プロパティの値を、ここではそれを何度か使用するため、いったん変数「strFormName」にセットします。

  5. フォーム内のオブジェクトを参照するので、そのフォームを”デザインビュー”(引数に「acDesign」を指定)で開きます。

  6. フォーム名、およびそのフォームの「RecordSource/レコードソース」プロパティの値をイミディエイトウィンドウに出力します。

    「フォーム」というオブジェクトには多くのプロパティがあります。このサンプルコードで「.RecordSource」と書かれている部分を他のプロパティの名前に変更することで、それらのさまざまなプロパティ情報を収集することができます。

  7. そのフォームを閉じます。
    ここではデータ収集のみでデザイン変更はありませんので、引数に「acSaveNo」を指定することで意図的に変更を保存せずに閉じます。

Sub Sample_3_03()
'フォームのレコードソースを収集する

  Dim dbs As Database
  Dim ctn As Container
  Dim doc As Document
  Dim strFormName As String

  Set dbs = CurrentDb
  Set ctn = dbs.Containers!Forms
  For Each doc In ctn.Documents
    strFormName = doc.Name
    DoCmd.OpenForm strFormName, acDesign
    Debug.Print strFormName,
    Debug.Print Forms(strFormName).RecordSource
    DoCmd.Close acForm, strFormName, acSaveNo
  Next doc

End Sub

実行例:


| Index | Prev | Next |



Copyright © T'sWare All rights reserved