从ArcView 10标签中显示中删除空值

时间:2013-10-21 14:12:44

标签: vbscript arcgis

我正在尝试创建一个三层标签,其中第三行是一年。但是有些数据没有一年。我希望这些标签只显示两层,即空白。目前,ArcView 10会在所有这些标签中自动插入0。以下是我尝试对此进行排序,但它无法正常工作。请记住,我不习惯使用vbScript,所以请用非常简单的单词回复!

Function FindLabel ( [SubCmpt], [Species], [P Year] )
  FindLabel = Function FindLabel ( [SubCmpt] & vbCrLf & [Species] & vbCrLf & [P Year] )
  if ( [P Year] = '0') then
   FindLabel = [SubCmpt] & vbCrLf & [Species]
  else
FindLable = [SubCmpt] & vbCrLf & [Species] &vbCrLf & [P Year] 
End Function

提前感谢您提出的所有建议。

2 个答案:

答案 0 :(得分:1)

我没有使用ArcGIS的经验,但我希望Null(表示无效数据的特定值)和'0'(字符串“0”)是不同的值。 VBScript提供了一个特殊函数(IsNull())来测试Null值,因此请尝试IsNull([P Year])而不是[P Year] = '0'

您可能会在gis.stackexchange.com上获得更好的答案。

答案 1 :(得分:0)

首先,我不确定你的函数的第一行应该做什么:

FindLabel = Function FindLabel ( [SubCmpt] & vbCrLf & [Species] & vbCrLf & [P Year] )

你不需要它。

其次,你需要每次以相同的方式拼写“FindLabel”。

第三,使用IsNull检测null(如@Ansgar所说)。

第四,在VBA中,您需要使用End If结束您的If-Else语句。

总之,试试这个:

Function FindLabel ( [SubCmpt], [Species], [P Year] )
  If IsNull([P Year]) Then
    FindLabel = [SubCmpt] & vbCrLf & [Species]
  Else
    FindLabel = [SubCmpt] & vbCrLf & [Species] & vbCrLf & [P Year] 
  End If
End Function