GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Controlo de stock (estoque)
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Estagiário

postado
Boa tarde,

Desenvolvi um sistema pra controlo de stock's que, na tabela de entradas coloquei o campo QuantEntra, na tabela de saidas coloquei o campo QuantSaida e na tabela produtos coloquei um campo com o nome Stock (estoque).

Sempre que um determinado produto entra tenho evento no after update da caixa de texto da QuantEntra com a seguinte fórmula stock = Stock + QuantEntra e na tabela saidas tenho o evento stock=stock-QuantSaida


Desta forma o meu Stock está sempre actualizado

O problema surge se necessitar de alterar uma entrada que tinha por exemplo 10 unidades, se agora alterar para 12, ele não me vai introduzir mais 2 unidades naquele produto, que será o que pretendo, mas introduz mais 12 unidades, O mesmo se passa nas saidas ele volta a fazer o novo processamento, ou seja uma saida X com o produto Y que tivesse 5 unidades, alterar para 10 unidades que deveria ser feito era retirar mais 5 unidades ao stock e não 10 como faz.

Qual a melhor forma de fazer isto?


Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Caro desenvolvedor,

Você poderia utilizar algo parecido com o código abaixo no evento AfterUpdate de um botão "Confirma" no form "FRM_Saídas", por exemplo.

Sub ATUALIZARSAÍDAS()
Dim SQL As String
Dim RST As Recordset
Dim BD As DATABASE
Set BD = CurrentDb
SQL = "SELECT * FROM TBL_estoque WHERE esCódigoProduto =" & Forms!FRM_Saídas!saCódigoProduto
Set RST = BD.OpenRecordset(SQL, dbOpenDynaset)
If RST.RecordCount > 0 Then
RST.Edit
RST!esQuantidade = RST!esQuantidade - Forms!FRM_Saídas!saQuantidade
RST.Update
End If
RST.Close
BD.Close
End Sub
 
Postagens: 203 | Localização: Blumenau, SC, Brazil | Registrado: 15 September 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá webtech,

Basicamente você tem que trabalhar com um campo Auxiliar (desacoplado) e, a cada vez que entrar no campo QtdeVendida (valor padrão = 0), você define Me!Auxiliar = Me!QtdeVendida.

Crie uma consulta atualização baseada na seguinte estrutura e a execute AoSair do campo QtdeVendida:

DoCmd.RunSQL "UPDATE Produtos SET Produtos.Saldo = [Saldo]+[Forms]![VendasCred]![VendasSubCred]![Auxiliar]-[Forms]![VendasCred]![VendasSubCred]![QtdeVendida] WHERE (((Produtos.Codigo)=[Forms]![VendasCred]![VendasSubCred]![Codigo]))"

Imediatamente após a execução da consulta atualização defina Me!Auxiliar = Null
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Desculpe-me webtech,

Mas para quê que você quer o campo stock, se você possui todas as entradas e todas as saídas e pode efetuar o cálculo soma(entradas)-soma(saídas) na hora que você quiser?


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1705 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá Renato,

Se a quantidade de registros for grande o banco começará a ficar lento.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Analista Sênior

Figura de  Renato Santos
postado Hide Post

Jorge,

Você está correto.
Aproveitando o ensejo, preciso entrar em contato com você e não estou conseguindo pelo seu e-mail da starmedia. Triste
Gostaria de obter o arquivo do qual você falou aqui.
Abraços,


   Renato Santos
rebornbr@msn.com
        XP/2K
 
Postagens: 1705 | Localização: Belo Horizonte | Registrado: 22 November 2002Reply With QuoteReport This Post
Estagiário

postado Hide Post
Boa tarde...


O meu SGBD tem a seguinte estrutura:

TblProduto (CodProduto, Designacao, StockDisponivel, StockMinimo)
TblEntrada(CodEntrada, Data, CodFornecedor)
TblDetalhesEntrada(CodEntrada,CodProduto,QuantEntra)
TblSaida(CodSaida, Data, CodCliente)
TblDetalhesSaida(CodSaida, CodProduto, QuantSaida)

