Fórum ibquery sum #364337
26/09/2008
0
Estou com uma difilculdade , estou usando uma ibquery para somar uma determinada coluna do meu db, fiz ela assim:
with DMCalc.IBQSomaPrincipal do
begin
close;
sql.Clear;
sql.add(´select sum(valor) as totalp from db_06´);/// where coddev=´+DM.IBTbRequeridosCODDEV.AsString);
open;
end;
Entao o campo totalp eu criei um compa calc para receber o valor da soma mas na hora de jogar para um dbedit ou edit ou maskedit ou label , nao aparace o valor .
Não sei o que fazer ou nao sei o que fiz de errado , pois no editor sql do dbexpert da certo .
se alguem puder ajudar .
Obrigado
Uso Delphi 7 + FireBird 2.0
Pattarelli
Curtir tópico
+ 0Posts
26/09/2008
Emerson Nascimento
Gostei + 0
26/09/2008
Pattarelli
(Valor) e o nome do campo, estou pegando errado ?
eu nao tinha mexido ainda com o sum e a primeira vez .
Gostei + 0
26/09/2008
Emerson Nascimento
edit.text := DMCalc.IBQSomaPrincipal.FieldByName(´totalp´).AsString;
Gostei + 0
27/09/2008
Pattarelli
Deu certo agora, muito obrigado.
Gostei + 0
27/09/2008
Pattarelli
Entao to eu aqui de novo , o passo anterior deu certo com a ajuda do Emerson.
Agora acontece o seguinte , tenho que somar 3 campos calculados da mesma tabela que crio na hora que gero do dbgrid, alguem pode me ajudar pois fica dando erro que nao acha o campo, ate ai sei que é por ser um campo que nao existe fisicamente na tabela como faco.
Alguem pode me ajudar..
Gostei + 0
27/09/2008
Emerson Nascimento
Gostei + 0
27/09/2008
Pattarelli
Eu uso o codigo abaixo no CalcFields do ibquery para calcular a correcao monetaria, juros e honorarios, depois somo tudo em um ultimo campo calculado, tenho que apresentar a soma das colunas unico campo nao calculado e o do valor principal.
seria isto o que vc pediu?
procedure TDMCalc.IBQBuscaTitulosCalcFields(DataSet: TDataSet);
Var descr : String;
vljurdia, ttjurdia: real;
Dia, Mes, Ano, Dia1, Mes1, Ano1: word;
begin
DecodeDate(date,Ano1,Mes1,Dia1);
with dmcalc.IBQBuscaIndiceAtual do
begin
close;
sql.Clear;
sql.add(´select * from db_07 where (mes_c=:dtfim) and (ano_c=:dtini)´);
sql.add(´order by mes_c,ano_c´);
ParamByName(´dtini´).Value:=ano1;
ParamByName(´dtfim´).Value:=mes1;
open;
if IsEmpty then
begin
descr:=´Não existe Comemoração no dia de Hoje´;
end;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=0 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualBTN_TR.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=1 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualINDICE2.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=2 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualMENS_IGPM.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=3 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualMENS_INPC.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=4 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualMENS_IPCA.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=5 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualIPC_FGV.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=6 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualINCC.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=7 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualIPC_FIPE.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=8 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualICV_DIEESE.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=9 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualIND_TRAB.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=10 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualIND_SM.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=11 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualM_BTN_IPCR.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=12 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualTJSP.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=13 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualTJMG.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=14 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualCLIQ.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=15 then
begin
IBQBuscaTitulosfator2.Value:=IBQBuscaIndiceAtualDLOF.Value;
end;
///// Indice por Vecto
DecodeDate(IBQBuscaTitulosVECTO.Value,Ano,Mes,Dia);
with IBQBuscaIndice do
begin
close;
sql.Clear;
sql.add(´select * from db_07 where (mes_c=:dtfim) and (ano_c=:dtini)´);
sql.add(´order by mes_c,ano_c´);
ParamByName(´dtini´).Value:=ano;
ParamByName(´dtfim´).Value:=mes;
open;
if IsEmpty then
begin
descr:=´Não existe Comemoração no dia de Hoje´;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=0 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceBTN_TR.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=1 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceINDICE2.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=2 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceMENS_IGPM.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=3 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceMENS_INPC.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=4 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceMENS_IPCA.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=5 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceIPC_FGV.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=6 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceINCC.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=7 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceIPC_FIPE.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=8 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceICV_DIEESE.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=9 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceIND_TRAB.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=10 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceIND_SM.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=11 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceM_BTN_IPCR.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=12 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceTJSP.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=13 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceTJMG.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=14 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceCLIQ.Value;
end;
if FrmCadRequeridos.ComboBox2.ItemIndex=15 then
begin
IBQBuscaTitulosfator1.Value:=IBQBuscaIndiceDLOF.Value;
end;
end;
if IBQBuscaTitulosfator1.Value=0 then
begin
Showmessage(´Não existe Valor no Fator de Correção na data de vecto, tente outra vez´);
IBQBuscaTitulosfator1.Value:=1;
end;
if IBQBuscaTitulosfator2.Value=0 then
begin
Showmessage(´Não existe Valor no Fator de Correção na data corrente, tente outra vez´);
IBQBuscaTitulosfator2.Value:=1;
end;
IBQBuscaTitulosCorrecao.Value:=(round((IBQBuscaTitulosVALOR.Value/IBQBuscaTitulosfator1.Value)*IBQBuscaTitulosfator2.Value))-IBQBuscaTitulosVALOR.Value;
IBQBuscaTitulosdias.Value:=(date-IBQBuscaTitulosVECTO.Value);
vljurdia:=strtoint(FrmCadRequeridos.ComboBox3.Text)/30;
ttjurdia:=((IBQBuscaTitulosdias.AsInteger*vljurdia)/100);
IBQBuscaTitulosJuros.Value:=((round((IBQBuscaTitulosVALOR.Value/IBQBuscaTitulosfator1.Value)*IBQBuscaTitulosfator2.Value))*ttjurdia);
IBQBuscaTitulosHono.Value:=(((round((IBQBuscaTitulosVALOR.Value/IBQBuscaTitulosfator1.Value)*IBQBuscaTitulosfator2.Value)+IBQBuscaTitulosJuros.Value)*(strtoint(FrmCadRequeridos.ComboBox4.Text)))/100);
IBQBuscaTitulosVlTotal.Value:=(IBQBuscaTitulosVALOR.Value+IBQBuscaTitulosCorrecao.Value+IBQBuscaTitulosJuros.Value+IBQBuscaTitulosHono.Value);
end;
Gostei + 0
30/09/2008
Emerson Nascimento
procedure TDMCalc.IBQBuscaTitulosCalcFields(DataSet: TDataSet); const campos array[0..15] of string = (´BTN_TR´, ´INDICE2´, ´MENS_IGPM´, ´MENS_INPC´, ´MENS_IPCA´, ´IPC_FGV´, ´INCC´, ´IPC_FIPE´, ´ICV_DIEESE´, ´IND_TRAB´, ´IND_SM´, ´M_BTN_IPCR´, ´TJSP´, ´TJMG´, ´CLIQ´, ´DLOF´); var icampo: byte; descr : String; vljurdia, ttjurdia: real; Dia, Mes, Ano, Dia1, Mes1, Ano1: word; begin DecodeDate(date, Ano1, Mes1, Dia1); with dmcalc.IBQBuscaIndiceAtual do begin close; sql.Clear; sql.add(´select * from db_07 where (mes_c=:dtfim) and (ano_c=:dtini)´); sql.add(´order by mes_c,ano_c´); ParamByName(´dtini´).Value:=ano1; ParamByName(´dtfim´).Value:=mes1; open; if IsEmpty then descr:=´Não existe Comemoração no dia de Hoje´; end; icampo := FrmCadRequeridos.ComboBox2.ItemIndex; IBQBuscaTitulosfator2.Value := IBQBuscaIndiceAtual.FieldByName(campos[icampo]).Value; ///// Indice por Vencto DecodeDate(IBQBuscaTitulosVECTO.AsDateTime, Ano, Mes, Dia); with IBQBuscaIndice do begin close; sql.Clear; sql.add(´select * from db_07 where (mes_c=:dtfim) and (ano_c=:dtini)´); sql.add(´order by mes_c,ano_c´); ParamByName(´dtini´).Value:=ano; ParamByName(´dtfim´).Value:=mes; open; if IsEmpty then descr:=´Não existe Comemoração no dia de Hoje´; end; IBQBuscaTitulosfator1.Value := IBQBuscaIndice.FieldByName(campos[icampo]).Value; if IBQBuscaTitulosfator1.Value = 0 then begin Showmessage(´Não existe Valor no Fator de Correção na data de vecto, tente outra vez´); IBQBuscaTitulosfator1.Value := 1; end; if IBQBuscaTitulosfator2.Value = 0 then begin Showmessage(´Não existe Valor no Fator de Correção na data corrente, tente outra vez´); IBQBuscaTitulosfator2.Value := 1; end; IBQBuscaTitulosCorrecao.Value := (round((IBQBuscaTitulosVALOR.Value / IBQBuscaTitulosfator1.Value) * IBQBuscaTitulosfator2.Value)) - IBQBuscaTitulosVALOR.Value; IBQBuscaTitulosdias.Value := (date - IBQBuscaTitulosVECTO.Value); vljurdia := strtofloatdef(FrmCadRequeridos.ComboBox3.Text,0) / 30; ttjurdia := ((IBQBuscaTitulosdias.AsInteger * vljurdia) / 100); IBQBuscaTitulosJuros.Value := ((round((IBQBuscaTitulosVALOR.Value / IBQBuscaTitulosfator1.Value) * IBQBuscaTitulosfator2.Value)) * ttjurdia); IBQBuscaTitulosHono.Value := (((round((IBQBuscaTitulosVALOR.Value / IBQBuscaTitulosfator1.Value) * IBQBuscaTitulosfator2.Value) + IBQBuscaTitulosJuros.Value) * (strtointdef(FrmCadRequeridos.ComboBox4.Text,0))) / 100); IBQBuscaTitulosVlTotal.Value := (IBQBuscaTitulosVALOR.Value + IBQBuscaTitulosCorrecao.Value + IBQBuscaTitulosJuros.Value + IBQBuscaTitulosHono.Value); end;
mas você não disse qual é o real problema. onde você está com dificuldade na atribuição dos valores.
Gostei + 0
08/10/2008
Pattarelli
A minha dificuldade e que presciso fazer uma soma de cada campo na pesquisa
tipo o campo valor eu consegui, acho q porque ele e um campo da tabela
os outros (hono,juros,correcao,total) sao campos calculados onde eu nao estou conseguindo somar som o sum.
Sera que espliquei certo
Muito o brigado pela ajuda.
t+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)