Acho que vou desistir de tentar entender.
Código: Selecionar todos
novaconsado("select * from tarsequencias where id>0",,,,,,,,55,"[ENTER] - marca *; [DEL]-apaga registro","fu_tarsequencias")
...
function novaconsado(sql,or,modo,coluna,prov,nTop1,nTop2,nBottom1,nBottom2,cRodape,func_usuario)
..
retorno=&(func_usuario)(sql)
Passa pra função de usuário o texto do select, não faz sentido.
Não estou disposto a tentar entender o conjunto, vai levar muito tempo.
Bom....
Se está incluindo/alterando/excluindo informações no servidor, precisa chamar oRs:Requery() pra consulta conter as atualizações.
Isso é equivalente a fazer outro select, mas é mais rápido.
E nesse caso, e também se está alterando a posição dentro do recordset, precisa do oBrowse:RefreshAll() antes de retornar ao Browse.
Se for apenas alteração no registro atual, oBrowse:refreshCurrent() seria suficiente.
Tente imaginar que são três coisas diferentes:
1) uma é sua consulta, e o registro atual da consulta
2) outra é a situação no servidor, que conforme a situação vai ficar diferente da consulta atual
3) outra é a situação do browse na tela, que considera o registro atual como a linha atual, e se mexer na posição, desconfigura o browse
Com base nisso, vai olhar sua rotina e o que acontece em cada parte.
Se atualizou o (2) vai precisar atualiar o (1) oRs:Requery(), e também atualizar (3) o browse oBrowse:RefreshAll()
Se atualizou o (2) apenas o registro atual, atualizar o (1) oRs:Requery(), no (3) browse só precisa atualizar esse registro oBrowse:RefreshCurrent()
Se mexeu na posição de (1), vai ter que atualizar (3) o browse geral oBrowse:RefreshAll()