CÓMO

No se pueden editar las vistas versionadas con ArcPy o ArcObjects

Last Published: October 1, 2025

Descripción

Al editar una vista versionada con la función Actualizar cursor de ArcPy, se devuelve la siguiente excepción:

Error:
SystemError: error return without exception set. 

A continuación se muestra un ejemplo de código Python utilizado para editar una vista versionada mediante la función updateRow().

import arcpy
dbConnection = r'C:\Users\name\AppData\Roaming\ESRI\Desktop10.4\ArcCatalog\sdeconnection.sde'    
tablePath = dbConnection + "\\testdatabase.dataowner.test_evw"
with arcpy.da.UpdateCursor(tablePath, "*") as cur:
    for row in cur:
        row[1] = 3
        cur.updateRow(row)

Causa

Este es el comportamiento previsto. Las vistas versionadas son para aplicaciones que no admiten el versionado de geodatabases.Las vistas versionadas no están pensadas para ser consumidas o modificadas utilizando ArcPy en ArcObjects, que no admite el versionado de geodatabases.

Solución o solución alternativa

Modifique la clase de entidad directamente mediante ArcPy. La función de editor de Python se puede utilizar con el espacio de trabajo que apunta a una versión transaccional, como se muestra en el siguiente ejemplo:

import arcpy

#Start of parameters to change
path = r'C:\temp'
connection = "testversion.sde"
fc = "dataowner.test"
instance = "machinename"
username, password = "owner1", "owner1"
database = "testdatabase"
version = "dataowner.testversion"
#End of parameters to change
#There are more parameters in arcpy.CreateDatabaseConnection_management that we may wish to modify.

tablePath = path + "\\" + connection + "\\" + fc
arcpy.CreateDatabaseConnection_management(path, connection, "SQL_SERVER", instance, "DATABASE_AUTH", username, password, "SAVE_USERNAME", database, "", "TRANSACTIONAL", version)   
editor = arcpy.da.Editor(path + "\\" + connection )        
editor.startEditing() 
editor.startOperation()
with arcpy.da.UpdateCursor(tablePath, "*") as cur:
    for row in cur:
        row[1] = 3
        cur.updateRow(row)    
editor.stopOperation() 
editor.stopEditing(True)

Si la vista versionada debe editarse con Python, tenga en cuenta que Python es capaz de ejecutar sentencias SQL. Por ejemplo, ArcSDESQLExecute es una alternativa a la edición de vistas versionadas. Para obtener más información sobre ArcSDESQLExecute, consulte el siguiente documento de ayuda web, ArcMap: ArcSDESQLExecute.Además, hay otros módulos que se pueden utilizar para conectar y modificar tablas en una base de datos (por ejemplo, cx_Oracle para Oracle).

Id. de artículo: 000012986

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga