cAliasAlias aberto para a query. Um alias inexistente provoca erro fatal.
AdvPL GuiaTCSetField( <cAlias>, <cField>, <cType>, [nSize], [nPrecision] )Ajusta o tipo, o tamanho e a precisão de uma coluna retornada por uma query aberta pelo DBAccess.
Consultas abertas por TCGenQry() retornam campos numéricos, por padrão, com tamanho e precisão 15,8; os demais campos são tratados como caractere. TCSetField() redefine no alias o tratamento de colunas que representam datas, valores lógicos ou números. Isso é especialmente importante para datas do ERP armazenadas fisicamente como CHAR ou VARCHAR no formato AAAAMMDD. A função altera a estrutura lógica do cursor já aberto, não os dados ou a estrutura física da tabela.
TCSetField( <cAlias>, <cField>, <cType>, [nSize], [nPrecision] )cAliasAlias aberto para a query. Um alias inexistente provoca erro fatal.
cFieldNome da coluna do cursor cujo tratamento será redefinido.
cTypeTipo AdvPL desejado: D para data, N para numérico ou L para lógico.
nSizeQuantidade total de dígitos para N, entre 1 e 18. É desconsiderado para D e L.
Padrão:0nPrecisionCasas decimais para N, entre 0 e nSize - 1. É desconsiderado para D e L.
Padrão:0A documentação não define um valor de retorno para uso pela aplicação. O efeito relevante é a alteração do tratamento da coluna no alias informado.
#Include "TOTVS.ch"
#Include "TopConn.ch"
User Function ExTiposQuery()
Local cAlias := GetNextAlias()
Local cQuery := ""
Local dEmissao
Local lAtivo
Local nValor
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)
dEmissao := (cAlias)->C5_EMISSAO
lAtivo := (cAlias)->C5_TIPO
nValor := (cAlias)->C5_VALOR
(cAlias)->(DbCloseArea())
Return {dEmissao, lAtivo, nValor}As colunas passam a ser lidas com os tipos AdvPL definidos. Confirme o conteúdo lógico e os campos reais do dicionário.
Local aEstrutura := CT2->(DBStruct())
Local nCampo
For nCampo := 1 To Len(aEstrutura)
If aEstrutura[nCampo, 2] $ "DNL"
TCSetField("CT2TMP", aEstrutura[nCampo, 1], ;
aEstrutura[nCampo, 2], aEstrutura[nCampo, 3], ;
aEstrutura[nCampo, 4])
EndIf
Next nCampoCampos D, N e L da estrutura original orientam o tratamento das colunas equivalentes do cursor CT2TMP.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de seus titulares. O AdvPL Guia é independente e utiliza citações limitadas, atribuídas e justificadas por finalidade educativa. Consulte os Termos de Uso. Termos de Uso