DbSelectArea
DbSelectArea( <nArea> | <cAlias> ) --> NilSelecciona el área de trabajo activa por número o por un alias ya abierto.
Descripción general
DbSelectArea() convierte un área de trabajo abierta en el área actual del proceso. No abre una tabla por sí sola: la apertura real se realiza con DbUseArea(), con rutinas de apertura de Protheus o con mecanismos bajo demanda del entorno. Después de la selección, las operaciones de base de datos sin alias explícito actúan sobre el área elegida.
Sintaxis
DbSelectArea( <nArea> | <cAlias> ) --> NilSelección de un área ya abierta
User Function ExDbSelectArea()
DbSelectArea("SA1")
DbSetOrder(1)
DbGoTop()
ConOut(SA1->A1_NOME)
ReturnSA1 pasa a ser el área de trabajo actual. DbSetOrder() y DbGoTop() actúan sobre SA1 porque no se informó otra área explícitamente.
Preservar y restaurar el área actual
User Function ExAreaSegura()
Local nAreaAnterior := Select()
DbSelectArea("SA2")
SA2->(DbSetOrder(1))
SA2->(DbGoTop())
ConOut(SA2->A2_NOME)
DbSelectArea(nAreaAnterior)
ReturnLa rutina consulta SA2 y luego restaura el área que estaba activa antes de la ejecución. Select() también preserva el caso en que no había ningún área seleccionada.
Expresión con alias sin cambiar el área actual
User Function ExAliasado()
Local cNombreProveedor := ""
cNombreProveedor := SA2->(A2_NOME)
SA2->(DbSetOrder(1))
SA2->(DbGoTop())
ConOut(cNombreProveedor)
ReturnLa expresión con alias ejecuta la lectura o función en el contexto de SA2 sin dejar SA2 como área actual para el resto del programa.
- Confirma que el alias ya esté abierto antes de seleccionar el área.
- Utiliza Select() o GetArea()/RestArea() cuando necesites preservar y restaurar el área original.
- En rutinas con varias tablas, prefiere expresiones con alias como SA1->(DbGoTop()) para evitar efectos colaterales en el área actual.
- DbSelectArea(0) selecciona un área libre; es útil antes de abrir un nuevo alias, pero no equivale a abrir automáticamente una tabla.
- DbSelectArea("SA1") no abre la tabla SA1 por sí sola. Si el alias no existe, el comportamiento depende del contexto y puede generar error de alias o activar el tratamiento bajo demanda de Protheus.
- Guardar solo Alias() puede fallar cuando no hay alias seleccionado; Select() también preserva la situación de área cero.
- Cambiar el área actual dentro de funciones auxiliares sin restaurarla puede afectar la rutina llamadora.
- No uses DbSelectArea() como sustituto de DbUseArea() cuando el objetivo sea abrir físicamente una tabla.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.