阅读:944回复:0
[讨论]VB+AE 出现自动化错误
两个图层,一个里面有两个字段分别是“SHAPE_Area”和“name”,另一个里面是“面积分类”和“name”, 我从一个图层里面读取它的“SHAPE_Area”字段,根据其值的大小,再另一个层里面修改和它的“name”值相同的“面积分类”字段的值。运行过程在 lsFeature2.Store 语句处出现“”自动化错误,这是怎么回事啊,我用的engine是正版的9.0的
<P> Dim lsLayer1 As IFeatureLayer<BR> Dim lsLayer2 As IFeatureLayer<BR> Dim lsFeatureCursor1 As IFeatureCursor<BR> Dim lsFeatureCursor2 As IFeatureCursor<BR> Dim lsFeature1 As IFeature<BR> Dim lsFeature2 As IFeature<BR> Dim lsFilter As IQueryFilter<BR> Dim polygon_Area As Double<BR> Dim polygon_name As String<BR> Dim i As Integer<BR> <BR> For i = 0 To MapControl1.LayerCount - 1<BR> If MapControl1.Layer(i).Name = "海湾名称" Then<BR> Set lsLayer2 = MapControl1.Layer(i)<BR> Exit For<BR> End If<BR> Next<BR> <BR> Set lsLayer1 = lsCurLay<BR> Set lsCurLay = Nothing<BR> <BR> If lsLayer1.FeatureClass.ShapeType = esriGeometryPolygon Then<BR> <BR> Set lsFeatureCursor1 = lsLayer1.Search(Nothing, False)<BR> Set lsFeature1 = lsFeatureCursor1.NextFeature<BR> <BR> Do Until (lsFeature1 Is Nothing)<BR> <BR> polygon_Area = lsFeature1.Value(lsFeature1.Fields.FindField("SHAPE_Area"))<BR> polygon_name = lsFeature1.Value(lsFeature1.Fields.FindField("name"))<BR> <BR> Set lsFilter = New QueryFilter<BR> lsFilter.SubFields = "name,面积分类"<BR> lsFilter.WhereClause = "name='" ; polygon_name ; "'"<BR> Set lsFeatureCursor2 = lsLayer2.Search(lsFilter, False)<BR> Set lsFeature2 = lsFeatureCursor2.NextFeature<BR> <BR> If polygon_Area < 100000 Then<BR> lsFeature2.Value(lsFeature2.Fields.FindField("面积分类")) = "小湾"<BR> ElseIf polygon_Area > 100000 And polygon_Area < 1000000 Then<BR> lsFeature2.Value(lsFeature2.Fields.FindField("面积分类")) = "中湾"<BR> ElseIf polygon_Area > 1000000 Then<BR> lsFeature2.Value(lsFeature2.Fields.FindField("面积分类")) = "大湾"<BR> End If<BR> <BR> lsFeature2.Store<BR> <BR> Set lsFeature1 = lsFeatureCursor1.NextFeature<BR> Loop<BR> <BR> End If<BR> <BR> Set lsLayer1 = Nothing<BR> Set lsLayer2 = Nothing<BR> Set lsFeatureCursor1 = Nothing<BR> Set lsFeatureCursor2 = Nothing<BR> Set lsFeature1 = Nothing<BR> Set lsFeature2 = Nothing<BR> Set lsFilter = Nothing</P> |
|