Somar cada linhas de duas colunas

17/08/2020

0

Tenho um grid onde a coluna necessidade e a coluna carteira tem seu valor e preciso somar cada linha delas e colocar essa soma na coluna necessidade.

Tentei assim,mas não tenho ideia como fazer

Begin
If cksoma.checked then
Qrefsnecessidade.float := qrefsnecessidade.float + qrefscarteira.float;
Qrefs.close;
Qrefs.open;
End;

Elas são trabalhadas em cima de temporarias

Me ajudem por favor obrigado!
Bruno

Bruno

Responder

Post mais votado

21/08/2020

não sei qual componente você utiliza, mas tente assim:
se ainda não persistiu os campos, persista-os. isso é feito dando um duplo-clique no compoenente query; clique o botão direito da janela que vai abrir; clique em 'Add all fields' (pra isso funcionar o componente query precisa estar 'aberto'). depois de fazer isso pode 'fechar' o componente.

depois de adicionar os campos 'padrão', você precisará criar um campo calculado.

naquela mesma janelinha - que agora tem a relação de campos - clique com o botão direito e depois clique em 'New field'. preencha assim:
name: Resultado
type: (escolha o tipo adequado, no caso deve ser float ou currency)
size: (se for um campo numérico, deve estar inibido, se não estiver, coloque o tamanho necessário)
selecione o radio button 'Calculated' e confirme essa tela.

agora a parte da programação.
no objeto query, verifique se a pripriedade AutoCalcFields está marcada. Se não estiver, marque.
daí, no evento OnCalcFields, você faz assim:
procedure TFormX.SeuDataSet1CalcFields(DataSet: TDataSet);
   // aqui uma função somente para fazer o if() numa linha
   function iif(Condicao: boolean; ValorVerdadeiro: variant; ValorFalso: variant): variant;
   begin
      if Condicao then
         Result := ValorVerdadeiro
      else
         Result := ValorFalso;
   end;
begin
   // agora irá atribuir a 'resultado' o valor de 'necessidade' acrescido ou não do valor de 'carteira'.
   SeuDatasetResultado.Value := SeuDatasetNecessidade.AsFloat + iif(CheckBox1.Checked, SeuDatasetCarteira.AsFloat, 0);
end;
teste aí pra ver se funciona

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

17/08/2020

Bruno

Alguém por favor??
Responder

18/08/2020

Emerson Nascimento

de onde vem o conteúdo? é uma query?
Responder

18/08/2020

Bruno

É uma query!
Responder

18/08/2020

Emerson Nascimento

então é mais fácil resolver na query.
Responder

18/08/2020

Alberto

No Select da Query faça algo assim:

Select Campo1, Campo2, Campo3, (Campo4 + Campo5) as MinhaSoma from Tabela
Responder

18/08/2020

Bruno

Pensei nisso porém ele pode ser alterado em tempo de execução para simulação. As colunas estão dentro de uma temporária para "brincar" com alterações. Uma coluna vem de uma procedure e a outra de uma tabela . Alguém teria uma ideia de como alterar no código do Delphi?
Responder

19/08/2020

Bruno

Alguém poderia me auxiliar nessa questão? Tô com problemas nessa coisa.
Responder

20/08/2020

Bruno

Alguém por favor?????
Responder

20/08/2020

Bruno

Alguém por favor?????
Responder

21/08/2020

Emerson Nascimento

você monta a query em tempo de projeto ou em tempo de execução?

explique como funciona; informe quais componentes de acesso ao banco; porque a sugestão de alterar a query não serve?
Responder

21/08/2020

Bruno

Tenho uma query chamada qrefs que traz o select * from #refs. Esse select é criado na qcriatemp. Aí a coluna necessidade que está na qrefinsert e a coluna saldo vem de uma consulta que está na qconsulta. Elas estão na qrefs onde é criada através do sql.add(necessidade integer);sql.add(,saldo float) ;onde o usuário altera em tempo de execução para apenas simular os valores.
Isso não posso fazer pois preciso somar apenas as colunas quando clicar num checkbox e mostrar na coluna necessidade. Aguardo retorno,obrigado desde já !
Responder

21/08/2020

Emerson Nascimento

deixa eu perguntar... se o usuário clicar no checkbox (juntou os valores) e alterar o conteúdo, quando ele desmarcar o que acontece ?

Responder

21/08/2020

Bruno

Deve voltar o valor anterior
Responder

21/08/2020

Emerson Nascimento

precisa mesmo ser na mesma coluna?
você não pode criar uma outra coluna, por exemplo, resultado (somente leitura), e nessa coluna apresentar o valor somente de necessidade ou, quando quando clicar no checkbox, apresentar a soma de necessidade e carteira ?

ficaria assim:
checkbox DESmarcado
necessidade    carteira      resultado
14             11            14

checkbox marcado
necessidade    carteira      resultado
14             11            25 
Responder

21/08/2020

Bruno

Se não tem como fazer assim pode ser outra coluna
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar