Refresh em tela MVC do tipo visualização

Bom Dia,

Criei uma tela em MVC que exibe uma modelo X com pai, filho e neto em modo de visualização.

Após atualizar um valor no banco, gostaria que esse valor refletisse na janela sem fechar a abrir novamente.

Tentei usar o FWViewActive e dar um refresh, mas mesmo assim os dados não são atualizados.

Alguém pode me ajudar, por favor? Grato.

Rubens, tudo bom!
Como já foi falado neste post o certo é você utilizar a classe TTimer - TOTVSTEC - TDN, o objeto Timer setado na View irá te dar meios para atualizar a tela. Para que funcione perfeitamente, na função que você chamar no temporizador você tera que manipular a operação do modelo, exemplo, se abriu a tela como modo vizualização, esta operação não permite realizar nenhuma alteração de dados, você deverá trocar para a operação de alteração, realizar a mudança, e após voltar a operação original.
Fiz algo muito parecido com a sua duvida e funciona perfeitamente.

oView:SetTimer( nMlsTime, {|| U_fAtuTela( oModel, oView )})

User Function fAtuTela( oModel, oView )
Local nOperation := oModel:GetOperation()

	oModel:DeActivate()
	oModel:SetOperation(4)
	oModel:Activate()
	atualizando os campos....
	oView:Refresh("FLDZP6")

	oModel:DeActivate()
	oModel:SetOperation( nOperation )
	oModel:Activate()

Return .T.

Boa tarde,

Tenho uma rotina nessa mesma estrutura, para atualizar a View utilizo desse jeito.


    If Type( 'oView' ) != "U"
        oView:Refresh( 'V_FILHO2')
    EndIf

Sendo que o oView é o retorno da funçõa viewdef()

Boa Tarde Ruann,

Fiz dessa forma:
oView:= FWViewActive()
oView:Refresh(“VIEW_SZ2”)

mas acontece o mesmo problema.

Se um outro usuário altera um dados, a tela aberta não reflete essa alteração após o refresh().

Rubens, no caso vocês está falando, o usuário A está com a tela aberta, ai o usuário B faz uma alteração, ai vc quer atualizar a tela do usuário A? Nesse caso vc tem q recarregar os dados novamente no modelo e atualizar a view.

Exatamente isso, até o momento estou precisando fechar a tela e abrir novamente. Tem alguma forma de dar o refresh nos dados?

Complementando o que o Ruann disse. Segue o link da função Refresh http://tdn.totvs.com/display/framework/FWFormView.

Att

Saudações Rubens,

Veja a classe https://tdn.totvs.com/display/tec/TTimer

Ela cria um objeto que executa um bloco de código respeitando o temporizador, atrelado a um componente da interface visual.

Fala Rubens,

Acho que isso pode te ajudar. Funcionou comigo.

oModel := FWModelActive()

If oModel:IsActive() oModel:DeActivate() EndIf

oModel:Activate()

//restante do código