ATUALIZAR SALDO EM DUAS TABELAS
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
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
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
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
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
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.......
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.
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.
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.
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.
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