Abertura de Tabelas
Distingue arquivo, alias, área de trabalho e RDD.
Visão geral
Abrir uma tabela associa uma fonte de dados a uma área de trabalho identificada por alias. O alias não é o nome físico do arquivo; a RDD determina como o acesso ocorre. DBUseArea permite abrir em área nova, informar driver, origem, alias e modos compartilhado e somente leitura. O primeiro argumento .F. ou Nil pode fechar a tabela da área atual; para uma abertura independente, usar .T. e alias único. Arquivos são resolvidos no servidor, não no computador do SmartClient. O índice Framework chamado Abertura de Tabelas relaciona OpenSm0/OpenSM0Excl; ele não é o contrato genérico de DBUseArea. (Refs. 1–2)
Exemplo comentado
#Include "Protheus.ch"
User Function EdAbre(cArquivo)
Local aArea := GetArea()
Local cAlias := GetNextAlias()
// Receber caminho autorizado de um DBF de teste no servidor.
If ValType(cArquivo) <> "C"
Return .F.
EndIf
If Empty(cArquivo)
Return .F.
EndIf
DBUseArea(.T., "DBFCDX", cArquivo, cAlias, .T., .T.)
// Fecha somente a area criada por esta funcao.
If Select(cAlias) > 0
(cAlias)->(DbCloseArea())
EndIf
RestArea(aArea)
Return .T.Demonstra abertura compartilhada e somente leitura, seguida de fechamento próprio no fluxo normal. Não trata exceções de arquivo, driver ou permissão; .T. no wrapper não substitui diagnóstico de erro. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não reabrir ou fechar alias pertencente ao chamador. O modo compartilhado ainda pode falhar diante de uma abertura exclusiva. Em código de produção, garantir limpeza e restauração também no tratamento de erros.
- 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.