firefly2123
路人甲
路人甲
  • 注册日期2007-03-12
  • 发帖数3
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1837回复:6

[求助]Feature编辑保存出错

楼主#
更多 发布于:2007-03-19 15:51
<P>各位高手,请您帮帮忙,我这里有一个问题:</P>
<P>IFeatureLayer pFeatureLayer = GetFeatureLayer(pMap, SeachLayName);<BR>IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;<BR>IDataset pDataset = pFeatureClass as IDataset;<BR>IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit;<BR>pWorkspaceEdit.StartEditing(false);<BR>pWorkspaceEdit.StartEditOperation();<BR>for (int i=0; i<count; i++)<BR>{<BR>  IFeature pFeature = m_PathBarriers as IFeature;<BR>  int iIndex = pFeature.Table.Fields.FindField("Enabled");<BR>  object jlsjd = pFeature.get_Value(iIndex);<BR>  pFeature.set_Value(iIndex, jlsjd);<BR>  pFeature.Store();<BR>}            <BR>pWorkspaceEdit.StopEditOperation();<BR>pWorkspaceEdit.StopEditing(true);</P>
<P>当执行到“pFeature.set_Value(iIndex, jlsjd);”的时候,回报错“No update session in progress”,谁知道是怎么回事啊,该怎么改呢?</P>
<P>其中,PathBarriers是ArrayList类型,用于保存多个IFeature</P>
喜欢0 评分0
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-03-19 16:01
<P>去掉下面的代码</P>
<P>pWorkspaceEdit.StartEditOperation();</P>
<P>pWorkspaceEdit.StopEditOperation();</P>

<P>修改pWorkspaceEdit.StartEditing(false);--->pWorkspaceEdit.StartEditing(true);看看<BR><BR><BR></P>
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
firefly2123
路人甲
路人甲
  • 注册日期2007-03-12
  • 发帖数3
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-03-19 16:11
试过了,不行啊
举报 回复(0) 喜欢(0)     评分
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2007-03-20 13:13
你的这段代码实在是看不明白,为啥要把“Enabled”中的值读出来然后再写进去呢?瞎折腾呢?
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2007-03-20 17:00
<P>尝试下面的方法吧,</P>
<P>The following example uses an update cursor to change the value of a particular field for a set of features in a feature class.</P><CODE><PRE>Dim pFeatcls As IFeatureClass
 Dim pFeatLayer As IFeatureLayer
 Dim pDoc As IMxDocument
 Dim pMap As IMap
 
 Set pDoc = ThisDocument
 Set pMap = pDoc.Maps.Item(0)
 Set pFeatLayer = pMap.Layer(0)
 Set pFeatcls = pFeatLayer.FeatureClass
 
 ' +++ create the query filter
 Dim pQueryFilter As IQueryFilter
 Set pQueryFilter = New QueryFilter
 With pQueryFilter
   .WhereClause = "subtype = 'COM'"
   .SubFields = "FID, Type"
 End With
 
 ' +++ get the field we are interested in updating  
 Dim lFld As Long
 Dim pFlds As IFields
 Dim pTable As ITable
 Dim pFeatCur As IFeatureCursor
 Dim pFeat As IFeature
 
 Set pFeatCur = pFeatcls.Update(pQueryFilter, False)
 Set pFlds = pFeatcls.Fields
 lFld = pFlds.FindField("Type")
 
 ' +++ loop through each feature and update
 ' +++ the field to its new value    
 Set pFeat = pFeatCur.NextFeature
 
 While Not pFeat Is Nothing
   Debug.Print "The old type: " ; pFeat.Value(lFld)
   pFeat.Value(lFld) = "ABC"
   pFeatCur.UpdateFeature pFeat
   Debug.Print "The new type: " ; pFeat.Value(lFld)
   Set pFeat = pFeatCur.NextFeature
 Wend</PRE></CODE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
firefly2123
路人甲
路人甲
  • 注册日期2007-03-12
  • 发帖数3
  • QQ
  • 铜币115枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2007-03-21 10:16
<P>谢谢gis</P>
<P>问题解决了,是数据注册的问题</P>
<img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em04.gif" />
举报 回复(0) 喜欢(0)     评分
chenjunfc
外卖仔
外卖仔
  • 注册日期2003-08-14
  • 发帖数58
  • QQ283832077
  • 铜币452枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2007-03-26 13:46
服了,真能折腾!
举报 回复(0) 喜欢(0)     评分
游客

返回顶部