Áreas de trabalho, aliases e seleção de tabelas
Preserva a área do chamador ao acessar um alias existente.
Visão geral
Área de trabalho é o contexto de uma tabela aberta; alias é seu identificador. DBSelectArea troca a área corrente, enquanto a expressão ALIAS->(...) permite operar em outra área sem deixar essa seleção como contexto do chamador. FwGetArea salva apenas Alias, IndexOrd e Recno. Para reposicionar outra tabela, capture também essa tabela e restaure a área original por último. Não se trata de backup de filtros, relações, transações ou empresa. O exemplo adapta a preservação em duas áreas de Atilio e verifica antes se SB1 está aberta. (Fontes: refs. 1–4.)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed735()
Local aOriginal := FWGetArea()
Local aDestino := {}
// A tabela pertence ao chamador: nao abrir nem fechar aqui.
If Select("SB1") > 0
aDestino := SB1->(FWGetArea())
ConOut(SB1->(IndexKey()))
// Restaurar primeiro a tabela consultada e por ultimo o chamador.
FWRestArea(aDestino)
EndIf
FWRestArea(aOriginal)
Return NilLê a expressão do índice atual, ou nada faz em SB1 se não estiver aberta; não percorre registros. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- O fluxo pressupõe ausência de erro nas chamadas. Em processamento real, a limpeza também precisa ocorrer nas saídas por erro; não fechar aliases alheios com DbCloseAll.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.