vms Postado Janeiro 9, 2008 Denunciar Share Postado Janeiro 9, 2008 ola pessoaltenho uma tabela paradox com os seguintes camposdepartamento(A)valor($)no departamento tem os seguintes itens:compravendatenho varias compras e venda durante o mescomo faço pra calcular total só da compra e o total so de vendae colocar em Edit Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 10, 2008 Denunciar Share Postado Janeiro 10, 2008 Vai um exemplo bem simples ... digamos que a minha query se chama QDepart, e que na minha tabela tenha os campos : compras e vendasprocedure TForm1.Button1Click(Sender: TObject); var i : integer; valComp, valVend : real; begin valComp := 0; valVend := 0; for i := 1 to QDepart.recordcount do begin valComp := valComp + QDepartCompras.Value; valVend := valVend + QDepartVendas.Value; end; Edit1.Text := 'Total das Compras : R$ ' + format(%d,[valComp]); Edit2.Text := 'Total das Vendas : R$ ' + format(%d,[valVend]); end;OBS: isto é apenas uma idéia de como fazer....abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 11, 2008 Autor Denunciar Share Postado Janeiro 11, 2008 ola jhonasacho que me expressei errado a dica é interessante, mas não era bem issoa tabela é assim!Departamento|A|Valor|$durante o mes compro varios produtos p/ os departamentosDepartamento - ValorManutenção - 50,00Projeto - 100,00Projeto - 150,00Zeladoria - 20,00Zeladoria - 30,00...no mes inteiro vou ter varias compras dessaqueria fazer a soma apenas de ProjetoApenas de Zeladoria Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 11, 2008 Denunciar Share Postado Janeiro 11, 2008 queria fazer a soma apenas de ProjetoApenas de Zeladoriaamigo ... o raciocínio é o mesmo ( é só adaptar a idéia ao seu código ) .... não tem mistérioprocedure TForm1.Button1Click(Sender: TObject); var i : integer; valComp0, valComp1 : real; begin valComp0 := 0; valComp1 := 0; for i := 1 to QDepart.recordcount do begin if QDepartDepartamento.Value = 'Projeto' then valComp0 := valComp0 + QDepartValor.Value; if QDepartDepartamento.Value = 'Zeladoria' then valComp1 := valComp1 + QDepartValor.Value; QDepart.Next; end; Edit1.Text := 'Total das Compras (Departamento Projetos) : R$ ' + format(%d,[valComp0]); Edit2.Text := 'Total das Compras (Departamento Zeladoria) : R$ ' + format(%d,[valComp1]); end;OBS: existem outras maneiras de se obter o mesmo resultadoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 11, 2008 Autor Denunciar Share Postado Janeiro 11, 2008 Beleza Jhonas!era exatamente isso que eu queria, mas ta dando errono primeiro click, soma normalmente, mas se clico denovoum Edit zera (0) e o outro fica com um valor enorme.outro erro ta no formato[Error]UPTest.pas(98): Illegal character in input file: '%' ($25)[Error] UPTest.pas(98): There is no overloaded version of 'Format' that can be called with these argumentsfiz uma alteração pra dar "certo"o que pode ta errado?fiz dessa forma.procedure TForm1.ToolButton4Click(Sender: TObject); var i : integer; valComp0, valComp1 : real; begin valComp0 := 0; valComp1 := 0; for i := 1 to DM.Q1.recordcount do begin if DM.Q1Departamento.Value = Edit3.Text then valComp0 := valComp0 + DM.Q1Valor.Value; if DM.Q1Departamento.Value = 'ZELADORIA' then valComp1 := valComp1 + DM.Q1Valor.Value; DM.Q1.Next; Edit1.Text := 'Total Dep. Projetos ) : R$ ' + floattostr(valComp0); Edit2.Text := 'Total Dep. Zeladoria) : R$ ' + floattostr(valComp1); //Edit1.Text := 'Total Dep. Projetos ) : R$ ' + format(%d,[valComp0]); //Edit2.Text := 'Total Dep. Zeladoria) : R$ ' + format(%d,[valComp1]); end; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 11, 2008 Denunciar Share Postado Janeiro 11, 2008 Modifique desta maneiraprocedure TForm1.ToolButton4Click(Sender: TObject); var i : integer; valComp0, valComp1 : real; begin valComp0 := 0; valComp1 := 0; for i := 1 to DM.Q1.recordcount do begin if DM.Q1Departamento.Value = Edit3.Text then valComp0 := valComp0 + DM.Q1Valor.Value; if DM.Q1Departamento.Value = 'ZELADORIA' then valComp1 := valComp1 + DM.Q1Valor.Value; DM.Q1.Next; end; Edit1.Text := 'Total Dep. Projetos ) : R$ ' + format('%d',[valComp0]); Edit2.Text := 'Total Dep. Zeladoria) : R$ ' + format('%d',[valComp1]); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 11, 2008 Autor Denunciar Share Postado Janeiro 11, 2008 ele compila mas dar o mesmo erro quando clico no botaoproject programtest.exe raised exception class EConvertError with message 'Format'%d'invalid or incompatible with argument'. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 11, 2008 Denunciar Share Postado Janeiro 11, 2008 tudo bem ... então tenta esteEdit1.Text := 'Total Dep. Projetos ) : R$ ' + format('%8.2f',[valComp0]);Edit2.Text := 'Total Dep. Zeladoria) : R$ ' + format('%8.2f',[valComp1]);acho que agora vai funcionarabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 11, 2008 Autor Denunciar Share Postado Janeiro 11, 2008 pois é, já tinha feito desse jeito mas não dar certo,tambem.jhonas, você testou? no seu deu? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 11, 2008 Denunciar Share Postado Janeiro 11, 2008 estou usando delphi 3, 5 e 7 ... funciona voce pode tentar desta outra maneira Edit1.Text := 'Total Dep. Projetos : R$ ' + FormatFloat('#,##0.00',valComp0);Edit2.Text := 'Total Dep. Zeladoria : R$ ' + FormatFloat('#,##0.00',valComp1);procure no help do delphi por Format stringsabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 14, 2008 Autor Denunciar Share Postado Janeiro 14, 2008 ola jhonasdesde já agradeço pela pacienciamas esses format's não estao funcionando.na verdade o format não é muito importante agora, queria resolver o outro problema.quando clico uma vez no button o calculo vai correto mas quando clico outra vez o edit zera (0)o que pode ser?porque dessa forma não consigo atualizar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 15, 2008 Denunciar Share Postado Janeiro 15, 2008 Jhonas, permita-me uma parte nesta discussão.queria resolver o outro problema.quando clico uma vez no button o calculo vai correto mas quando clico outra vez o edit zera (0)o que pode ser?vms, ao identar seu código lá no post#5, observei que algum problema com a soma realmente você pode ter. Observe que você não está posicionando o dataset no primeiro registro antes de percorrer todos os existentes. Assim, na primeira vez o dataset está posicionado no registro inicial e, ao ler os próximos (via Next), voce vai movendo o dataset até seu último registro. Mas, em uma segunda vez, o dataset está no último registro e você vai somando o valor atual (o último, onde ficou na operação anterior) "n" vezes (n=RecordCount) - logo não está correto.Outra coisa, observada, é que você não seguiu exatamente a idéia que o colega Jhonas colocou no post#4. Lá ele lhe exemplificou colocando a atribuição do somatório aos edits, apenas após a conclusão do loop - o correto.Assim, segue aquele código corrigido nestes termos:procedure TForm1.ToolButton4Click(Sender: TObject); var i : integer; valComp0, valComp1 : real; begin valComp0 := 0; valComp1 := 0; // A cada click do botão, você tem que realizar a soma // a partir do registro inicial, então, você deve posicionar // o dataset no registro inicial DM.Q1.First; for i := 1 to DM.Q1.recordcount do begin if DM.Q1Departamento.Value = Edit3.Text then valComp0 := valComp0 + DM.Q1Valor.Value; if DM.Q1Departamento.Value = 'ZELADORIA' then valComp1 := valComp1 + DM.Q1Valor.Value; DM.Q1.Next; end; // Estes edits recebem o total após a conclusão da soma, portanto // esta atribuição TEM que ficar fora do loop!!! Edit1.Text := 'Total Dep. Projetos ) : R$ ' + floattostr(valComp0); Edit2.Text := 'Total Dep. Zeladoria) : R$ ' + floattostr(valComp1); end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 15, 2008 Autor Denunciar Share Postado Janeiro 15, 2008 (editado) deu certo galerao erro de zerar no segundo clik foi corrigidocom a dica do micheus, mas ainda continuava um erro,so atualizava uma vez, se eu alterasse o valor ele nãoatualizava mais, so se reabrir o programa, então substituia query por uma table e deu certovaleu pessoal.special thanks for Jhonas end Micheus! Editado Janeiro 15, 2008 por Micheus Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
vms
ola pessoal
tenho uma tabela paradox com os seguintes campos
departamento(A)
valor($)
no departamento tem os seguintes itens:
compra
venda
tenho varias compras e venda durante o mes
como faço pra calcular total só da compra e o total so de venda
e colocar em Edit
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.