?? arcengine連接表join .txt
字號:
ArcEngine連接表join
By yumao 發表于 2007-7-17 22:27:00
本例實現的是如何將地圖中的一個FeatureLayer的屬性表與另一個數據文件建立連接。
l 要點
首先需要定義兩個ITable接口對象,分別用來獲得地圖中的屬性表和需要連接的數據文件,再通過IMemoryRelationshipClassFactory.Open方法將兩個ITable接口對象根據某個關鍵字段建立連接,
最后使用IDisplayRelationshipClass.DisplayRelationshipClass方法將顯示該連接
主要用到IMemoryRelationshipClassFactory接口,IRelationshipClass接口和IDisplayRelationshipClass接口。
l 程序說明
函數Join是將當前激活的地圖中名稱為sLayerName的圖層和路徑為sFilePath、文件名為sFileName的文件按字段名為sFieldName的字段進行連接。
l 代碼
Private Function Join(ByVal sLayerName As String, ByVal sFilePath As String, _ByVal sFileName As String, ByVal sFieldName As String) As Boolean
Dim pMxDocument As IMxDocument
Dim pMap As IMap
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace As IWorkspace
Dim pFeatureWorkspace As IFeatureWorkspace
Dim pFeatureLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass
Dim pPrimaryTable As ITable
Dim pForeignTable As ITable
Dim pDisplayTable As IDisplayTable
Dim pMemoryRelationshipCF As IMemoryRelationshipClassFactory
Dim pRelationshipClass As IRelationshipClass
Dim pDisplayRelationshipC As IDisplayRelationshipClass
Dim nNumber As Integer
Dim sForeignFile As String
On Error GoTo ErrorHandler:
Join = False
sForeignFile = Dir(sFilePath & "\" & sFileName)
If (sForeignFile = "") Then
MsgBox "The ForeignFile is not exist."
Exit Function
End If
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile(sFilePath, 0)
Set pFeatureWorkspace = pWorkspace
Set pForeignTable = pFeatureWorkspace.OpenTable(sFileName)
Set pMxDocument = ThisDocument
Set pMap = pMxDocument.FocusMap
For nNumber = 0 To pMap.LayerCount - 1
If pMap.Layer(nNumber).Name = sLayerName Then
Set pFeatureLayer = pMap.Layer(nNumber)
Exit For
End If
Next
If pFeatureLayer Is Nothing Then
MsgBox "No Layer's Name is " & sLayerName
Exit Function
End If
Set pDisplayTable = pFeatureLayer
Set pFeatureClass = pDisplayTable.DisplayTable
Set pPrimaryTable = pFeatureClass
Set pMemoryRelationshipCF = New MemoryRelationshipClassFactory
Set pRelationshipClass = pMemoryRelationshipCF.Open("TabletoLayer", pPrimaryTable, sFieldName, _
pForeignTable, sFieldName, "forward", "backward", esriRelCardinalityOneToOne)
Set pDisplayRelationshipC = pFeatureLayer
pDisplayRelationshipC.DisplayRelationshipClass pRelationshipClass, esriLeftOuterJoin
Join = True
Exit Function
ErrorHandler:
MsgBox Err.Description
End Function
Private Sub UIButtonControl1_Click()
Dim pVBProject As VBProject
On Error GoTo ErrorHandler:
Set pVBProject = ThisDocument.VBProject
Join "WorldCountries", pVBProject.FileName & "\..\..\..\.." & "\data", "Continents.dbf", "FID"
Exit Sub
ErrorHandler:
MsgBox Err.Description
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -