[firebase-br] Meio OFF-TOPIC - Dúvida com formatação de valor fracionário para insert com sql D2009

papaia.forum papaia.forum em gmail.com
Ter Jun 16 14:06:55 -03 2009


Primeiramente desculpe-me se a pergunta fugir do escopo do grupo, mas como é
delphi + Firebird, penso que é pertinente.
Cenário: D2009 + DataSnap + Firebird + Drive do Thiago Borges.
Tenho que gravar em uma tabela filho e uma "neta", mas não dá para usar
master/detail, pois essa gravação é condicional; portanto estou utilizado o
evento AfterUpdateRecord do provider da tabela "Pai", onde testo a condição
pelo DeltaDS. Até aí tudo bem. O problema ocorre porque tenho que gravar um
valor fracionario (tipo 0.50 centavos) na tabela "neta", e já usei todo tipo
de formatação na instrução sql e não consigo gravar o valor com as casas
decimais (se usar uma mascara que arredonda aí consigo gravar). Segue a
instrução sql:


           // grava da tabela neta.
           Ssql:='insert into
COMISSOES_CONFIG_DETALHE(id_comissoes_config_detalhe, '
               + 'id_comissoes_config,data,comissao_supervisor_tipo,'
               + 'comissao_supervisor_valor, comissao_vendedor_tipo,'
               + 'comissao_vendedor_valor,id_usuario, datahoradigitacao)'
               + ' values (gen_id(gen_comissoes_config_detalhe_id,1) '
               + ', ' + IntToStr(cont)
               + ', ' + 
quotedstr(FormatDateTime('mm/dd/yyyy',DeltaDS.FieldByName('DATA').AsDateTime))
               + ', ' + 
DeltaDS.FieldByName('COMISSAO_SUPERVISOR_TIPO').AsString
               + ', ' + quotedstr(FormatFloat('#.00', 
DeltaDS.FieldByName('COMISSAO_SUPERVISOR_VALOR').AsCurrency))
               + ', ' + 
DeltaDS.FieldByName('COMISSAO_VENDEDOR_TIPO').AsString
               + ', ' + quotedstr(FormatFloat('#.00', 
DeltaDS.FieldByName('COMISSAO_VENDEDOR_VALOR').AsCurrency))
               + ', ' + DeltaDS.FieldByName('ID_USUARIO').AsString
               + ', current_timestamp)';
           sqlAux.Close;
           sqlAux.CommandText:=Ssql;
           sqlAux.ExecSQL(True);

O erro está na linha que tem o QuotedStr.
Já pesquisei nesta lista e em outras, e acho que já usei todas as opções de
máscaras, mas nenhum funcionou.
Se alguem puder dar alguma dica, antecipadamente deixo meus agradecimentos.

waldir silva.





Mais detalhes sobre a lista de discussão lista