sql não funciona
Trabalho com sql ja faz um bom tempo.
Mas estou com problemas em montar uma query no delphi com base interbase.
Vejam:
>>>>Tenho esta primeira query que faz o somatório de campos double precision. Funciona normalmente.
q_aux2.SQL.clear;
q_aux2.SQL.add(´select sum(unid_frac_frac) frac from unidades_fracao where frac_cod=:frac_cod´);
q_aux2.parambyname(´frac_cod´).asstring:=q_aux.fieldbyname(´frac_cod´).asstring;
q_aux2.Open;
>>>>E esta outra pega o valor de uma outra tabela. Campo double precision. Funciona normalmente.
q_aux.SQL.clear;
q_aux.SQL.add(´select conta_rec_valor from conta_rec´);
q_aux.Open;
>>>>O problema está nesta query abaixo.
Agora, tenho uma outra query que faz alguns cálculos usando o resultado das querys acima.
q_aux1.sql.add(´insert into conta_rec_divisao (conta_rec_div_cod, conta_rec_valor) select´);
q_aux1.sql.add(´gen_id(gera_conta_rec_div_cod,1), cast(((unid_frac_frac*100/´+chr(39)+q_aux2.Fields[0].asstring+chr(39)+´)*´+chr(39)+q_aux.fieldbyname(´conta_rec_valor´).asstring+chr(39)+´)/100) as numeric(5,2))´);
q_aux1.sql.add(´from ......................´);
Desta maneira até funciona, mas se estes parâmetros que estou passando possuirem resultado com virgula o valor final desta query dá errado.
E se dentro da query eu colocar parâmetros como :valor, dá erro.
Como posso resolver o problema???
Mas estou com problemas em montar uma query no delphi com base interbase.
Vejam:
>>>>Tenho esta primeira query que faz o somatório de campos double precision. Funciona normalmente.
q_aux2.SQL.clear;
q_aux2.SQL.add(´select sum(unid_frac_frac) frac from unidades_fracao where frac_cod=:frac_cod´);
q_aux2.parambyname(´frac_cod´).asstring:=q_aux.fieldbyname(´frac_cod´).asstring;
q_aux2.Open;
>>>>E esta outra pega o valor de uma outra tabela. Campo double precision. Funciona normalmente.
q_aux.SQL.clear;
q_aux.SQL.add(´select conta_rec_valor from conta_rec´);
q_aux.Open;
>>>>O problema está nesta query abaixo.
Agora, tenho uma outra query que faz alguns cálculos usando o resultado das querys acima.
q_aux1.sql.add(´insert into conta_rec_divisao (conta_rec_div_cod, conta_rec_valor) select´);
q_aux1.sql.add(´gen_id(gera_conta_rec_div_cod,1), cast(((unid_frac_frac*100/´+chr(39)+q_aux2.Fields[0].asstring+chr(39)+´)*´+chr(39)+q_aux.fieldbyname(´conta_rec_valor´).asstring+chr(39)+´)/100) as numeric(5,2))´);
q_aux1.sql.add(´from ......................´);
Desta maneira até funciona, mas se estes parâmetros que estou passando possuirem resultado com virgula o valor final desta query dá errado.
E se dentro da query eu colocar parâmetros como :valor, dá erro.
Como posso resolver o problema???
Briciosm
Curtidas 0
Respostas
Emerson Nascimento
22/09/2006
isso dá erro?
q_aux1.sql.text := ´insert into conta_rec_divisao (conta_rec_div_cod, conta_rec_valor) ´+ ´select gen_id(gera_conta_rec_div_cod,1), ´+ ´ (((unid_frac_frac*100) / :valor_aux2) * :valor_aux) / 100 ´+ ´from ...´; q_aux1.parambyname(´valor_aux2´).asfloat := q_aux2.Fields[0].asfloat; q_aux1.parambyname(´valor_aux´).asfloat := q_aux.Fields[0].asfloat; q_aux1.execute;
GOSTEI 0