Fórum Dúvidas sobre cálculo #320330

01/05/2006

0

Olá amigos!!!!

No meu sistema, existe uma tela onde é feita a entrada de cartuchos no estoque. Para isso, há duas tabelas: uma chamada ENTRADA e outra chamada ITENSENTRADA. O processo é o seguinte: o usuário clica no botão ENTRADA, onde são preenchidos os campos CÓD_USUARIO, NOME_USUARIO, DATA, HORA, COD_FORNEC, FORNECEDOR. Em seguida, clica-se no botão GERAR, para que grave esses dados e o botão LANÇAR ITENS fique habilitado. Dessa forma, o usuário preenche os campos COD_CART, MODELO, e QTDE e clica em ADICIONAR, que grava os dados na tabela de ITENSENTRADA. Havendo a necessidade de se adicionar outra item, repete-se esta etapa. Até aí tudo bem, porém resolvi inventar: coloquei dois edits (um para o estoque anterior e outro para o estoque atualizado). No onexit do campo QTDE, eu fiz uma rotina onde mostrará o estoque daquele item que foi adicionado no edit ESTOQUE ANTERIOR.

Agora, uma grande dúvida que me levou a colocá-la no fórum, já que ainda não tenho muita experiência: seria possível armazenar o estoque anterior e o atual de cada item que for adicionado em um campo virtual, para cada um, sendo que o atual seria a soma da qtde + estoqueanterior? Ou seria melhor criar estes campos na tabela ITENSENTRADA? Ah, eu até pensei num campo calculado, mas os valores dos campos ESTOQUE ANTERIOR e ESTOQUE ATUAL serão se repetem para todos os itens da entrada, já fiz este teste. Até agora, não encontrei a solução. Estou utilizando Delphi 2005 + dbxpress + clientdataset + firebird. Prentedo utiilizar esta aplicação em rede.

Fico no aguardo.

Um grande abraço a todos.

Rogério


Roger1976

Roger1976

Responder

Posts

02/05/2006

Edilcimar

Vc pode armazenar os estoques em uma tabela temporária, em matriz, ou como vc mesmo disse em campo calculado


Responder

Gostei + 0

02/05/2006

Roger1976

Edilcimar, eu fiz um teste com o campo calculado:

dmEstoque.cdsItensEntrada.FieldByName(´ESTOQUE´).AsInteger := strtoint(edtEstoque.Text);


procedure TdmEstoque.cdsExibirItemAdicCalcFields(DataSet: TDataSet);
begin
with dmEstoque.cdsExibirItemAdic do
begin
FieldByName(´ESTOQUE´).AsInteger := strtoint(frmEntrEstoque.edtEstAnt.Text);
FieldByName(´EST_ATUALIZ´).AsInteger :=
FieldByName(´QTDE´).AsInteger + FieldByName(´EST_ANT´).AsInteger;
end;

end;

O que pode estar errado neste código?

O problema é que armazena o valor do ultimo item adicionado. O que eu gostaria fazer, se for possível é claro, é ao clicar em cada item que eu adicionei o mostrar o ESTOQUE (ANTERIOR) e o ESTOQUE ATUALIZADO.

Grato pela atenção.

Rogério


Responder

Gostei + 0

02/05/2006

Roger1976

... Corrigindo, o ESTOQUE ATUALIZADO está ok, o que não muda é o ESTOQUE (ANTERIOR), ele atribui sempe o mesmo valor para todos os itens...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar