Problemas com quot;REPEATquot;
11/01/2006
0
ao invés da rotina abaixo pegar item por item da tabela e calcular o percentual a ser alterado isoladamente, ele está pegando o valor da primeira linha da tabela, calculando o percentual e salvando o valor do mesmo para todas as linhas restantes da tabela produtos...
se alguem puder me dar uma luz :idea:
procedure Taltera_porcento.Btn_AlterarClick(Sender: TObject); var valor, tabela, calcula : Double; begin valor := StrToFloat(Edit_Valor.Text); tabela := DM.Tbl_ProdutosVALOR.AsFloat; if combo_Funcao.Text = ´Mais´ then begin DM.Tbl_Produtos.First; // Modifica o preço de todos os produtos para mais repeat calcula := tabela + (tabela * (valor / 100)); // calculo do percentual DM.Tbl_Produtos.Edit; DM.Tbl_ProdutosVALOR.AsFloat := calcula; DM.Tbl_Produtos.Post; DM.Tbl_Produtos.ApplyUpdates; DM.Tbl_Produtos.Next; until DM.Tbl_Produtos.Eof; ShowMessage(´O valor todos os produtos foram alterados´ +#13+ ´para ´ + Combo_Funcao.Text + ´ ´ + Edit_Valor.Text + ´ ¬´ ) end else begin DM.Tbl_Produtos.First; // Modifica o preço de todos os produtos para menos repeat calcula := tabela - (tabela * (valor / 100)); // calculo do percentual DM.Tbl_Produtos.Edit; DM.Tbl_ProdutosVALOR.AsFloat := calcula; DM.Tbl_Produtos.Post; DM.Tbl_Produtos.ApplyUpdates; DM.Tbl_Produtos.Next; until DM.Tbl_Produtos.Eof; ShowMessage(´O valor todos os produtos foram alterados´ +#13+ ´para ´ + Combo_Funcao.Text + ´ ´ + Edit_Valor.Text + ´ ¬´ ) end; end;
Mahdak
Posts
11/01/2006
Massuda
11/01/2006
Cpd_arim
var
w_qtdest:currency;
w_qtdand:currency;
begin
w_qtdest:=table1qtdest.value;
w_qtdand:=table1qtdand.value;
table1.first;
while not table1.Eof do
begin
table1.edit;
table1cuscon.value:=table1cuscon.Value/(w_qtdest+w_qtdand);
table1.post;
table1.next;
end;
qq duvida cpd_arim@hotmail.com
11/01/2006
Mahdak
Obs: te adicionei no meu msn... jpxst@hotmail.com
procedure Taltera_porcento.Btn_AlterarClick(Sender: TObject); var valor, tabela, calcula : Double; begin valor := StrToFloat(Edit_Valor.Text); if combo_Funcao.Text = ´Mais´ then begin DM.Tbl_Produtos.First; // Modifica o preço de todos os produtos para mais repeat tabela := DM.Tbl_ProdutosVALOR.AsFloat; calcula := tabela + (tabela * (valor / 100)); // calculo do percentual DM.Tbl_Produtos.Edit; DM.Tbl_ProdutosVALOR.AsFloat := calcula; DM.Tbl_Produtos.Post; DM.Tbl_Produtos.ApplyUpdates; DM.Tbl_Produtos.Next; until DM.Tbl_Produtos.Eof; ShowMessage(´O valor todos os produtos foram alterados´ +#13+ ´para ´ + Combo_Funcao.Text + ´ ´ + Edit_Valor.Text + ´ ¬´ ) end else begin DM.Tbl_Produtos.First; // Modifica o preço de todos os produtos para menos repeat tabela := DM.Tbl_ProdutosVALOR.AsFloat; calcula := tabela - (tabela * (valor / 100)); // calculo do percentual DM.Tbl_Produtos.Edit; DM.Tbl_ProdutosVALOR.AsFloat := calcula; DM.Tbl_Produtos.Post; DM.Tbl_Produtos.ApplyUpdates; DM.Tbl_Produtos.Next; until DM.Tbl_Produtos.Eof; ShowMessage(´O valor todos os produtos foram alterados´ +13+ ´para ´ + Combo_Funcao.Text + ´ ´ + Edit_Valor.Text + ´ ¬´ ) end; end;
11/01/2006
Mahdak
foi justamente isso massuda.... :D
11/01/2006
Aerreira
if combo_Funcao.Text = ´Mais´ then
update PRODUTOS set VALOR = VALOR + (VALOR * (PERCENTUAL / 100))
else
update PRODUTOS set VALOR = VALOR - (VALOR * PERCENTUAL / 100))
Sendo ´percentual´ o conteúdo do seu campo ´Edit_Valor.Text´
11/01/2006
Michael
Use [b:736f105a13]while..do[/b:736f105a13] no lugar de [b:736f105a13]repeat..until[/b:736f105a13].
while not DM.Tbl_Produtos.Eof do begin ... DM.Tbl_Produtos.Next; end;
Bom, isso é apenas para constar. A dica do colega [b:736f105a13]aerreira[/b:736f105a13] é o melhor caminho no seu caso.
[]´s
Clique aqui para fazer login e interagir na Comunidade :)