cl.geologyidea.com
Más

Depurando CalculateField_management ERROR 000623: ¿Tipo de valor no válido para el campo de parámetro?

Depurando CalculateField_management ERROR 000623: ¿Tipo de valor no válido para el campo de parámetro?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Estoy tratando de seleccionar registros en mi tabla que tienen ciertas palabras en el campo "Nombre" y luego codificarlos como 0 (no farmacia) o 1 (farmacia). Esto es solo una prueba que busca dos palabras para seleccionar no farmacias.

Estoy obteniendo un:

ExecuteError: ERROR 000622: No se pudo ejecutar (Calcular campo). Los parámetros no son válidos. ERROR 000623: Tipo de valor no válido para el campo de parámetro.

No sé qué variable no es válida. ¿Alguna idea? Tampoco sé si el campo Calcular funcionará solo en los registros seleccionados. No puedo llegar lo suficientemente lejos para comprobarlo.

# importar módulos del sistema importar arcpy importar aleatorio # establecer entorno de espacio de trabajo myWorkspace = arcpy.env.workspace = "C: / PharmacyProtocol / tables" arcpy.env.overwriteOutput = True # establecer variables out_table = "VT_TRL_DLC.dbf" # establecer variables de campo fieldList = arcpy.ListFields (out_table) para el campo en fieldList: if field.name == "Name": nameF = field elif field.name == "Pharmacy": pharmF = field #crear una lista de palabras que NO son farmacias noPharmWords = [ 'AMERICAN LEGION', 'BAR'] expresión = 0 # busque palabras en el campo Nombre, codifique Farmacia como "0" si aún no está codificado para codeWord en noPharmWords: #create SQL text clause fldName = '"Name"' endClause = "% '"SQLstr = fldName +" LIKE'% "+ codeWord + endClause #seleccionar registros de la tabla con codeWord cursor = arcpy.da.SearchCursor (out_table, [" Name "], SQLstr) arcpy.CalculateField_management (out_table, pharmF, expresión) del cursor

Parece que está haciendo un mal uso del cursor.arcpy.CalculateField_management ()operará en toda la tabla o en la vista de tabla que se le proporcione, independientemente de la existencia de cualquier objeto cursor. Probablemente esté fallando porque estás pasando un campo objeto en lugar de un campo nombre lo.

Intente usar un cursor de actualización en su lugar, reemplazando esto:

#seleccionar registros de la tabla con codeWord cursor = arcpy.da.SearchCursor (out_table, ["Name"], SQLstr) arcpy.CalculateField_management (out_table, pharmF, expression) del cursor

con este:

#seleccionar registros de la tabla con codeWord con arcpy.da.UpdateCursor (out_table, ["Nombre", "Farmacia"], SQLstr) como cursor: para la fila en el cursor: fila [1] = expresión cursor.updateRow (fila)

Si el campo es de un tipo entero, puede probar con expression = int (0). El campo Calcular funcionará solo en los registros seleccionados o en todos los registros si no se selecciona ninguno. ¿Calcular el campo 0 funcionará desde la tabla de atributos para ese campo?

La única opción que puedo sugerir es comentar la función CalcField y tal vez hacer algo más que demuestre que el cursor está funcionando como se esperaba.


Para determinar por qué está recibiendo ese error, le recomendaría reemplazar:

arcpy.CalculateField_management (out_table, pharmF, expresión)

con:

print out_table print pharmF expresión de impresión arcpy.CalculateField_management (out_table, pharmF, expresión)

Sospecho que no está proporcionando CalculateField_management con los valores de parámetro que cree que está.