ソース管理では、テーブルリレーションを再インポートできるようにするために、Accessからテーブルリレーションをエクスポートしようとしています。これを行うために私が言えることから、私は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のままであるため、冗談は私にあります。したがって、私の賢さはマナの秘密を私に明らかにしませんでした。情報を出しますか?
- テーブル名=db.Relations.Item.Table
- テーブルフィールド名=db.Relations.Item.Fields.Item(0).Name
- 外部テーブル名=db.Relations.Item.ForeignTable
- 外部テーブルのフィールド名=????