Múltiplos acessos simultâneos à mesma tabela - problema

Delphi

20/02/2004

Olá a todos.
Estou trabalhando em um projeto de cadastro de pedidos remoto, ou seja, o representante cadastra o pedido da casa dele acessando o nosso banco de dados(oracle) pela internet, porém estou enfrentando um problema que ocorre às vezes: estão ocorrendo conflitos entre o pedido de um representante e outro q está digitando ao mesmo tempo.
O sistema funciona da seguinte maneira: qdo o repres. termina a parte de dados do pedido e o salva, o sistema busca na tabela de pedido o nº do último e soma mais um, assim todos os itens desse pedido(na tabela de itens) usam esse nº(a chave primária).
Porém, as vezes um repres. preenche itens do pedido do cliente de outro repres., o q é uma falha grave. O estranho é que algumas vezes digitam-se diversos pedidos ao mesmo tempo e nem sempre isso ocorre.

[b:9a0db92271]Eu gostaria de saber que medidas de segurança eu poderia adotar para impedir que isso ocorra. As tabelas contêm chaves estrangeiras, e mesmo assim acontece isso. Eu NÃO utilizo o componente ´session´, por acaso ele ajuda a controlar as conexões ao BD?[/b:9a0db92271]

Sou ainda inexperiente nessa área, qualquer ajuda será bem-vinda, obrigado!


Andrey

Andrey

Curtidas 0

Respostas

Marconi

Marconi

20/02/2004

O seu sistema é interessante.

Para estes casos eu utilizo o seguinte. Quando o pedido esta sendo gerado ele ainda não existe, então deixo que cada vendedor monte o seu pedido em um arquivo provisório que tem o nome do próprio vendedor e apenas um registro. Ex. Jose.db. Quando ele confirma o pedido, aí então o programa tenta gerar um registro já numerando. Neste caso eu utilizo try até conseguir. Depois que o registro já numerado está reservado para este vendedor, copio os dados do arquivo provisorio.

Quando o jose quiser fazer um novo pedido, o seu arquivo, jose.db será aberto, todos os registros deletados e ele poderá recomeçar.

O mesmo pode se aplicar na hora de montar notas fiscais.

Marconi


GOSTEI 0
Marconi

Marconi

20/02/2004

Para proteger os clientes de um determinado representante eu coloco sempre a escolha do cliente em uma combobox que vem de uma query, que está filtrada para apenas os clientes do determinado vendedor.

Ele poderia até cadastrar o cliente de novo e se colocar-se como representante, mas o número do CNPJ é requisito básico e se já existir no cadastro ele não conseguirá.

Marconi


GOSTEI 0
Andrey

Andrey

20/02/2004

Muito obrigado pelas dicas!
Vou analisar a viabilidade da criação de tabelas temporárias.

Até mais, e obrigado novamente!


GOSTEI 0
POSTAR