0

我正在尝试创建一个三层标签,其中第三行是一年。但是有些数据没有年份。我希望这些标签仅显示为两层,即空白。目前 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

提前感谢您的所有建议。

4

2 回答 2

1

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

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

于 2013-10-21T18:07:27.150 回答
0

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

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

你不需要它。

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

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

第四,在 VBA 中,您需要以End If.

总之,试试这个:

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
于 2013-10-22T16:57:26.247 回答