Usina BRGuía AdvPL
Ingresar
← Todos los temas
COMANDOPublicado

TCQUERY

TCQUERY <cSqlExpr> ALIAS <cAlias> [NEW]

Ejecuta una consulta SQL mediante la RDD TOPCONN y expone el resultado en un área de trabajo AdvPL.

Base de datosSQLTopConnConsultaAliasComandos
01 · DESCRIPCIÓN GENERAL

Descripción general

TCQUERY ejecuta una expresión SQL en una base relacional mediante la RDD TOPCONN y abre el resultado con el alias informado. Durante la compilación se traduce en llamadas a DbUseArea() y TCGenQry(). Debe utilizarse NEW para abrir una nueva área de trabajo y evitar cerrar el área actual y cualquier tabla que ya esté abierta en ella.

02 · SINTAXIS

Sintaxis

TCQUERY <cSqlExpr> ALIAS <cAlias> [NEW]

Parámetros

cSqlExpr
CaractereObligatorio

Expresión SQL constante o variable ejecutada mediante TOPCONN.

ALIAS cAlias
CaractereObligatorio

Nombre del área de trabajo donde se abre el resultado. Puede ser literal o expresión.

NEW
CláusulaOpcional

Abre la consulta en una nueva WorkArea. La documentación oficial recomienda usarlo siempre para no cerrar el área actual.

03 · EJEMPLO PRÁCTICO

Consulta con alias dinámico

#Include "TOTVS.ch"
#Include "TopConn.ch"

User Function ExTCQuery()
    Local cAlias := GetNextAlias()
    Local cQuery := ""

    cQuery := "SELECT A1_COD, A1_NOME "
    cQuery += "FROM " + RetSqlName("SA1") + " "
    cQuery += "WHERE D_E_L_E_T_ = ' ' "
    cQuery += "ORDER BY A1_COD"
    cQuery := ChangeQuery(cQuery)

    TCQUERY (cQuery) ALIAS (cAlias) NEW

    While !(cAlias)->(Eof())
        ConOut((cAlias)->A1_COD + " - " + ;
            (cAlias)->A1_NOME)
        (cAlias)->(DbSkip())
    EndDo

    (cAlias)->(DbCloseArea())
Return
Resultado esperado

La consulta usa el nombre físico de SA1, recibe ajustes de compatibilidad, abre una nueva WorkArea y cierra el alias al terminar.

04 · EJEMPLO PRÁCTICO

Equivalencia conceptual del comando

#Include "TopConn.ch"

// Forma recomendada pela legibilidade:
TCQUERY (cQuery) ALIAS QRY NEW
QRY->(DbCloseArea())

// Internamente, o comando combina operações equivalentes a:
// DbUseArea(.T., "TOPCONN", ;
//     TCGenQry(,, cQuery), "QRY", .T., .T.)
Resultado esperado

TCQUERY simplifica la apertura con DbUseArea() y TCGenQry() y mantiene clara la intención del fuente.

BUENAS PRÁCTICAS
  • Incluye TopConn.ch para el comando; TOTVS.ch puede mantenerse como include general del fuente.
  • Utiliza NEW en cada consulta nueva, salvo una razón técnica cuidadosamente controlada.
  • Utiliza GetNextAlias() cuando la rutina pueda coexistir con otros alias o ejecutarse más de una vez.
  • Utiliza RetSqlName() para obtener nombres físicos de tablas Protheus y filtra registros eliminados cuando corresponda.
  • Pasa la instrucción por ChangeQuery() cuando necesites compatibilidad con los bancos homologados.
  • Cierra explícitamente el alias al terminar, preferentemente en un flujo que también trate errores.
  • Los campos de fecha o numéricos pueden requerir ajuste de tipo; consulta TCSetField() según el resultado y el banco.
ERRORES COMUNES
  • Sin NEW, TCQUERY utiliza la WorkArea actual y puede cerrar una tabla que ya estaba abierta.
  • Los alias fijos pueden colisionar con otras rutinas; genera uno cuando sea necesario.
  • No concatenes directamente entradas de usuarios, solicitudes o integraciones en SQL; valida los datos y usa mecanismos seguros disponibles.
  • El SQL específico de un banco reduce la portabilidad; revisa funciones, concatenación, límites y conversiones.
  • SELECT * aumenta el tráfico y el acoplamiento; solicita solo los campos necesarios.
  • Olvidar DbCloseArea() mantiene recursos y un área de trabajo ocupados.
  • Una consulta TOPCONN normalmente es de solo lectura; no supongas que puede editarse como una tabla común.

Contenido relacionado

REFERENCIAS
  1. TOTVS. Comando TCQUERY. TDN. Creado por Julio Wittwer el 31 de mayo de 2019.
  2. TOTVS. TCGenQry — consultas mediante la conexión TOPCONN. TDN.
  3. TOTVS. ChangeQuery — adaptación de consultas para los bancos homologados. TDN.
  4. TOTVS. RetSqlName — nombre físico de tablas en la base de datos. TDN.
  5. TOTVS. Desarrollo de queries en Protheus. TDN.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR