阅读:2155回复:2
一段大家懂得的代码,却很重要!!!
<P>仔细看!</P>
<P>Private Sub add_Field()</P> <P>Dim pdoc As IMxDocument<br>Dim pmap As IMap<br>Dim play As IFeatureLayer<br>Dim pFClass As IFeatureClass<br>Dim pfcursor As IFeatureCursor<br>Dim pfeature As IFeature</P> <P>Dim pCurve As ICurve<br>Dim pfields As IFieldsEdit<br>Dim pfield As IFieldEdit</P> <P><br>Set pdoc = ThisDocument<br>Set pmap = pdoc.FocusMap<br>Set play = pmap.Layer(0)<br>Set pFClass = play.FeatureClass<br>'----添加一个feild---------<br>Set pfields = pFClass.Fields<br><br>Set pfield = New Field<br> With pfield<br> .name = "Length"<br> .Type = esriFieldTypeString<br> .Length = 20<br> <br> End With<br>pfields.AddField pfield<br>MsgBox "添加成功!"<br>'---------end -------------</P> <P> Set pfcursor = pFClass.Search(Nothing, True)<br> Set pfeature = pfcursor.NextFeature<br> Set pCurve = pfeature.Shape<br> <br>Do Until pfeature Is Nothing<br>pfeature.Value(pFClass.FindField("Length")) = pCurve.Length<br>' pfcursor.UpdateFeature pfeature<br>Set pfeature = pfcursor.NextFeature<br>Loop<br>End Sub</P> <P>以上代码正确运行,但是为什么属性表中增加了Length这个字段,可为什么还是没有值呢?</P> <P>如果我用下面代码测试,里面却时已经赋值了呀,为什么没有,难道没保存?但怎么保存可以显示这个字段了???</P> <P>'------------测试-------------------<br>'Dim i As Integer<br>'For i = 0 To 3<br>'pfeature.Value(pFClass.FindField("Length")) = pCurve.Length<br><br>'MsgBox pfeature.Value(pFClass.FindField("Length"))<br>'Set pfeature = pfcursor.NextFeature<br>'Next<br>'-----------end测试-----------------</P> [此贴子已经被作者于2009-7-20 16:54:52编辑过]
|
|
1楼#
发布于:2009-07-19 17:32
<P>自带的帮助里面有类似的例子</P>
<P>dim Length_index as long</P> <P>Length_index = pfeature.Table.FindField("Length")确定有这个字段<BR>pfeature.Value(Length_index)= pcurve.Length</P> |
|
2楼#
发布于:2009-07-20 16:50
谢谢楼上回答。这个后来我知道了,但是没有显示我赋的值!
|
|