'IRelQueryTableを使用したテーブル結合情報の取得
Public Sub GetTableJoinData2()
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMxDocument.FocusMap.Layer(0)
Dim pDisplayTable As IDisplayTable
Set pDisplayTable = pFeatureLayer
Dim pRelQueryTable As IRelQueryTable
Set pRelQueryTable = pDisplayTable.DisplayTable
'結合元テーブルの取得
Dim pSourceTable As IDataset
Set pSourceTable = pRelQueryTable.SourceTable
Debug.Print "結合元テーブル名:", pSourceTable.Name
Debug.Print "結合元フィールド名:", pRelQueryTable.RelationshipClass.OriginForeignKey
'テーブル結合がネストされている場合
If Not TypeOf pRelQueryTable.SourceTable Is IRelQueryTable Then
Debug.Print "結合元データベースパス", pSourceTable.Workspace.PathName
End If
Dim pDestinationTable As IDataset
Set pDestinationTable = pRelQueryTable.DestinationTable
Debug.Print "結合先テーブル名:", pDestinationTable.Name
Debug.Print "結合先フィールド名:", pRelQueryTable.RelationshipClass.OriginPrimaryKey
Debug.Print "結合先データベースパス", pDestinationTable.Workspace.PathName
'テーブル結合がネストされている場合
If TypeOf pRelQueryTable.SourceTable Is IRelQueryTable Then
Dim pRelQueryTable2 As IRelQueryTable
Set pRelQueryTable2 = pRelQueryTable.SourceTable
Dim pDestinationTable2 As IDataset
Set pDestinationTable2 = pRelQueryTable2.DestinationTable
Debug.Print "ネスト 結合先テーブル名:", pDestinationTable2.Name
Debug.Print "ネスト 結合先フィールド名:", pRelQueryTable2.RelationshipClass.OriginPrimaryKey
Debug.Print "ネスト 結合先データベースパス", pDestinationTable2.Workspace.PathName
End If
Dim pDataset As IDataset
Set pDataset = pDestinationTable
Debug.Print "結合先データベースのパス名", pDataset.Workspace.PathName
'DBMS のデータベース名
If TypeOf pDataset.Workspace Is IDatabaseConnectionInfo Then
Dim pDatabaseConnectionInfo As IDatabaseConnectionInfo4
Set pDatabaseConnectionInfo = pDataset.Workspace
Debug.Print pDatabaseConnectionInfo.ConnectedDatabase
End If
End Sub
IRelQueryTableを使用したテーブル結合情報の取得
2024/10/30 (水)