0

メイン テーブルと、それぞれをメイン テーブルの行にリンクする他の複数のテーブルがあります。

メイン テーブル「データ」は列 (名前、x、y) で構成され、「名前」が主キーで、すべての値が一意です。

他の各テーブルには列 (Name2, z) があり、"Name2" の値は各行で同じであり、テーブル名にも対応しています。

各テーブルを「データ」のサブデータシートにしたいと考えています。「データ」の各行は、その名前に対応するテーブルの値を示しています。(つまり、Name = Name2)

以下は私がこれまでに持っているものですが、サブフォームから linkchildfields と linkmasterfields を実行する必要があるため、コードは機能しません (?) コードが linkchildfields 行に到達すると、「プロパティが見つかりません」というエラーが表示されます。

私はデータベースの唯一のユーザーになります。簡単に言えば、あるテーブルを別のテーブルのサブデータシートとして設定するプロセスを自動化する方法を探しています。これは、アクセス テーブルから直接手動で行うこともできますが、新しいテーブルが作成され、メイン テーブルのサブデータシートとして設定する必要がある場合に備えて自動化したいと考えています。

ありがとう。

Sub STS()

Dim i As TableDef
Dim db As Database
Dim tbl As TableDef

Set db = CurrentDb()
Set tbl = db.TableDefs("Data")

For Each i In db.TableDefs
    If Left$(i.Name, 4) <> "MSys" Or i.Name <> "Data" Then
        tbl.Properties("SubdatasheetName") = i.Name
        tbl.Properties("LinkChildFields") = "Name2"
        tbl.Properties("LinkMasterFields") = "Name"
    End If
Next
End Sub
4

2 に答える 2

0

なぜコードでこれをやろうとしているのですか? この機能は、リレーションシップの概念を介して Access に組み込まれており、追加する可能性のある新しいテーブルをセットアップするのに文字通り 2 分かかります。これらのドキュメントを見て、それがどのように行われたかを確認してください。どちらもマイクロソフトの担当者によって作成されました。

関係を作成、編集、または削除する

Access データベース内のテーブル間のリレーションシップを定義する方法

于 2013-10-31T14:11:05.660 に答える