Dúvida com soma no DBGrid
Bom dia pessoal, estou com uma duvida
eu tenho que somar a 1ª linha e a 2ª linha de uma coluna do dbgrid e colocar o resultado em uma outra 2ª Linha da coluna que criei, até ai blz
dai vem o problema tambem queria que ele somasse a 2ªlinha e a 3ªlinha e colocasse o resultado na 3ª linha da coluna que criei e assim por diante, de acordo com que vai salvando, tem como fazer isso sem dar last();
ex:
Col 2 linha 2 = col 1 linha 1 + col 1 linha 2
Col 2 linha 3 = col 1 linha 2 + col 1 linha 3
Col 2 linha 4 = col 1 linha 3 + col 1 linha 4
Col 2 linha 5 = col 1 linha 4 + col 1 linha 5
igual fazer soma no excell
eu tenho que somar a 1ª linha e a 2ª linha de uma coluna do dbgrid e colocar o resultado em uma outra 2ª Linha da coluna que criei, até ai blz
dai vem o problema tambem queria que ele somasse a 2ªlinha e a 3ªlinha e colocasse o resultado na 3ª linha da coluna que criei e assim por diante, de acordo com que vai salvando, tem como fazer isso sem dar last();
ex:
Col 2 linha 2 = col 1 linha 1 + col 1 linha 2
Col 2 linha 3 = col 1 linha 2 + col 1 linha 3
Col 2 linha 4 = col 1 linha 3 + col 1 linha 4
Col 2 linha 5 = col 1 linha 4 + col 1 linha 5
igual fazer soma no excell
Renatoaquino
Curtidas 0
Respostas
Acror
14/11/2007
Provavelmente você está trabalhando com banco de dados. Neste caso vc terá que criar campos calculados e no oncalcfield calcular os valores para esses campos que aparecerão na tela.
exemplo:
criar campo calculado na tabela
no public
val : double:
no after open
val := 0; // inicializa a variável
no oncalcfields
campo2 := campo1 + val; // joga no campo 2 o valor do campo1 corrente + o valor salvo. No caso do 1o. registro soma 0
val := campo1; // guarda o campo da coluna 1 para somar ao campo da 1a. coluna do próximo registro
exemplo:
criar campo calculado na tabela
no public
val : double:
no after open
val := 0; // inicializa a variável
no oncalcfields
campo2 := campo1 + val; // joga no campo 2 o valor do campo1 corrente + o valor salvo. No caso do 1o. registro soma 0
val := campo1; // guarda o campo da coluna 1 para somar ao campo da 1a. coluna do próximo registro
GOSTEI 0
Renatoaquino
14/11/2007
acror, até ai blz funcionou, mais eu queria que ele pegasse o valor da linha anterior e somasse com a atual e colocasse o valor na outra coluna
o meu grid exibe 8 linhas eu queria Algo assim
*******************
|totalhora|CampCalc |
*******************
| 500| |
*******************
| 320| 820 |
*******************
| 400| 1220 |
*******************
| 300| 1520 |
*******************
| 400| 1920 |
*******************
| 300| 2220 |
*******************
| 400| 2620 |
*******************
| 300| 2920 |
*******************
o meu grid exibe 8 linhas eu queria Algo assim
*******************
|totalhora|CampCalc |
*******************
| 500| |
*******************
| 320| 820 |
*******************
| 400| 1220 |
*******************
| 300| 1520 |
*******************
| 400| 1920 |
*******************
| 300| 2220 |
*******************
| 400| 2620 |
*******************
| 300| 2920 |
*******************
GOSTEI 0
Acror
14/11/2007
Agora entendi o que vc quer no oncalcfiels tem que ficar
if tabela.recno>1 then
begin
CampCalc:= totalhora+ val; // joga no campo 2 o valor do campo1
// corrente + o valor salvo. No caso do 1o.
// registro soma 0
val := CampCalc;
end
else
begin
CampCalc:= 0;
val := totalhora; // guarda o campo da coluna 1 para
// somar ao campo da 1a. coluna do próximo registro
end;
O que acontece: sempre que criamos um campo calculado ele vai passar pelo oncalcfields. Neste caso se for o primeiro registro ele vai colocar 0 no CampCalc e colocar o valor do campo totalhora dentro da variável val.
Do 2 registro em diante ele vai colocar no CampCalc o valor de CampCalc
if tabela.recno>1 then
begin
CampCalc:= totalhora+ val; // joga no campo 2 o valor do campo1
// corrente + o valor salvo. No caso do 1o.
// registro soma 0
val := CampCalc;
end
else
begin
CampCalc:= 0;
val := totalhora; // guarda o campo da coluna 1 para
// somar ao campo da 1a. coluna do próximo registro
end;
O que acontece: sempre que criamos um campo calculado ele vai passar pelo oncalcfields. Neste caso se for o primeiro registro ele vai colocar 0 no CampCalc e colocar o valor do campo totalhora dentro da variável val.
Do 2 registro em diante ele vai colocar no CampCalc o valor de CampCalc
GOSTEI 0
Renatoaquino
14/11/2007
Cara é quase isso, só que ele tem que somar
o total hora + campCal apartir da segunda linha, para quando chegar no final ele mostre o total acumulado
*******************
|totalhora |CampCalc |
*******************
| 500 | | 1ª hora ele soma 500+ 0
*******************
| 320 | 820 | 2ª hora soma 500 + 320 coloca no Campocalc
*******************
| 400 | 1220 | 3ª hora soma 820 + 400 coloca no Campocalc
*******************
| 300 | 1520 | 4ª hora soma 1220 + 300 coloca no Campocalc
*******************
| 400 | 1920 | e assim por diante
*******************
| 300 | 2220 |
*******************
| 400 | 2620 |
*******************
| 300 | 2920 | 8ª hora soma 2620+300 coloca no CampoCalc
*******************
Muito obrigado pela ajuda pois ja quebrei muito a cabeça com isso
o total hora + campCal apartir da segunda linha, para quando chegar no final ele mostre o total acumulado
*******************
|totalhora |CampCalc |
*******************
| 500 | | 1ª hora ele soma 500+ 0
*******************
| 320 | 820 | 2ª hora soma 500 + 320 coloca no Campocalc
*******************
| 400 | 1220 | 3ª hora soma 820 + 400 coloca no Campocalc
*******************
| 300 | 1520 | 4ª hora soma 1220 + 300 coloca no Campocalc
*******************
| 400 | 1920 | e assim por diante
*******************
| 300 | 2220 |
*******************
| 400 | 2620 |
*******************
| 300 | 2920 | 8ª hora soma 2620+300 coloca no CampoCalc
*******************
Muito obrigado pela ajuda pois ja quebrei muito a cabeça com isso
GOSTEI 0
Renatoaquino
14/11/2007
Alguem tem essa solução
GOSTEI 0
Acror
14/11/2007
Mas é exatamente isso que está fazendo.
Você já testou? me manda o fonte para ver onde vc está errando
Você já testou? me manda o fonte para ver onde vc está errando
GOSTEI 0