Depois tenho forms com subform para registar as entradas e as saidas.

Nos respectivos subforms calculo e actualizo o campo stockDisponivel aquando da actualização da quantidade que entra ou que saia respectivamente.

O problema surge nesta situação:

Supondo a Entrada nº 01/2005 no subform de entradas está um produto ABC com 10 unidades e com stock actual de 120 e o produto BCA com 5 unidades e stock actual de 40, supondo que por engano o utilizador no produto ABC registou 10 unidades em vez que 5, se com 10 unidades o stock passa para 120 com 5 deveria passar para 115, o que acontece é que como estou a fazer a alteração sempre que se altera o o campo quantentra ele vai passar para 125

Deu para entender o meu problema?


Para resolver, eu pretendia era fazer o seguinte, no form principal colocar um botão para guardar o registo, e só nessa altura é que iria aos calcular o stock dos produtos afectos à entrada actual.


Saudações...
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá, a estrutura que citei acima atende exatamente a isto - evita que, ao ser cometido o erro e digitada novamente a saída, o valor errado interfira no saldo.

Resta você observar com atenção e ajustar para o seu BD.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
Boas Jorge,

Tem algum exemplo que me possa mandar para ver a funcionar?

É que não queria mexer no que já está feito?


Muito Obrigado,


Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá, o que tenho é um sistema completo de vendas a varejo, que utiliza a rotina citada tanto no recebimento quanto na saída de produtos.

Separar uma parte do programa para montar um exemplo vai dar mais trabalho do que montar a rotina a partir das informações já citadas - não tem mistério algum.

A única diferença que eu percebo em relação ao seu banco é, nos SubForms de entrada e saída, a criação do campo Auxiliar que é o que possibilita a modificação de quantidade entrada ou saída sem que isso desorganize a contabilização do estoque.

O outro detalhe é a SQL de atualização do campo Estoque - basta adequar aos nomes dos campos das suas tabelas.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
Boa noite,

Tentei fazer o que me disse, mas como o meu subform é continuo, ao entrar no campo QuantEntra, o auxiliar dos outros produtos da entrada ficam com o mesmo valor.

Dá para me facultar o seu email, desta forma eu enviava para si e voltava a mandar-me


Obrigado...
Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá,

Como foi dito na primeira mensagem o campo Auxiliar é desacoplado, não tem OrigemDeControle, é utilizado somente para possibilitar o cálculo correto enquanto se está no mesmo registro (você deve ter notado que, AoSair do campo Qtde, o Auxiliar é anulado > Me!Auxiliar = Null).

OBS: todos os meus SubForms são, também, contínuos - para possibilitar a visualização da venda como um todo, como uma nota fiscal.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
Jorge,

Coloco no evento "ao Entrar" do campo QuantEntra
Me.TxAuxiliar = Me.txQuantEntra e no evento "ao Sair" me.TxAuxiliar = Null?


Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Estagiário

postado Hide Post
Jorge,

Construi um pequeno exemplo e tentei-lhe enviar pelo seu email do starmedia mas não dá.


Já fiz tudo o que me disse, mas quando chega a hora de actualizar não actualiza nenhuma linha.


Como posso enviar-lhe este pequeno exemplo?


Obrigado,

Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
Olá,

O meu problema é absoluta falta de tempo - tenho usado uma visita ou outra ao Fórum para relaxar.

Além da atividade com programação temos uma atuação em EAD (Suporte Técnico e Tutoria) e estamos no limite para lançamento de cursos.

Nesse momento, seria ótimo que o dia tivesse 26 horas.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Estagiário

postado Hide Post
Jorge,

Este problema já esta resolvido.......

Não fiz bem igual, mas a ideia é a mesma

Obrigado

Para ficar 100% so faltava um pormenor, é que so faz o calculo quando se clica com o rato noutro campo, se fizer enter ou tab no campo quantidade não acontece nada, eu pretendia que nestas situações também fizesse o calculo


Mais uma vez obrigado

Saudações
 
Postagens: 48 | Registrado: 24 July 2005Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Controlo de stock (estoque)

©