Passagem de parametro consulta sql
Olá pessoal estou tentando usar um edit para multiplicar por um valor para gerar uma comissão. Mas ele me informa o seguinte erro "invalid data type for multiplication". Meu edit possui um valor assim como exemplo : 1,07
Código:
query5.Active := False;
Query5.SQL.Clear;
Query5.SQL.Add('select cd.codfuncionario,cd.nome,sum(os.comissao),(sum(os.comissao)* :pComiAju) from osexecc os');
Query5.SQL.Add('inner join osfecha oe on (oe.codos = os.codos and os.codempresa = oe.codempresa)');
Query5.SQL.Add('inner join cadfunc cd on (cd.codfuncionario = os.codfuncionario)');
Query5.SQL.Add('where oe.dtencerramento >= "'+maskedit1.Text+'" and oe.dtencerramento <= "'+maskedit2.Text+'"') ;
Query5.SQL.Add('group by cd.codfuncionario,cd.nome');
Query5.ParamByName('pComiAju').AsFloat := StrToFloat(edit4.Text);
Query5.Active := True;
form3.QuickRep1.Preview;
button1.Enabled:=false;
alguem pode ajudar?
Código:
query5.Active := False;
Query5.SQL.Clear;
Query5.SQL.Add('select cd.codfuncionario,cd.nome,sum(os.comissao),(sum(os.comissao)* :pComiAju) from osexecc os');
Query5.SQL.Add('inner join osfecha oe on (oe.codos = os.codos and os.codempresa = oe.codempresa)');
Query5.SQL.Add('inner join cadfunc cd on (cd.codfuncionario = os.codfuncionario)');
Query5.SQL.Add('where oe.dtencerramento >= "'+maskedit1.Text+'" and oe.dtencerramento <= "'+maskedit2.Text+'"') ;
Query5.SQL.Add('group by cd.codfuncionario,cd.nome');
Query5.ParamByName('pComiAju').AsFloat := StrToFloat(edit4.Text);
Query5.Active := True;
form3.QuickRep1.Preview;
button1.Enabled:=false;
alguem pode ajudar?
Guilhermelacerda
Curtidas 0
Respostas
Dorivan Sousa
15/07/2015
o separador de decimal é ponto e nao virgula.
ai vc usa um componente pra valores monetarios a JVCL tem alguns. ou vc pode fazer um stringreplace pra colocar um ponto no lugar da virgula
...
Query5.ParamByName('pComiAju').AsFloat := StrToFloat(stringreplace(edit4.Text,',','.',[rfReplaceAll]);
..
ai vc usa um componente pra valores monetarios a JVCL tem alguns. ou vc pode fazer um stringreplace pra colocar um ponto no lugar da virgula
...
Query5.ParamByName('pComiAju').AsFloat := StrToFloat(stringreplace(edit4.Text,',','.',[rfReplaceAll]);
..
GOSTEI 0