Somar cada linhas de duas colunas
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!
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
Curtidas 0
Melhor post
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:
teste aí pra ver se funciona
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;
GOSTEI 1
Mais Respostas
Bruno
17/08/2020
Alguém por favor??
GOSTEI 0
Emerson Nascimento
17/08/2020
de onde vem o conteúdo? é uma query?
GOSTEI 0
Bruno
17/08/2020
É uma query!
GOSTEI 0
Emerson Nascimento
17/08/2020
então é mais fácil resolver na query.
GOSTEI 0
Alberto
17/08/2020
No Select da Query faça algo assim:
Select Campo1, Campo2, Campo3, (Campo4 + Campo5) as MinhaSoma from Tabela
Select Campo1, Campo2, Campo3, (Campo4 + Campo5) as MinhaSoma from Tabela
GOSTEI 0
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
17/08/2020
Alguém poderia me auxiliar nessa questão? Tô com problemas nessa coisa.
GOSTEI 0
Bruno
17/08/2020
Alguém por favor?????
GOSTEI 0
Bruno
17/08/2020
Alguém por favor?????
GOSTEI 0
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?
explique como funciona; informe quais componentes de acesso ao banco; porque a sugestão de alterar a query não serve?
GOSTEI 0
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á !
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
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
17/08/2020
Deve voltar o valor anterior
GOSTEI 0
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
checkbox marcado
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
17/08/2020
Se não tem como fazer assim pode ser outra coluna
GOSTEI 0