ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Problema ao atualizar banco

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
t3r3son
Novato
Novato


Registrado: Domingo, 28 de Janeiro de 2007
Mensagens: 36
Localização: Paranaiba - MS

MensagemEnviada: Qui Set 19, 2013 2:54 pm    Assunto: Problema ao atualizar banco Responder com Citação

Imaginem a seguinte cena: um usuario efetuando vendas no pdv e outro com uma tela de cadastro de produtos efetuando manutenção (alteração). o segundo pega o produto 1 e fica com a tela em aberto. o primeiro efetua venda do produto 1. no inicio o estoque era 10 e após a venda de 1 unidade ficamos em 9. acontece que o segundo usuario grava as informações q ele tinha na tela. pergunta-se qual o estoque ficará gravado: 10 ou 9??? e se for 10, como evitar que isso aconteça??
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Qui Set 19, 2013 3:46 pm    Assunto: Responder com Citação

Depende um pouco de como foi implementado seu sistema, mas no caso que você exemplificou, ficaria 10, ou seja, iria substituir o estoque, voltando ao que estava antes da venda. Existem diversas formas de implementação no sistema, e também através de lock de registros (travamento pessimista). Apesar de não gostar muito desse segundo (travamento pessimista), resolveria de forma "rápida" seu problema. Uma idéia é ter um controle com o timestamp do registro e, antes de gravar, verifica o timestamp e, caso sejam diferentes (o que está na tela do que está no banco) avisa que precisa ser atualizado.
O caso do travamento funciona, porém, se o primeiro mantiver a tela aberta, o segundo não conseguiria lançar a venda, até que a transação do primeiro seja concluída.
_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
t3r3son
Novato
Novato


Registrado: Domingo, 28 de Janeiro de 2007
Mensagens: 36
Localização: Paranaiba - MS

MensagemEnviada: Qui Set 19, 2013 3:57 pm    Assunto: Responder com Citação

Travamento pessimista eu uso ainda no clipper. Não é a melhor opção realmente, por isso postei o topico. Se souber uma forma mais prática do que essa e puder compartilhar, agradeço.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Qui Set 19, 2013 4:22 pm    Assunto: Responder com Citação

Pois é... então você poderia pensar em usar um timestamp (também usado no clipper heheh), ou então, elencar os campos que podem sofrer alteração da equipe de cadastro.
_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB