REVELAR

Fórum Sistema em rede, ADO e BatchOptimistic #326495

31/07/2006

0

Bom dia, amigos!

Sempre tive essa dúvida prática, mas quero saber a opinião de vcs.

Tenho um sistema em rede, com BD Access, acesso ADO (MS JET). Tenho duas tabelas, [i:95b1dae6e8]vendas[/i:95b1dae6e8] e [i:95b1dae6e8]itens[/i:95b1dae6e8] que armazena os itens de uma venda. A tabela vendas tem o campo código (PK) autoincrement.

Coloquei 02 ADOTables, um pra cada tabela, com a propriedade LockType = ltBatchOptimistic. Dessa forma, as alterações no banco so vão para o servidor qd usar um ApplyUpdates. Uso isso, pensando no caso de dar algum erro durante o cadastro dos itens, entao tem como voltar atras, sem efetivar as alterações no banco. (seria um cuidado desnecessário??? acho q nao)

O sistema funciona assim: Inicio uma nova venda, gera um registro na tabela de vendas (inclusive o codigo, autoincrement). Ai vou cadastrando os itens para essa venda. A cada item, eles sao gravados localmente na tabela (lembre-se do batchoptimistic). No fim de todos os itens, douum applyupdates na tabela vendas e itens e grava tudo no banco de dados no servidor. Se der algum erro no decorrer dos cadastros acima, eh so dar um cancelupdates que o banco de dados fica intacto.

A questao eh: num sistema em rede, qd faço um append....post na tabela vendas, eh gerado o codigo do registro autoincrement. mas o registro nao foi ainda para o banco de dados uma vez q nao fiz um applyupdates ainda. Se outra maquina fizer uma venda simultanea, qd essa maquina fizer o append....post na tabela de venda, o banco vai criar um registro novo com o mesmo codigo do anterior, que ainda está local na maquina q fez a requisição, ou ele respeita a sequencia de codigos autoincremente, mesmo nao tendo feito o applyupdates??

Uso o Delphi 7.

Como é que funciona? Tem uma forma melhor, ou mais eficiente para se fazer esse controle? Como é q vcs fariam ou fazem isso?

Abraços,

Silvio Ribeiro
João Pessoa - PB


Silvio Ribeiro

Silvio Ribeiro

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar