hejianqi
路人甲
路人甲
  • 注册日期2005-05-11
  • 发帖数1
  • QQ
  • 铜币129枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1512回复:2

请教arcgis中IFeatureCursor的InsertFeature方法的问题

楼主#
更多 发布于:2005-11-28 10:00
<P>使用arcgis做二次开发时,调用pFeatureCursor.InsertFeature(pFeatBuf)这样的语句在地图上新增地图对象,请问一下InsertFeature执行后,新增的数据是否就已经commit了?arcgis有什么操作有可能造成新增的数据被回滚了?</P>
喜欢0 评分0
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于: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
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于: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编辑过]
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
游客

返回顶部