Campo numérico que não grava decimais

Olá pessoal!

Estou passando por um problema que não estou encontrando solução:

Tenho uma aplicação controle onde criei um campo tipo Moeda (com duas casas decimais).
Esta aplicação controle é chamada de uma aplicação formulário.
A função da mesma é que o usuário digite um valor para que o mesmo grave o valor no campo formulário.

Quando digito, por exemplo, R$ 300,00 na aplicação, ele grava, 30.000,00 na tabela do formulário.

Percebi que na propriedade do campo no controle o tipo de dados SQL só tem numérico, não sei se isso tem alguma interferência.

Alguém poderia me ajudar dando uma luz?

Obrigado desde já!

Como está esse campo na tabela?
Em qual evento no controle?

Olá Roberto;

Este campo no banco MySql está como decimal(14,2)

Percebi uma coisa:
Envio o valor existente da tabela para o controle via variável global.
Desta forma percebi que quando vem um decimal via variável global para a variável do controle ocorre o problema na gravação (rotina de UPDATE).

Como a propriedade Tipo SQL do campo só tem Numérico para escolher, ocorre o erro.

Imagino que no momento em que o SC vai gravar um numérico em um campo decimal, ele deva fazer a conversão das decimais.

Quando vem via variável global ocorre o erro.

E a formatação do campo no controle, como está?

A formatação no campo controle está com 14 posições e 2 decimais.
A propriedade do campo: Tipo SQL está como numérico (é a unica que existe).

Tive que tirar o conteúdo que vinha pela variável global, desta forma funcionou.

O ruim desta história, é que, seria muito bom trazer o valor existente para o usuário, se desejar, alterar.

Veja se esta formatado assim este campo no controle:

Abra as 2 telas em paralelo a imagem e o campo do SC e compare atributo a atributo.

Se você usou também a macro: sc_master_value é possível que o campo tenha ficado memorizado com as mascaras de formatação, ai você deve,
remover elas antes de passar a variável global ou na hora que receber ela na outra aplicação, com a função:

/*
Função ler o {Valor} e transformar em = 999999999.99

Exemplo de Utilização
$exemplo = $this->ValorBD({Valor})
*/
function ValorBD($valor_var) {

$X_valor_var=Str_Replace('.','',$valor_var);
$X_valor_var=Str_Replace(',','.',$X_valor_var);

   return $X_valor_var;

} // Fim da Função: ValorBD($valor_var)

Olá Jaiton;

Está exatamente como a imagem que enviaste.
Também estou utilizando o sc_master_value.

Criei a função abaixo, porém não surtiu o efeito desejado.

Mostrei o campo na tela e continua com valores incorretos.
A variável global, está vindo correta, quando assumo o campo do controle com a variável local ele “desformata”.

$Valor           = [glo_OrdSerVlrNFSer];
$ValorPecas = [glo_OrdSerVlrNFPec];

echo $Valor;

if (!empty($Valor)) {
	{Valor} = ValorBD($Valor);
	}

if (!empty($ValorPecas)) {
	{ValorPecas} = ValorBD($ValorPecas);
	}

Remove esses campos do controle: {Valor} e {ValorPecas},

Recria eles como:
{ValorOrdemServico}
{ValorOrdemPecas}

Testa rodar o controle direto sem pegar as globais, digita o valor e já pega eles no OnValidate com echo para conferir:
$ echo 'ValorOrdemServico = '.{ValorOrdemServico}."
";
$ echo 'ValorOrdemPecas = '.{ValorOrdemPecas}."
";

break;