阅读:1837回复:6
[求助]Feature编辑保存出错
<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> |
|
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> |
|
|
2楼#
发布于:2007-03-19 16:11
试过了,不行啊
|
|
3楼#
发布于:2007-03-20 13:13
你的这段代码实在是看不明白,为啥要把“Enabled”中的值读出来然后再写进去呢?瞎折腾呢?
|
|
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> |
|
|
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" /> |
|
6楼#
发布于:2007-03-26 13:46
服了,真能折腾!
|
|