DBSelectArea
Seleciona o alias de uma tabela como area ativa. Necessario antes de comandos posicionais (DBGoTop, DBSkip, etc).
Assinatura: DBSelectArea(cAlias) -> NIL
Retorna: NIL
DBSelectArea torna um alias a area "ativa" — qualquer comando posicional subsequente (DBGoTop, DBSkip, DBSeek sem prefixo) opera nele. Hoje o padrao moderno e usar prefixo (SA1->(DBSeek(...))) que evita esse problema.
Sintaxe
DBSelectArea("SA1")
DBGoTop()
While !Eof()
? SA1->A1_NOME
DBSkip()
EndDo
Pegadinhas
- Esquecer de restaurar a area — usar dentro de funcao sem
GetArea/RestAreabagunca o estado da funcao chamadora. - Alias case-sensitive em alguns contextos — sempre maiusculo (
"SA1", nao"sa1"). - Prefere prefixo —
SA1->(DBSeek(x))e melhor queDBSelectArea("SA1") + DBSeek(x)porque nao "rouba" a area atual. - Alias inexistente nao gera erro, mas comandos posteriores falham silenciosamente.
Padrao com preservacao de area
aSavArea := GetArea()
DBSelectArea("SA1")
DBSetOrder(1)
// ... operacao
RestArea(aSavArea) // restaura a area que estava ativa antes
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cAlias | Character | sim | Nome do alias (ex: "SA1", "SE1"). |
Exemplos
Modo legado vs moderno
// Legado
DBSelectArea("SA1")
DBSetOrder(1)
DBSeek(xFilial("SA1") + cCod)
// Moderno (recomendado)
SA1->(DBSetOrder(1))
SA1->(DBSeek(xFilial("SA1") + cCod))