This expression works perfectly when integer fields are 0 instead of NULL but now I am working with a GDB that has many NULL values. I'm not sure how to force CInt to only run if field is not null.
Function FindLabel ( [SQFT_CONC] , [DEPTH_CONC] , [SQFT_ASPHT] , [DEPTH_ASHT] )
Dim strInput
Dim dc
Dim da
dc = CInt([DEPTH_CONC])
da = CInt([DEPTH_ASHT])
val = dc + da
if (val = 10) then
strInput = "IT WORKS"
end if
FindLabel = strInput
End Function
Answer
I found the correct way do handle this. If the field is Null
then it will count as a 0
. This first way is shorter although I'm not sure if it will give the desired result in every scenario.
Function FindLabel ( [SQFT_CONC] , [DEPTH_CONC] , [SQFT_ASPHT] , [DEPTH_ASHT] )
Dim strInput
Dim dc
Dim da
dc = CInt(0 & [DEPTH_CONC])
da = CInt(0 & [DEPTH_ASHT])
val = dc + da
if (val = 10) then
strInput = "IT WORKS"
end if
FindLabel = strInput
End Function
Alternatively....
To treat Null
values as 0
check for Null
and substitute a 0
into the variable.
Function FindLabel ( [SQFT_CONC] , [DEPTH_CONC] , [SQFT_ASPHT] , [DEPTH_ASHT] )
Dim strInput
Dim dc
Dim da
if isNull([DEPTH_CONC]) then
dc = 0
else
dc = CInt([DEPTH_CONC])
end if
if isNull([DEPTH_ASHT]) then
da = 0
else
da = CInt([DEPTH_ASHT])
end if
val = dc + da
if (val = 10) then
strInput = "IT WORKS"
end if
FindLabel = strInput
End Function
To ignore records completely, step over them in an if
statement if either value is Null
Function FindLabel ( [SQFT_CONC] , [DEPTH_CONC] , [SQFT_ASPHT] , [DEPTH_ASHT] )
Dim strInput
Dim dc
Dim da
if not isNull([DEPTH_CONC]) and not isNull([DEPTH_ASHT]) then
dc = CInt([DEPTH_CONC])
da = CInt([DEPTH_ASHT])
val = dc + da
if (val = 10) then
strInput = "IT WORKS"
end if
end if
FindLabel = strInput
End Function
No comments:
Post a Comment