Usina BRGuía AdvPL
Ingresar
← Todos los temas
FUNCIóNPublicado

TCSetField

TCSetField( <cAlias>, <cField>, <cType>, [nSize], [nPrecision] )

Ajusta el tipo, tamaño y precisión de una columna retornada por una query de DBAccess.

SQL y TopConnDBAccessQueryTipos de datosTCGenQryBase de datos
01 · DESCRIPCIÓN GENERAL

Descripción general

Las consultas abiertas mediante TCGenQry() retornan campos numéricos como 15,8 y tratan los demás como caracteres. TCSetField() redefine cómo el alias expone fechas, lógicos y numéricos. Es especialmente útil para fechas del ERP almacenadas como CHAR o VARCHAR en formato AAAAMMDD. Cambia la definición lógica del cursor, no los datos ni la tabla física.

02 · SINTAXIS

Sintaxis

TCSetField( <cAlias>, <cField>, <cType>, [nSize], [nPrecision] )

Parámetros

cAlias
CarácterObligatorio

Alias abierto para la query; si no existe provoca error fatal.

cField
CarácterObligatorio

Columna del cursor que será redefinida.

cType
CarácterObligatorio

Tipo AdvPL: D, N o L.

nSize
NuméricoOpcional

Dígitos totales para N, entre 1 y 18.

Predeterminado: 0
nPrecision
NuméricoOpcional

Decimales para N, entre 0 y nSize - 1.

Predeterminado: 0

Retorno

La documentación no define un retorno para la aplicación. El efecto relevante es el tratamiento actualizado de la columna.

03 · EJEMPLO PRÁCTICO

Ajustar fecha, lógico y numérico

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

User Function ExTiposConsulta()
    Local cAlias := GetNextAlias()
    Local cQuery := ""
    Local dFechaEmision
    Local lActivo
    Local nImporte

    cQuery := " SELECT C5_EMISSAO, C5_TIPO, C5_VALOR "
    cQuery += " FROM " + RetSqlName("SC5")
    cQuery += " WHERE D_E_L_E_T_ = '' "
    cQuery := ChangeQuery(cQuery)

    DbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cAlias, .F., .T.)
    TCSetField(cAlias, "C5_EMISSAO", "D")
    TCSetField(cAlias, "C5_TIPO", "L")
    TCSetField(cAlias, "C5_VALOR", "N", 15, 2)

    dFechaEmision := (cAlias)->C5_EMISSAO
    lActivo := (cAlias)->C5_TIPO
    nImporte := (cAlias)->C5_VALOR
    (cAlias)->(DbCloseArea())
Return {dFechaEmision, lActivo, nImporte}
Resultado esperado

Las columnas se leen con los tipos configurados. Valida los campos y el contenido lógico reales.

04 · EJEMPLO PRÁCTICO

Reutilizar la estructura de la tabla

Local aEstructura := CT2->(DBStruct())
Local nCampo

For nCampo := 1 To Len(aEstructura)
    If aEstructura[nCampo, 2] $ "DNL"
        TCSetField("CT2TMP", aEstructura[nCampo, 1], ;
            aEstructura[nCampo, 2], aEstructura[nCampo, 3], ;
            aEstructura[nCampo, 4])
    EndIf
Next nCampo
Resultado esperado

Los campos D, N y L orientan las columnas equivalentes del cursor.

BUENAS PRÁCTICAS
  • Ejecútala después de abrir el cursor y antes de leer la columna.
  • Usa D solo para AAAAMMDD.
  • Usa L para T o F.
  • Valida tamaño y precisión numéricos.
  • Usa DBStruct() para campos de tablas ERP.
  • Utiliza exactamente el alias del cursor.
ERRORES COMUNES
  • El contenido inválido se convierte en fecha vacía, cero o .F..
  • Alias, tamaño o precisión inválidos pueden provocar error fatal.
  • Otros tipos se ignoran y generan warning.
  • D siempre usa 8,0 y L usa 1,0.
  • El ejemplo del TDN mezcla CT2TMP y CT2TRB; esta página corrige el alias.

Contenido relacionado

REFERENCIAS
  1. TOTVS. TCSetField. TDN — TOTVSTEC. Última modificación: 10 ene. 2018.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR