Ao Executar um botao no MVC faz 2 insert

Bom dia,

estou fazendo um botao que faca uma alteracao do grid e atualice a tela, mais cuando tente salvar, tenho erro de insert duplicate no banco de dados, nao sei porque intenta salvar duas veces o primer modelo (SEH)

botao

oView:AddUserButton("Recalculo Mágico", 'PROBAR', {|oModel,oView| linePostGrid(oModel,oView) } ) //Recalcula la grid

Funcao


static function linePostGrid(oModel,oView)
local oModelGrid := nil
local nLin
aCuotas := {}
SaveInter() // Salva as variaveis publicas
oModelGrid := oModel:GetModel( "FLYDETAIL" ) // obtener el modelo del grid
nTotLin := oModelGrid:Length( .F. ) // obtenes el TOTAL de lineas del grid
     nInicial := 1
     nTotTot := 0// valor total saldo capital
     nAntJuros := 0// valor interés
     nAntAmorti   := 0// valor amortización
     nAntValor := 0
     nTotImpuest := 0
     nTotalAmort := 0
For nLin := 1 To nTotLin - 1  
     oModelGrid:SetLine( nLin ) // le das el total

        if nInicial <> nLin // si es que no es el primero
            oModelGrid:SetValue( "VALOR",nAntValor - nAntAmorti ) // calcula el valor de nuevo
        endif
            oModelGrid:SetValue( "JUROS",oModelGrid:GetValue("VALOR" ) * (M->EH_TAXA /100) / (360/M->EH_UINTDIA))
            oModelGrid:SetValue( "PRESTACAO", oModelGrid:GetValue("JUROS") + oModelGrid:GetValue("AMORTIZA" ) )    // modificas el VALOR
            oModelGrid:SetValue( "VCORRIGIDO", oModelGrid:GetValue("VALOR") + oModelGrid:GetValue("JUROS" ) )    // modificas el VALOR

     nAntValor := oModelGrid:GetValue("VALOR" )// valor total saldo capital
     nAntJuros := oModelGrid:GetValue("JUROS" ) // VALOR impuestos
     nAntAmorti   := oModelGrid:GetValue("AMORTIZA" )// valor amortización
     NvECORRE    := oModelGrid:GetValue("VCORRIGIDO" )
     nTotTot +=  oModelGrid:GetValue("PRESTACAO" )
     nTotImpuest += nAntJuros
     nTotalAmort += oModelGrid:GetValue("AMORTIZA" )
    aAdd(aCuotas,{oModelGrid:GetValue("PARCELA" ),nAntValor, nAntJuros,NvECORRE,nAntAmorti ,oModelGrid:GetValue("PRESTACAO" ) })


Next
    oModelGrid:SetLine( nLin ) // le das el total
    oModelGrid:SetValue( "JUROS",nTotImpuest)
    oModelGrid:SetValue( "PRESTACAO", nTotTot )    // modificas el VALOR
    oModelGrid:SetValue( "AMORTIZA", nTotalAmort )    // modificas el VALOR
    oModelGrid:SetLine( 1 ) // 
oView:Refresh() // haces un refresh a la VIEW
RestInter() // Restaura as variavis publicas
return

Agradeço desde já pela atenção.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Nahim, buenas tardes.

Compruebe que no es esta opción para restaurar las variables públicas RestInter () que le está dando problema?

Buenas tardes Felipe, ya quité la función y sigo con el mismo problema, intenta insertar 2 veces y me da Cannot insert duplicate key row in object ‘dbo.SEH010’

Nahim, buenos dias.

¿Podría por favor hacer un vídeo generando el error y adjuntar en la pregunta?

Felipe, ya adicioné el video mostrando que es lo que sucede, muchas gracias!

Boa Tarde Nahim,

O problema deve estar na definição da sua grid, a tabela referenciada está apontando para a SEH e é nela que o MVC vai tentar gravar o grid. Para contornar isso você terá que usar uma função customizada para commitar os dados.

Veja esse exemplo:

oModel := MPFormModel():New('ATFA060',/preValid /,/bPosValidacao/,{ |oModel| af060Commit( oModel ) }, /bCancel/ )

Na função AF060Commit() seria construida a logica de gravaçao do modelo.

Boa noite Alexandre! muito obrigado por seu ajuda, ou problema foi corregido. Abraço