Atualizar tabela de preços
oi a eu aki de novo, presciso de uma idéia de como fazer para atualizar uma tabela de produtos..vamos supor que eu quero ajustar em 10¬ toda a tabela como eu faria isto ?
EDIT1 = onde recebe o valor em ¬ a ser ajustado,
BD_ESTOQUE = nome da tabela,
GS_EST_VALOR_VENDA = campo onde é colocado o valor de venda
o valor que estiver no GS_EST_VALOR_VENDA tem que ser calculado e e depois receber o novo valor...tipo a mercadoria custa 100 reias coloco 10 ¬ este valaor muda para 110,00 reias.. más este processo tem que ser feito na tabela toda..tem jeito ? vlw t+
EDIT1 = onde recebe o valor em ¬ a ser ajustado,
BD_ESTOQUE = nome da tabela,
GS_EST_VALOR_VENDA = campo onde é colocado o valor de venda
o valor que estiver no GS_EST_VALOR_VENDA tem que ser calculado e e depois receber o novo valor...tipo a mercadoria custa 100 reias coloco 10 ¬ este valaor muda para 110,00 reias.. más este processo tem que ser feito na tabela toda..tem jeito ? vlw t+
Gigatel
Curtidas 0
Respostas
Jonas_giron
27/08/2006
eu tenho um processo parecido com esse que vc quer
no programa eu tenho uma tela com os parametros ´A´ para acressimo e ´D´ para desconto, e a porcentagem ex 10,00 ¬
mando executar a procedure com os parametros acima.
no banco tenho essas duas procedures uma que estarta e a outra que atualiza..
--[ A procedure que estarta com um for select e recebe os valores do programa]--
CREATE PROCEDURE STR_STARTA_POR_REMUNERACAO (
TIPO_CALCULO CHAR(1),
PORCENTAGEM NUMERIC(15,2))
AS
DECLARE VARIABLE VAL_REMUNERACAO NUMERIC(15,2);
DECLARE VARIABLE COD_RENUNERACAO INTEGER;
begin
for select tabela_itens_remuneracao.codigo
, tabela_itens_remuneracao.valor_remunerado
from tabela_itens_remuneracao
into :cod_renuneracao, :val_remuneracao
do begin
execute procedure str_atualiza_remuneracao :cod_renuneracao, :val_remuneracao, :porcentagem, :tipo_calculo;
end
suspend;
end
--[ a procedure que atualiza com a porcentagem ]--
CREATE PROCEDURE STR_ATUALIZA_REMUNERACAO (
COD_REMUNERACAO INTEGER,
VAL_REMUNERACAO NUMERIC(15,2),
PORCENTAGEM NUMERIC(15,2),
TIPO_CALCULO CHAR(1))
AS
DECLARE VARIABLE VAL_CALCULADO NUMERIC(15,2);
begin
if (:tipo_calculo = ´A´) then begin
val_calculado = ((:val_remuneracao) + (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
if (:tipo_calculo = ´D´) then begin
val_calculado = ((:val_remuneracao) - (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
suspend;
end
você pode criar isso em uma só tambem.. pode ficar a teu critério.
no programa eu tenho uma tela com os parametros ´A´ para acressimo e ´D´ para desconto, e a porcentagem ex 10,00 ¬
mando executar a procedure com os parametros acima.
no banco tenho essas duas procedures uma que estarta e a outra que atualiza..
--[ A procedure que estarta com um for select e recebe os valores do programa]--
CREATE PROCEDURE STR_STARTA_POR_REMUNERACAO (
TIPO_CALCULO CHAR(1),
PORCENTAGEM NUMERIC(15,2))
AS
DECLARE VARIABLE VAL_REMUNERACAO NUMERIC(15,2);
DECLARE VARIABLE COD_RENUNERACAO INTEGER;
begin
for select tabela_itens_remuneracao.codigo
, tabela_itens_remuneracao.valor_remunerado
from tabela_itens_remuneracao
into :cod_renuneracao, :val_remuneracao
do begin
execute procedure str_atualiza_remuneracao :cod_renuneracao, :val_remuneracao, :porcentagem, :tipo_calculo;
end
suspend;
end
--[ a procedure que atualiza com a porcentagem ]--
CREATE PROCEDURE STR_ATUALIZA_REMUNERACAO (
COD_REMUNERACAO INTEGER,
VAL_REMUNERACAO NUMERIC(15,2),
PORCENTAGEM NUMERIC(15,2),
TIPO_CALCULO CHAR(1))
AS
DECLARE VARIABLE VAL_CALCULADO NUMERIC(15,2);
begin
if (:tipo_calculo = ´A´) then begin
val_calculado = ((:val_remuneracao) + (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
if (:tipo_calculo = ´D´) then begin
val_calculado = ((:val_remuneracao) - (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
suspend;
end
você pode criar isso em uma só tambem.. pode ficar a teu critério.
GOSTEI 0
Gigatel
27/08/2006
eu tenho um processo parecido com esse que vc quer
no programa eu tenho uma tela com os parametros ´A´ para acressimo e ´D´ para desconto, e a porcentagem ex 10,00 ¬
mando executar a procedure com os parametros acima.
no banco tenho essas duas procedures uma que estarta e a outra que atualiza..
--[ A procedure que estarta com um for select e recebe os valores do programa]--
CREATE PROCEDURE STR_STARTA_POR_REMUNERACAO (
TIPO_CALCULO CHAR(1),
PORCENTAGEM NUMERIC(15,2))
AS
DECLARE VARIABLE VAL_REMUNERACAO NUMERIC(15,2);
DECLARE VARIABLE COD_RENUNERACAO INTEGER;
begin
for select tabela_itens_remuneracao.codigo
, tabela_itens_remuneracao.valor_remunerado
from tabela_itens_remuneracao
into :cod_renuneracao, :val_remuneracao
do begin
execute procedure str_atualiza_remuneracao :cod_renuneracao, :val_remuneracao, :porcentagem, :tipo_calculo;
end
suspend;
end
--[ a procedure que atualiza com a porcentagem ]--
CREATE PROCEDURE STR_ATUALIZA_REMUNERACAO (
COD_REMUNERACAO INTEGER,
VAL_REMUNERACAO NUMERIC(15,2),
PORCENTAGEM NUMERIC(15,2),
TIPO_CALCULO CHAR(1))
AS
DECLARE VARIABLE VAL_CALCULADO NUMERIC(15,2);
begin
if (:tipo_calculo = ´A´) then begin
val_calculado = ((:val_remuneracao) + (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
if (:tipo_calculo = ´D´) then begin
val_calculado = ((:val_remuneracao) - (:val_remuneracao) * (:porcentagem) / (100));
update tabela_itens_remuneracao set
tabela_itens_remuneracao.valor_remunerado = :val_calculado
where tabela_itens_remuneracao.codigo =:cod_remuneracao;
end
suspend;
end
você pode criar isso em uma só tambem.. pode ficar a teu critério.
Vlw, vou dar uma estudada no código...t+ posto o resultado..
GOSTEI 0
Gigatel
27/08/2006
Opa...tava pensando em algo mais simples..veja se este código ele aparentimente não para de dar loop e trava o aplicativo..
Más será que funciona deste jeito ?
vlw..
var a,b:real; begin while not BD_ESTOQUE.Eof do a:= ((strtofloat(BD_ESTOQUEGS_EST_VALOR_VENDA.Value)*StrToInt(Edit2.Text))/100); b:=a+StrToFloat(BD_ESTOQUEGS_EST_VALOR_VENDA.value); BD_ESTOQUEGS_EST_VALOR_VENDA.Value := FloatToStr(b); BD_ESTOQUE.Next; end;
Más será que funciona deste jeito ?
vlw..
GOSTEI 0
Marco Salles
27/08/2006
melhor fazer um Update ....
Acredito que voce esteja usando BDE...
Então ocodigo abaixo deve servir...
Tipo isso:
Acredito que voce esteja usando BDE...
Então ocodigo abaixo deve servir...
Tipo isso:
procedure TForm1.Button1Click(Sender: TObject); var minhaQuery:TQuery; begin minhaQuery:=TQuery.Create(nil); minhaQuery.DatabaseName:=´Seu Alliase Ou Seu Caminho´; minhaQuery.sql.text:=´´; minhaQuery.SQL.Text:=´Update Sua Tabela set Seu_Campo = Seu_Campo * :Aumento´; minhaQuery.ParamByName(´Aumento´).AsFloat:=strtofloat(edit1.text); minhaQuery.ExecSQL; minhaquery.Free; query1.Close; //Pode ser o Table Ligado ao DataSource query1.open; //Pode ser o Table Ligado ao datasource end;
GOSTEI 0
Gigatel
27/08/2006
[quote:43a14d37c2=´Marco Salles´]melhor fazer um Update ....
Acredito que voce esteja usando BDE...
Então ocodigo abaixo deve servir...
Tipo isso:
[/quote:43a14d37c2]
Vlw Marcos....Uso interbase 6.5, uma maneira que achei e funcionou foi assim más se vc tiver algo a acrescentar...
Vlw
Acredito que voce esteja usando BDE...
Então ocodigo abaixo deve servir...
Tipo isso:
procedure TForm1.Button1Click(Sender: TObject); var minhaQuery:TQuery; begin minhaQuery:=TQuery.Create(nil); minhaQuery.DatabaseName:=´Seu Alliase Ou Seu Caminho´; minhaQuery.sql.text:=´´; minhaQuery.SQL.Text:=´Update Sua Tabela set Seu_Campo = Seu_Campo * :Aumento´; minhaQuery.ParamByName(´Aumento´).AsFloat:=strtofloat(edit1.text); minhaQuery.ExecSQL; minhaquery.Free; query1.Close; //Pode ser o Table Ligado ao DataSource query1.open; //Pode ser o Table Ligado ao datasource end;
Vlw Marcos....Uso interbase 6.5, uma maneira que achei e funcionou foi assim más se vc tiver algo a acrescentar...
var a,b:real; begin a:= ((strtofloat(BD_ESTOQUEGS_EST_VALOR_VENDA.Value)*StrToInt(Edit2.Text))/100); b:=a+StrToFloat(BD_ESTOQUEGS_EST_VALOR_VENDA.value); BD_ESTOQUE.Edit; BD_ESTOQUEGS_EST_VALOR_VENDA.Value := FloatToStr(b); BD_ESTOQUE.Next; end;
Vlw
GOSTEI 0
Marco Salles
27/08/2006
Vlw Marcos....Uso interbase 6.5, uma maneira que achei e funcionou foi assim más se vc tiver algo a acrescentar...
a sua maneira funciona , mas o mais indicado é uma sql no banco
Voce tentou implementar o codigo que eu lhe passei , apenas alterando o tipo de DataSet Usado...
No meu caso usei um TQuery . acho que é so colocar o tipo de DataSet que voce esta usando e executar o codigo.. Voce tentou fazer isto ????
Quais o componente de acesso que voce esta usando ????
GOSTEI 0