ATUALIZAR SALDO EM DUAS TABELAS

ALANTB 18/12/2013 09:03:46
#432234
Olá,

Em vb6+access, tenho 3 tabelas: tbSuprimentos, tbEntradas e tbSaidas. Nas tabelas de Entrada e Saida tem um campo SALDO, esse campo eu gostaria de atualizar a cada saida ou entrada de suprimentos(cartuchos, cds, toners,...), ex: se no estoque marca no campo saldo das duas tabelas 50 cds e no form de Entradas eu cadastrar mais 20 o campo saldo de tbEntrada e tbSaida para cds deve ficar 70. Entretanto se no form Saidas eu cadstrar que saiu 30, deve exibir um saldo de 40 (70-30=40) na tbSaida. Se eu voltar a cadastrar mais cds no estoque o saldo anterior deve estar marcando 40.
Sendo assim como fazer uma query SQL que atrualize o campo SALDO das duas tabelas ao mesmo tempo?Valeu!!

Alan
KERPLUNK 18/12/2013 09:45:38
#432236
Resposta escolhida
Só o fato de ter um campo [Ô]saldo[Ô], já está errado. Ter em duas tabelas então, transforma a coisa num caos. Amigo, [Ô]saldo[Ô] é sempre calculado, a diferença de entradas e saídas, jamais um valor fixo(um campo). Para obter saldo de mercadoria, você subtrai o total de entradas do total de saídas, que são simplesmente movimentos de estoque, você não precisa de uma tabela para cada um, apenas um campo em uma tabela [Ô]movimentos[Ô] indicando a operação.
Para [Ô]solucionar[Ô] seu problema, com uma única query não tem como, você vai ter que fazer duas queries, cada uma atualizando uma das tabelas
NILSONTRES 18/12/2013 10:55:27
#432241
Citação:

Para [Ô]solucionar[Ô] seu problema, com uma única query não tem como, você vai ter que fazer duas queries, cada uma atualizando uma das tabelas



Sendo assim, mais uma pergunta:
Utilizas transações ?
Se não faz, procure urgente fazer, já vi casos aqui que executam varias querys sem transações
ALANTB 18/12/2013 11:17:29
#432243
Pessoal, tô vendo que a coisa não é tão simples assim. Sendo assim estou pensando em eliminar as duas tabelas de entradas e saidas e adaptar apenas uma de movimento....Quanto a transações: nunca usei, não sei como se faz esse tipo de rotina.Bom, vou ver no que vai dar, mas se alguém tem um exemplo simples de controle de estoque, agradeço....Até mais.......
KERPLUNK 18/12/2013 11:34:19
#432247
ALANTB, realmente nem sempre a solução apropriada é simples. Essa é uma das razões para se fazer uma boa análise do que se quer fazer, antes de [Ô]pôr a mão na massa[Ô]. Muitas vezes, um simples erro conceitual no planejamento, gera uma grande dor de cabeça para ser consertado.
NILSONTRES 18/12/2013 15:57:03
#432278
ALANTB,
Imagine que vc tenha que gerar uma venda:
Nesse caso vc grava a comissão do vendedor na tabela comissão, grava a venda na tabela vendas, grava o lançamento de estoque.
Se acontecer um erro, ou a energia acabar entre essas transações, o que pode acontecer ? Gerar a comissão sem gerar a venda pode ser um exemplo.
Então, é preciso que nesse caso seja cancelado os dados salvos nas transações anterirores.

Em vb 6

SuaConexao.BeginTrans [ô]inicia as transações
insere/edita etc
ouve erro:
SuaConexao.RollbackTrans [ô]cancela as transações anteriores
exit sub

tudo correu bem
SuaConexao.CommitTrans[ô]conclui a transação.

Eu pasmo como tem gente desenvolvendo e vendendo projetos sem esse tipo de segurança, isso para min é uma bomba relogio.
LLAIA 19/12/2013 10:04:29
#432305
Realmente tem que rever sua modelagem. Acredito que a melhor forma de controlar saldo, é por meio de queries que calculam as inserções em tabelas de entrada e saída.

Olhe esse database de modelos:

http://www.databaseanswers.org/data_models/index.htm

Veja se dentre esses modelos vc pode basear o seu. Boa sorte.
Tópico encerrado , respostas não são mais permitidas