我正在尝试创建一个三层标签,其中第三行是一年。但是有些数据没有一年。我希望这些标签只显示两层,即空白。目前,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
提前感谢您提出的所有建议。
答案 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