sexta-feira, março 18, 2005

PowerBuilder – Pegando Valores em um ComputedField

Normalmente, pegamos valores em uma coluna na DataWindow e para isso utilizamos o GetItem.
Em algumas situações, precisamos de um valor de um ComputedField, o que também é um processo simples, mas pode se tornar chato se você precisar fazer este processo para vários campos.
A solução que encontrei para este problema é criar uma função que recupera o valor de um computedField.
Abaixo está o código necessário para a criação desta função:

// DESCRIÇÃO:
// * Pega o valor de um campo ComputeField
// * Similar ao GetItem, mas funciona para ComputeFiled
//
// ARGUMENTOS DE ENTRADA:
// adw_controle : DataWidow onde se encontra o Compute
// as_compute : Nome do ComputedField
// al_row : Numero da linha que deseja busca o valor. Se for um compute
// que se encontra no Header ou no
//
// RETORNO:
// * "" : Não conseguiu encontra o valor
// * <> de "" : Valor processado
//
// OBSERVAÇÃO:
//
// CRIADO POR :
// 17/03/2005 - Thiago Campos Pereira
// ALTERADO POR :
//
//========================================================================

string vls_retorno
string vls_expressao
vls_expressao = as_compute + ".Expression"
//Pega a expressão do compute
vls_expressao = adw_controle.Describe(vls_expressao)


//busca o valor
vls_retorno = "evaluate('"+vls_expressao+"', "+string(al_row)+")"
vls_retorno = adw_controle.describe(vls_retorno)
return vls_retorno

Um comentário:

Anônimo disse...

Olá
Eu sempre usei getItem para pegar o valor de um campo e sempre funcionou...