|
阅读:1512回复:2
请教arcgis中IFeatureCursor的InsertFeature方法的问题
<P>使用arcgis做二次开发时,调用pFeatureCursor.InsertFeature(pFeatBuf)这样的语句在地图上新增地图对象,请问一下InsertFeature执行后,新增的数据是否就已经commit了?arcgis有什么操作有可能造成新增的数据被回滚了?</P>
|
|
|
1楼#
发布于:2005-12-05 20:42
<P> Set pInsertFeatureCursor = pOutFeatureClass.Insert(True) </P>
<P> Set pInsertFeatureBuffer = pOutFeatureClass.CreateFeatureBuffer <br></P> <P> '循环所有feature<br> Set pSearchFeatureCursor = pInFeatureClass.Search(Nothing, True)<br> Set pFeature = pSearchFeatureCursor.NextFeature<br> Do While Not pFeature Is Nothing<br> 增加feature到要素缓冲中<br> Set pInsertFeatureBuffer.Shape = pFeature.Shape<br> '增加feature的字段到要素缓冲中<br> AddFields pInsertFeatureBuffer, pFeature<br> '插入<br> pInsertFeatureCursor.InsertFeature pInsertFeatureBuffer <br> If NewFeatureCount = 100 Then<br> pInsertFeatureCursor.Flush<br> NewFeatureCount = 0<br> End If<br> Set pFeature = pSearchFeatureCursor.NextFeature<br> Loop</P> <P> FeatureCursor.Flush才会提交! </P> [此贴子已经被作者于2005-12-6 17:35:50编辑过]
|
|
|
|
2楼#
发布于:2005-12-06 17:37
Private Sub AddFields(pFeatureBuffer As IFeatureBuffer, pFeature As IFeature)<BR> Dim pRowBuffer As IRowBuffer<BR> Dim pNewFields As IFields 'fields on target feature class<BR> Dim pNewField As IField<BR> Dim pFields As IFields 'fields on original feature class<BR> Dim pField As IField<BR> Dim FieldCount As Integer<BR> Dim NewFieldIndex As Long<BR> <BR> <BR> Set pRowBuffer = pFeatureBuffer<BR> Set pNewFields = pRowBuffer.Fields<BR> <BR> Set pFields = pFeature.Fields<BR> For FieldCount = 0 To pFields.FieldCount - 1<BR> Set pField = pFields.Field(FieldCount)<BR> If Not pField.Type = esriFieldTypeGeometry And Not pField.Type = esriFieldTypeOID _<BR> And pField.Editable Then<BR> NewFieldIndex = pNewFields.FindField(pField.Name)<BR> If Not NewFieldIndex = -1 Then<BR> pFeatureBuffer.Value(NewFieldIndex) = pFeature.Value(FieldCount)<BR> End If<BR> End If<BR> Next FieldCount<BR>End Sub
|
|
|