Somar cada linhas de duas colunas

SQL Server

Delphi

17/08/2020

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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
GOSTEI 1

Mais Respostas

Bruno

Bruno

17/08/2020

Alguém por favor??
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/08/2020

de onde vem o conteúdo? é uma query?
GOSTEI 0
Bruno

Bruno

17/08/2020

É uma query!
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/08/2020

então é mais fácil resolver na query.
GOSTEI 0
Alberto

Alberto

17/08/2020

No Select da Query faça algo assim:

Select Campo1, Campo2, Campo3, (Campo4 + Campo5) as MinhaSoma from Tabela
GOSTEI 0
Bruno

Bruno

17/08/2020

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?
GOSTEI 0
Bruno

Bruno

17/08/2020

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

Bruno

17/08/2020

Alguém por favor?????
GOSTEI 0
Bruno

Bruno

17/08/2020

Alguém por favor?????
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/08/2020

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?
GOSTEI 0
Bruno

Bruno

17/08/2020

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á !
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/08/2020

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

GOSTEI 0
Bruno

Bruno

17/08/2020

Deve voltar o valor anterior
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/08/2020

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 
GOSTEI 0
Bruno

Bruno

17/08/2020

Se não tem como fazer assim pode ser outra coluna
GOSTEI 0
POSTAR