IObjectLoader.LoadObjects 使用方法

本文介绍如何使用IObjectLoader接口中的LoadObjects方法将输入表中的对象加载到现有的对象类中,并提供了具体的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Loads an object into an existing object class. 有幾點要注意的是:

1)該方法有返回值pEnumInvalidObject,如果applyValidation變量是false,將返回空值,如果為True,將返回 invalid features.

2) IQueryFilter::SubFields必須與IObjectLoader::OutputFields相匹配

3)相應字段集 IsNullable and Editable參數要對應,否則會出錯.

Function LoadObjects( 
                  
ByVal Editor As IEditor, _    
                  
ByVal inputTable As ITable, _    
                  
ByVal inputQueryFilter As IQueryFilter, _    
                  
ByVal outputTable As ITable, _    
                  
ByVal OutputFields As IFields, _    
                  
ByVal setSubType As Boolean, _    
                  
ByVal subTypeCode As Long, _    
                  
ByVal snapToFeatures As Boolean, _    
                  
ByVal applyValidation As Boolean, _    
                  
ByVal flushInterval As Long, _     
                  ppInvalidObjectEnum 
As IEnumInvalidObject _

As ISelectionSet

' Syntax of  LoadObjects

 

Public   Sub Command1_Click()
On Error GoTo EH
' This sample loads an info file into personal geodatabase
  
'----------------------------------------------------
'
 Set up the output feature class, i.e. the empty GDBTable that exists
  Dim pWSFact As IWorkspaceFactory
  
Dim pFeatWS As IFeatureWorkspace
  
Dim pFeatDS As IFeatureDataset
  
Dim pFields As IFields
  
Dim pField As IField
  
  
Set pWSFact = New AccessWorkspaceFactory
  
  
'Open FeatureWorkspace
  Set pFeatWS = pWSFact.OpenFromFile("D:/data/World/tables/tabtest.mdb"0)
  
Dim pGDBTable As ITable
  
Set pGDBTable = pFeatWS.OpenTable("demog")
  
'----------------------------------------------------
'
 Set up the input feature classe, i.e. the Info Table as SourceFullName
 Dim pInFClass As IFeatureClass
 
Dim infoWSFact As IWorkspaceFactory
 
Dim infoFeatWS As IFeatureWorkspace
 
Set infoWSFact = New ArcInfoWorkspaceFactory
 
'Open FeatureWorkspace
 Set infoFeatWS = infoWSFact.OpenFromFile("D:/data/World/tables"0)
 
Dim infoTable As ITable
 
Dim pIDataset As IDataset
 
 
Set infoTable = infoFeatWS.OpenTable("demog")
 
 
'---------------------------------------------
 ' Set up query filter for incoming table
 
  
Dim pQueryFilter As IQueryFilter
  
Set pQueryFilter = New QueryFilter
  
  
Dim sInFieldList As String
  sInFieldList 
= pGDBTable.Fields.Field(0).Name
  
For i = 1 To (pGDBTable.Fields.FieldCount - 1)
    sInFieldList 
= sInFieldList + "," + pGDBTable.Fields.Field(i).Name
  
Next i
  
  pQueryFilter.SubFields 
= sInFieldList
    
'----------------------------------------------------
'
 Set up the fields for OutputFields
  Dim pOutFields As IFields
  
Set pOutFields = pGDBTable.Fields
'----------------------------------------------------
'
 Set up the ObjectLoader and run LoadObjects
  Dim pObjectLoader As IObjectLoader
  
Set pObjectLoader = New ObjectLoader
  
  
Dim pEnumInvalidObject As IEnumInvalidObject
  pObjectLoader.LoadObjects 
Nothing, infoTable, Nothing, pGDBTable, pOutFields, False0FalseFalse20, pEnumInvalidObject
  
  
Dim pInvalidObject As IInvalidObjectInfo
  
Set pInvalidObject = pEnumInvalidObject.Next
  
If Not pInvalidObject Is Nothing Then
    
MsgBox "Some or all features did not load"
  
End If
  
  
Exit Sub
EH:
    
MsgBox Err.Description, vbInformation, "Object Loader Example"
End Sub

 来自:http://www.cnblogs.com/iswszheng/archive/2009/03/18/1415437.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值