Este es un proceso de dos pasos y, como resultado, la Calculadora de campo no es adecuada para ello. Es mejor ejecutar esto en un script independiente. Sin embargo, se puede hacer en la calculadora de campo, siempre que use un truco. Debe usar un cursor para cargar todos los valores en un diccionario global de una lista ordenada, pero solo durante el cálculo del primer registro. Para todos los demás registros, debe omitir la creación del diccionario para evitar volver a leer constantemente la tabla completa para cada fila.
Los tres valores de campo deben colocarse en una tupla para actuar como una clave que se clasificará correctamente. Asumiré que todos los valores de combinación de 3 campos son únicos en la tabla SamplePoint, pero agregué el ObjectID para asegurar que sea único. Debe proporcionar la ruta y el nombre del archivo de forma en la línea 8 (o podría usar la técnica que FelixIP usa cuando se usa la primera capa en el mapa actual). Si desea utilizar diferentes campos para una clave, debe cambiar la lista de campos en la línea 10 y hacerlos coincidir con los campos de entrada en la línea 3 y la línea 15.
#Pre-logic Script Code:
relateDict = {}
def autoIncrement(myYear, myMonth, myDay, OID):
global relateDict
# only populate the dictionary if it has no keys
if len(relateDict) == 0:
# Provide the path to the relate feature class/table
relateFC = r"C:\Users\OWNER\Documents\ArcGIS\SamplePoints.shp"
# create a field list with the relate fields in sort order
relateFieldsList = ["Year", "Month", "Day", "OID@"]
# process a da search cursor to transfer the data to the dictionary
relateList = sorted([(r[0:]) for r in arcpy.da.SearchCursor(relateFC, relateFieldsList)])
for relateSort in range(0, len(relateList)):
relateDict[relateList[relateSort]] = relateSort + 1
return relateDict[(myYear,myMonth,myDay,OID)]
#Expression:
autoIncrement(!Year!, !Month!, !Day!, !OBJECTID!)
Tampoco recomendaría usar los nombres de campo de Año, Mes y Día, ya que solo funcionan en archivos shape y no están permitidos en geodatabases. Una geodatabase cambiará los nombres a Año_1, Mes_1, Día_1 si intenta agregarlos a la lista de campos en las propiedades de la tabla.
Si el propósito de esta tabla es relacionarla con otra tabla / clase de entidad en una clave de campo múltiple, considere usar la herramienta que creé en mi blog llamada Herramienta de clave de campo múltiple a clave de campo único - Relacionar dos capas en base a más de una Campo