Altera o tratamento, do tipo de dado ou precisão, para um campo/coluna retornada através de uma query.

Sintaxe

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

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cAlias

caractere

Indica o alias da query.

X


cField

caractere

Indica o nome do campo/coluna de retorno.

X


cType

caractere

Indica o tipo de dado a ser retornado através deste campo/coluna, que pode ser: D (Data), N (Numérico) ou L (Lógico).

X


nSize

numérico

Indica o tamanho do campo. Valor padrão: 0 (zero).



nPrecision

numérico

Indica a quantidade de decimais do campo. Valor padrão: 0 (zero).



Observações

Ao realizar a abertura de uma query, através da função TCGenQry, todos os campos numéricos são retornados com a precisão/tamanho 15,8 (máximo de 15 dígitos, sendo 8 decimais), e os demais campos são tratados e retornados como tipo "C" (caractere).

Desta forma, após abrir uma query sobre uma tabela de dados do ERP, podemos utilizar a função TCSetField para realizar as adequações de precisão de retorno para campos numéricos, conversão automática de tipos de retorno para os campos que não sejam explicitamente "C" ou "M" (memo).

Por exemplo, um campo do tipo "D", em uma tabela de dados do ERP, é criado no banco de dados pelo DBAccess como sendo um campo CHAR ou VARCHAR, mas é tratado automaticamente pelo DBAccess para que as variáveis AdvPL usadas para ler e gravar este campo sejam do tipo "D". Ao executar uma query nesta tabela e retornar o conteúdo desta coluna, ela será interpretada no AdvPL como uma variável do tipo "C", com tamanho 8. Como sabemos que o conteúdo desta coluna é efetivamente uma data, gravada como string no formato AAAAMMDD, podemos utilizar a função TCSetField para que esta coluna seja tratada no alias de retorno com o tipo de dado "D" do AdvPL.

Exemplos

// Obtém a estrutura atual da tabela CT2
aStru := CT2->( DBStruct() )

// Monta uma query para busca de dados
cQuery := "SELECT * FROM " + RetSqlName( 'CT2' ) + " WHERE CT2_FILIAL= '" + xFilial( 'CT2' )
cQuery += "' AND CT2_USRF = '000010' ORDER BY CT2_FILIAL, CT2_USRN"
cQuery := ChangeQuery( cQuery )

// Abre o cursor sob o alias "CT2TMP"
dbUseArea( .T., 'TOPCONN', TCGenQry( , , cQuery ), 'CT2TMP', .F., .T. )

// Partindo da estrutura da tabela original, define
// tratamento de tipos implícitos nas colunas de retorno
// Apenas para colunas de tipos D (data), L ( logico ) e/ou N (numérico)
nT := len( aStru )
For nI := 1 to nT
  If ( aStru[nI][2] $ 'DNL' )
    TCSetField( 'CT2TRB', aStru[nI, 1], aStru[nI, 2], aStru[nI, 3], aStru[nI,4] )
  Endif
Next

Veja também