Função: FieldPut
Permite definir o valor de um campo em uma tabela utilizando a posição ordinal do campo na estrutura da tabela.
FieldPut ( < nCampo>, < xValorAtt> ) --> xValor
Nome | Tipo | Descrição | Obrigatório | Referência |
nCampo | Numérico | Indica à posição ordinal do campo do alias/tabela atuais. | X | |
xValorAtt | Qualquer | Indica o valor que será atribuído no campo especificado. O tipo do parâmetro informado deve corresponder ao tipo do campo a ser atribuído. | X |
-
xValor(qualquer)
- Retorna o valor atribuído no campo, especificado como segundo parâmetro da função ( xValorAtt). Caso o número do campo não seja válido, a função retorna NIL.
FieldPut() é uma função de banco de dados que atribui o valor de uma expressão a um campo da tabela atual, informado a partir da posição ordinal deste na estrutura da tabela. Através dela, podemos atribuir um valor a um campo utilizando a sua posição na estrutura ao invés do nome do campo. Isto facilita a criação de funções genéricas para serviços de manipulação de dados, entre outras aplicações, permite setar um conteúdo a um campo sem a utilização do operador de macro-execução.
Importante |
---|
|
Comportamento/Compatibilidade
Caso o tipo do campo na base de dados seja data, e o parâmetro informado seja uma string (caractere), a função espera receber uma string contendo uma data no formato AAAAMMDD (ano com 4 dígitos, seguido do mês e dia, ambos com 2 dígitos), e neste caso, será realizada a atribuição da data correspondente na base de dados. Caso a string não corresponda a uma data válida, a aplicação será interrompida com uma mensagem de ocorrência de formato inesperado, diferenciada para cada RDD.
Por exemplo , a ocorrência "TopConn - Error - field value size is not 8 - on SetField -" será disparada caso tente ser feita uma atribuição a um campo do tipo "data" na base de dados, quando seja informado como parâmetro uma string que não tenha 8 bytes em seu conteúdo. Vale ressaltar que este comportamento foi mantido por compatibilidade com versões anteriores ao ERP Microsiga Protheus, e por questões de boas práticas de programação, é recomendado que seja respeitada a premissa de fornecer à função um argumento compatível com o tipo do campo na base de dados.
// Definir valor de campo utilizando operação de macro-execução // Primeiro obtém o nome do campo, depois faz a atribuição com macro. cFName := FIELD(nField)TMP->&cFname := xFieldVal// Usando FieldPut(). // Já tem o número do campo e o conteúdo, chama a função direto. TMP->(FieldPut(nField,xFieldVal))