# Calculate Field VB to Python

325
3
03-06-2023 12:42 PM
New Contributor

I have a VB script used for caluculating field data, but need it in Python. Here is the VB Script:

Dim a

If ( [DA_LU_SOIL.SOIL] ="B") Then

a= [CN_Reference.B]

elseif ( [DA_LU_SOIL.SOIL] ="C") Then

a= [CN_Reference.C]

elseif ( [DA_LU_SOIL.SOIL] ="D") Then

a= [CN_Reference.D]

end if

3 Replies
by Anonymous User
Not applicable

Here are two ways- not sure what your fields are so replace them as needed:

``````if DA_LU_SOIL.SOIL =="B":
a = CN_Reference.B
elif DA_LU_SOIL.SOIL == "C":
a = CN_Reference.C
elif DA_LU_SOIL.SOIL == "D":
a = CN_Reference.D
# or

valDict = {"B": CN_Reference.B,
"C": CN_Reference.C,
"D": CN_Reference.D}

a = valDict.get(DA_LU_SOIL.SOIL)``````
New Contributor

You helped get me closer but now I'm getting this error, any tips?

Thanks a ton.

by Anonymous User
Not applicable

calculate-field-examples - Check out the Calculate fields using logic section.

In the first block (expression) you need to call the function that you define in the Code Block.

SoilsUnion.CN =

``calcfunction(!Soils.Union3_HSG!, !CN_Reference.A!, !CN_Reference.B!, !CN_Reference.C!, !CN_Reference.D!)``

(you may need to remove the !.  Easiest way is to just double click on the field and Pro will put it in the argument with the right decoration.)

Code Block:

``````def calcfunction(checkField, refA, refB, refC, refD):
if checkField =="A":
return refA
elif checkField =="B":
return refB
elif checkField == "C":
return refC
elif checkField == "D":
return refD``````