阅读:2278回复:2
[求助]两个ACCESS表关联,分类标注
<P>我从ACCESS库中打开一个水库基本情况表,一个实时水位表,其中实时水位表是查询结果转成的一个ITable,两个表关联,图层加上去,选字段标注,都可以成功,就是想筛选超正常水位的值来分类标注,就什么都标不出来,而且地图上所有的标注都没了。</P>
<P>pAnnoprop.WhereClause = "[库水位] > [正常水位]"</P> <P>如果说是格式问题,我试过了所有格式,加上表名也试了,如果说不能这样的话,我只要把条件设为空,就可以标注出来。</P> <P>搞了很多天了,真是头疼啊,难道ARCENGINE不能对内存表执行WhereClause ?可是我对其它关联表做是成功的,是不是问题出在查询生成的表没有存到硬盘上?请教高手啊</P> |
|
1楼#
发布于:2010-05-24 10:55
<P>下面的代码可以参考下,</P><PRE>Sub LabelPOI(pGFLayer As IGeoFeatureLayer, sLabelField As String, ScaleRange As Long, pRed As Long, pGreen As Long, pBlue As Long, Size As Long)
Dim pMxDoc As IMxDocument Dim pMap As IMap Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap 'Get the label properties Dim pLabelProps As ILabelEngineLayerProperties Dim pAnnoPropsColl As IAnnotateLayerPropertiesCollection Set pAnnoPropsColl = pGFLayer.AnnotationProperties pAnnoPropsColl.QueryItem 0, pLabelProps 'get the (first) AnnotateLayerProperties property set in the collection Dim pAnnoLayerProps As IAnnotateLayerProperties pAnnoPropsColl.QueryItem 0, pAnnoLayerProps, Nothing, Nothing 'Set the label expression pLabelProps.IsExpressionSimple = False pLabelProps.Expression = "[" ; sLabelField ; "]" pAnnoLayerProps.AnnotationMinimumScale = ScaleRange pAnnoLayerProps.LabelWhichFeatures = esriVisibleFeatures 'geht nicht so wie ich will... Dim pSym As ITextSymbol Set pSym = New TextSymbol pSym.Color = BuildRGB(pRed, pGreen, pBlue) pSym.Size = Size 'Text maskieren (damit man ihn besser lesen kann...) Dim pMask As IMask Set pMask = pSym pMask.MaskStyle = esriMSHalo pMask.MaskSize = 1.5 Set pMask.MaskSymbol = MakeFillSym(MakeColor(vbWhite)) 'Set the label symbol Set pLabelProps.Symbol = pSym 'Build label classes Dim pAnnoProp As IAnnotateLayerProperties pAnnoPropsColl.QueryItem 0, pAnnoProp, Nothing, Nothing Set pAnnoProp = New LabelEngineLayerProperties pAnnoProp.Class = "Restaurant" pAnnoProp.WhereClause = "(""PoiTyp"" = 15)" pAnnoPropsColl.Add pAnnoProp Set pAnnoProp = New LabelEngineLayerProperties pAnnoProp.Class = "Andere POIs" pAnnoProp.WhereClause = "Not((""PoiTyp"" = 15))" pAnnoPropsColl.Add pAnnoProp For lloop = 0 To pAnnoPropsColl.Count - 1 pAnnoPropsColl.QueryItem lloop, pAnnoProp Select Case pAnnoProp.Class Case "Andere POIs" pAnnoProp.DisplayAnnotation = False Case "Default" pAnnoProp.DisplayAnnotation = False Case Else pAnnoProp.DisplayAnnotation = True End Select Next lloop 'On/Off the labels pGFLayer.DisplayAnnotation = Not pGFLayer.DisplayAnnotation End Sub</PRE> |
|
|
2楼#
发布于:2010-05-24 10:59
可能是WhereClause的语法错误吧
|
|
|