Array
(
)

Orçamento e itens que não existe no estoque...

Gigatel
   - 14 dez 2005

OI... com muita luta e ajuda do colega Edilcimar conseguí montar uma função onde atualizo os íntes que saíram de um estoque...só que como mexo com uma oficina de informática, acontece de ter ualgum HD usado que não tem no estoque ( quem nunca correu atrás de um HD usado para akela máquininha velha surrada de trabalho ) aí criei uma opção de cadastro onde chamei de íten avulso onde posso colocar akela pessa usada que não está no estoque...más a função que tenho só atualiza os ítens do estoque ... ou seja vai dar erro quando pegar algum íten que num existe no estoque, tem como fazer a função ignorar o íten não exitente no estoque ? veja a função..

#Código


begin
with BD_VENDA_ITENS do
begin
First;
Try
while not BD_VENDA_ITENS.eof do
begin
BD_ESTOQUE.Close;
BD_ESTOQUE.SQL.Clear;
BD_ESTOQUE.SQL.Add(´select * from ESTOQUE where GS_EST_CODIGO=´+inttostr(BD_VENDA_ITENSGS_VEI_CODPROD.Value));
BD_ESTOQUE.Open;
BD_ESTOQUE.Edit;
BD_ESTOQUEGS_EST_QNT.Value := BD_ESTOQUEGS_EST_QNT.Value - BD_VENDA_ITENSGS_VEI_QNT.Value;
BD_ESTOQUE.Post;
BD_VENDA_ITENS.next;
end;
DM1.IBTransaction1.CommitRetaining;
except
showmessage(´problema com o banco de dados´);
DM1.IBTransaction1.rollback;
end;
end;


a tabela BD_VENDA_ITENS é o que recebe os valores do estoque e os avulso...
Vlw e até mais...


Zekas
   - 14 dez 2005

Adicione um novo atributo em sua tabela (ex. fg_estoque) para saber se o item é para controle de estoque ou não. No seu select, inclua a verificação do valor do novo atributo incluso. Se for estoque, baixe o item, se não, não baixe.

Att.

Zekas


Gigatel
   - 14 dez 2005


Citação:
Adicione um novo atributo em sua tabela (ex. fg_estoque) para saber se o item é para controle de estoque ou não. No seu select, inclua a verificação do valor do novo atributo incluso. Se for estoque, baixe o item, se não, não baixe.

Att.

Zekas



OI blz ?.. na verdade estva pensado em algo mais simples ( se for ) o código acima exite um filtro na tabela acossiado por um código, pensei...quando o código for executado a tabela estoque num terá nada...logo aí poderia se criar uma condição ignorando a segunda estapa onde seria a subtração do campo...


Okama
   - 14 dez 2005

Olá, utilize apenas uma chamada ao banco. Fazendo Select e Edit causa tráfego na rede e lentidão no sistema.

#Código

update TABELA 
set tb_valor = tb_valor - baixa
where
tb_codigo = codigo


BD_ESTOQUE.ExecSql retorna a quantidade de registros afetados, logo:

#Código

I := BD_ESTOQUE.ExecSql;

if I = 0 then
..nenhum item atualizado
else
..atualizado item no estoque



Gigatel
   - 14 dez 2005


Citação:
Olá, utilize apenas uma chamada ao banco. Fazendo Select e Edit causa tráfego na rede e lentidão no sistema.

#Código

update TABELA 
set tb_valor = tb_valor - baixa
where
tb_codigo = codigo


BD_ESTOQUE.ExecSql retorna a quantidade de registros afetados, logo:

#Código

I := BD_ESTOQUE.ExecSql;

if I = 0 then
..nenhum item atualizado
else
..atualizado item no estoque


Qunto mais idéia melhor, como isso ficaria na minha função acima ?...


Marcio.theis
   - 14 dez 2005

Ou também:

#Código

with BD_VENDA_ITENS do
begin
First;
Try
while not BD_VENDA_ITENS.eof do
begin
BD_ESTOQUE.Close;
BD_ESTOQUE.SQL.Clear;
BD_ESTOQUE.SQL.Add(´select * from ESTOQUE where GS_EST_CODIGO=´+inttostr(BD_VENDA_ITENSGS_VEI_CODPROD.Value));
BD_ESTOQUE.Open;
[b]if not BD_ESTOQUE.IsEmpty then[/b]
begin
BD_ESTOQUE.Edit;
BD_ESTOQUEGS_EST_QNT.Value := BD_ESTOQUEGS_EST_QNT.Value - BD_VENDA_ITENSGS_VEI_QNT.Value;
BD_ESTOQUE.Post;
end;
BD_VENDA_ITENS.next;
end;
DM1.IBTransaction1.CommitRetaining;
except
showmessage(´problema com o banco de dados´);
DM1.IBTransaction1.rollback;
end;
end;



Okama
   - 14 dez 2005

#Código


Var I:Integer;
begin
with BD_VENDA_ITENS do
begin
First;
while not eof do
begin

BD_ESTOQUE.Sql.Text := ´Update ESTOQUE set GS_EST_QNT = GS_EST_QNT -´+ FieldByName( GS_VEI_QNT ).AsString+´ where GS_EST_CODIGO = ´+FieldByName( GS_VEI_CODPROD ).AsString;

I := BD_ESTOQUE.ExecSql;
if I = 0 then
Showmessage(´Registro não encontrado! Produto Avulso´)
else
Showmessage(´Registro atualizado com Sucesso!´);

BD_VENDA_ITENS.next;
end;
end;


Remova o ´showmessage´ e substitua por comandos caso queira controlar a atualização


Gigatel
   - 14 dez 2005


Citação:
#Código


Var I:Integer;
begin
with BD_VENDA_ITENS do
begin
First;
while not eof do
begin

BD_ESTOQUE.Sql.Text := ´Update ESTOQUE set GS_EST_QNT = GS_EST_QNT -´+ FieldByName( GS_VEI_QNT ).AsString+´ where GS_EST_CODIGO = ´+FieldByName( GS_VEI_CODPROD ).AsString;

I := BD_ESTOQUE.ExecSql;
if I = 0 then
Showmessage(´Registro não encontrado! Produto Avulso´)
else
Showmessage(´Registro atualizado com Sucesso!´);

BD_VENDA_ITENS.next;
end;
end;


Remova o ´showmessage´ e substitua por comandos caso queira controlar a atualização

deu este erro

#Código

[Error] Unit39.pas(161): Undeclared identifier: ´GS_VEI_QNT´



o q será ?


Gigatel
   - 15 dez 2005

O problema está na SQL ? está falando que num exite akele campo...más exite sim...