2

ソース管理では、テーブルリレーションを再インポートできるようにするために、Accessからテーブルリレーションをエクスポートしようとしています。これを行うために私が言えることから、私は4つの情報しか必要としません。

  1. テーブル名
  2. テーブルフィールド名
  3. 外部テーブル名
  4. 外部テーブルのフィールド名

最初の3つを取得しましたが、最後の情報を把握するのに問題があります。通常、私のテーブルとフィールド名は常に同じであるため、通常は問題ありませんが、このvbscriptが将来、おそらくそれほど明白ではない時間を考慮できるかどうかを本当に望んでいます。これが私が使用しているコードの抜粋です:

Dim db, totalrelations, i, j

Set db = oApplication.CurrentDb
totalrelations = db.Relations.Count
WScript.Echo totalrelations
If totalrelations > 0 Then
    WScript.Echo "opening " & totalrelations
    For i = totalrelations - 1 To 0 Step -1
       'WScript.Echo (db.Relations(i).Name)
       'WScript.Echo (db.Relations.Item(i).name)

       WScript.Echo "Attributes: " &       db.Relations.Item(i).Attributes

 '**            'iterate through the count!!!
       WScript.Echo "Field count: " & db.Relations.Item(i).Fields.Count

       If db.Relations.Item(i).Fields.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Fields.Count - 1
                WScript.Echo j & " Field name: " & db.Relations.Item(i).Fields.Item(j).Name
            Next 
       End If
       WScript.Echo "ForeignTable: " &     db.Relations.Item(i).ForeignTable
       WScript.Echo "Name: " &             db.Relations.Item(i).Name
       WScript.Echo "PartialReplica: " &   db.Relations.Item(i).PartialReplica

       WScript.Echo "propertycount: " & db.Relations.Item(i).Properties.Count
       'Simply repeats everything we already know
       If db.Relations.Item(i).Properties.Count > 0 Then
            For j = 0 To db.Relations.Item(i).Properties.Count -1
                WScript.echo j & " PropertyName:" & db.Relations.Item(i).Properties.Item(j).Name
                WScript.echo j & " PropertyValue:" & db.Relations.Item(i).Properties.Item(j).Value
            Next
       End if

       WScript.Echo "Table: " &            db.Relations.Item(i).Table
    Next 

End If

私は賢くてフィールド数をチェックし、それらを繰り返すことができると思っていました。しかし、同じ名前を共有しない2つのフィールド間で関係を築き、フィールド数は1のままであるため、冗談は私にあります。したがって、私の賢さはマナの秘密を私に明らかにしませんでした。情報を出しますか?

  1. テーブル名=db.Relations.Item.Table
  2. テーブルフィールド名=db.Relations.Item.Fields.Item(0).Name
  3. 外部テーブル名=db.Relations.Item.ForeignTable
  4. 外部テーブルのフィールド名=????
4

1 に答える 1

2

あなたはこれを持っています...

" Field name: " & db.Relations.Item(i).Fields.Item(j).Name

外部テーブルの関連フィールドの名前を取得するには、次を使用します。

" Foreign Field name: " & db.Relations.Item(i).Fields.Item(j).ForeignName

実際には、各コレクションのi番目またはj番目.Item()のメンバーを取得するために明示的に含める必要はありません。だから私はそれをこれに短縮します:

" Foreign Field name: " & db.Relations(i).Fields(j).ForeignName
于 2012-05-04T18:49:23.283 に答える