Instrução

Não é possível editar exibições versionadas com ArcPy ou ArcObjects

Last Published: October 1, 2025

Descrição

Ao editar uma visualização versionada com a função ArcPy Atualizar Cursor, a seguinte exceção é retornada:

Error:
SystemError: error return without exception set. 

Veja a seguir um exemplo de código Python usado para editar uma visualização versionada usando a função 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 é o comportamento esperado. As visualizações versionadas são para aplicativos que não suportam o versionamento do geodatabase.As visualizações versionadas não devem ser consumidas ou modificadas utilizando ArcPy em ArcObjects, que não suporta versionamento de geodatabase.

Solução ou Solução Provisória

Modifique a classe de feição diretamente usando o ArcPy. A função do editor do Python pode ser usada com a área de trabalho apontando para uma versão transacional, conforme mostrado no exemplo a seguir:

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)

Se a visualização versionada precisar ser editada com Python, observe que o Python é capaz de executar instruções SQL. Por exemplo, ArcSDESQLExecute é uma alternativa para editar visualizações versionadas. Para obter mais informações sobre o ArcSDESQLExecute, consulte o seguinte documento de ajuda da web, ArcMap: ArcSDESQLExecute.Além disso, existem outros módulos que podem ser usados para conectar e modificar tabelas em um banco de dados (por exemplo, cx_Oracle para Oracle).

ID do Artigo: 000012986

Receba notificações e encontre soluções para problemas novos ou comuns

Obtenha respostas resumidas e soluções de vídeo do nosso novo chatbot de IA.

Baixe o Aplicativo de Suporte da Esri

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Baixe o Aplicativo de Suporte da Esri

Ir para as opções de download