GARANTIR DESCONTO

Fórum Controle de lock. #288364

18/07/2005

0

Boma Dia, como vocês fazem para 2 usuários não digitarem o mesmo código em um cadastro por exemplo.

Criam uma tabela de lock com uma chave do usuário e o nome do programa ?


Lynx

Lynx

Responder

Posts

18/07/2005

Khundalini

Não vejo uma alternativa melhor que o evento OnReconcileError do TClientDataSet pra resolver uma questão como essa!

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

18/07/2005

Lynx

eu só uso TQuery em cadastros...


Responder

Gostei + 0

18/07/2005

Lynx

se eu entendi bem, vou colocar um datasource ligado com um dataset...
e minha query liga com o DataSource.

Este evento funciona como ?

na hora do código, quando sai ?
ou na hora que inseri.

obrigado.


Responder

Gostei + 0

18/07/2005

Titanius

Na seção Artigos do Clube Delphi, tem um Sequenciador, muito bom, utilizo ele, e nunca deu um problema comigo...


[]s


Responder

Gostei + 0

18/07/2005

Lynx

O ID, da tabela eu utilizo trigger no delphi com generatores....
O Código é digitado, então nao vejo problema, no sequenciador para o ID da tabela.

No artigo mostra que tem problema, não sei se entendi direito.

obrigado


Responder

Gostei + 0

18/07/2005

Titanius

eh, comigo nunca deu problema, mas o codigo eh gerado e nao digitado, como o seu caso....


Responder

Gostei + 0

18/07/2005

Lynx

o ID da tabela é gerado...

O Código é digitado...
por isso estou preocupado, pq pode acontecer , que 2 usuários estao no mesmo código...


Responder

Gostei + 0

18/07/2005

Adriano Santos

Tenho usado Triggers e Generator nos meus programas e não tenho tido problemas com eles.


Responder

Gostei + 0

18/07/2005

Lynx

asrsantos, você usa a trigger para o id , e o codigo é digitado certo ?
Deste modo eu tb n tenho problemas...

mas vc controla como para 2 usuários não digitar o mesmo código nos terminais ?

valeu


Responder

Gostei + 0

18/07/2005

Adriano Santos

As tabelas dos meus programas eu uso um campo ID que eu deixo o banco controlar através das triggers e dos generators, e ai se necessário eu crio um campo Código para que o usuário utilize para identificar algo, como uma tabela de produtos por exemplo. Para que o usuário não digite o código de um produto igual a de outro eu faço uma pesquisa no banco com uma Query simples. Se o código já existir eu aviso o usuário e obrigo cadastrar um novo código.

Se entendi direito o que precisa, é isso. Não tem segredo.


Responder

Gostei + 0

18/07/2005

Lynx

isso eu também faço , exemplo vou cadastrar um produto com o código 20, e ao mesmo tempo outro usuário em outro terminal coloca o código 20, enquanto o terminal 1 ainda está digitando o produto..

entende ?

se ele ainda nao deu um commit...
como você controla está situação ?


Responder

Gostei + 0

18/07/2005

Adriano Santos

Agora entendi direito sua dúvida.

Bom, este é um caso típico e acontece muito haja vista que não é possível saber o que cada usuário está digitando em cada terminal. Mas uma coisa é certa, a probabilidade de dois terminais dar um commit ao mesmo tempo é remota, ou seja, se fizer uma nova pesquisa no banco de dados antes do post vc consegue saber se o código já existe.

Normalmente eu faço duas pesquisas.

1 - Quando o usuário sai do campo onde deve digitar o código do produto, cliente etc.
2 - No momento de dar um post. Isso evita que: durante a digitação de um novo cliente, por exemplo, outro usuário entre e coloque o mesmo código de cliente. Se isso ocorreu dou uma mensagem e o cara vai ter que colocar outro código, ai então faço o commit.


Responder

Gostei + 0

18/07/2005

Adriano Santos

...que colocar outro código, ai então faço o commit....


Claro, só posso dar um commit se o caso for negativo, ou seja, se o código não existe na tabela.


Responder

Gostei + 0

18/07/2005

Lynx

desculpe asrsantos, realmente eu expressei mau minha pergunta...

Vou fazer isso também, mas o complicado se eu dar o focu,no campo código eu estou fazendo limpar toda minha tela...

acho que vou dar uma mensagem avisando que o código já existe, e que o código vai ser um número acima que ele digitou.

exemplo:
Usuário 1, está digitando uma nota número 1, ao mesmo tempo o usuário 2 está digitando a nota 1 também...

Mas o usuário 2 deu um commit primeiro, então quando o usuário 1 dar o post.
Vou enviar uma mensagem avisando que o número 1, já existe e a nota dele será o número 2.


O Que você acha disso ?

obrigado


valeu


Responder

Gostei + 0

18/07/2005

Adriano Santos

Acho boa a idéia. A única coisa


Outra forma, talvez menos eficaz e ou menos ´profissional´, seria criar uma lista de códigos que estão sendo digitados no momento. Por exemplo:

Você tem os terminais 1, 2 e 3. Quando cada terminar entrar e digitar um código vc alimenta uma tabela dentro do banco que será usada só pra isso. E na hora que um novo usuário entrar para digitar o codigo vc pesquisa nessa tabela. Se o codigo existir vc pede outro, senão mantem o codigo e atualiza esta tabela.

Quando o usuario der um post ou cancel, vc faz o commit e exclui este codigo da lista.

Tive esta idéia agora (do nada, rs), não é muito prática, mas dependendo do caso acredito que funcione.
É só uma idéia esdruxula que me passou pela cabeça.


Responder

Gostei + 0

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

Aceitar