Fórum Sql verifiquem esse codigo #153549

09/04/2003

0

Caro colegas programadores...tenho um sistema em paradox feito em delphi5, esse sistema vai rodar em rede local, já instalei o sistema e executa normal...o problema é quando 2 clientes tentam cadastrar ao mesmo tempo uma informação...tipo, cliente A começou a cadastrar mais ainda nao salvou e cliente B também começou cadastrar e salvou primeiro que o cliente A, quando o cliente A, vai salvar vem uma ´Key Violation´, violação de chave ok!, como se a chave fosse duplicada....no entanto quando tento salvar novamente ele salva norma e não vem a mensagem... é como se não estivesse sendo atualizado??
vejam o código abaixo:

tenho um a QryCliente, TbCliente e DSCliente

Na propriedade SQL tenho:
SELECT MAX(CODCLIENTE) FROM TBCLIENTE

No evento BeforePost da tabela tenho:
procedure TDM.TBClienteBeforePost(DataSet: TDataSet);
begin
IF DM.DSCLIENTE.State = DSINSERT THEN
BEGIN
QRYCLIENTE.Close;
QRYCLIENTE.OPEN;
QRYCLIENTE.Refresh;
WITH QRYCLIENTE.Fields[0] DO
BEGIN
IF ISNULL THEN
TBCLIENTECODCLIENTE.Value := 1
ELSE
TBCLIENTECODCLIENTE.Value := ASINTEGER + 1;
END;
END;
end;

fernandocneto@zipmail.com.br


Fernandocneto

Fernandocneto

Responder

Posts

10/04/2003

Anonymous

voce devera salvar fisicamente a tblcliente para que o outro micro possa pegar o max com o registro ja incluído.

utilize o DBISaveChanges no evento afterPost.


Responder

Gostei + 0

10/04/2003

Okama

Aconselho duas coisas:

use auto-incremento ou

crie uma tabela de controle que gere o código para o cliente. Ex:

Tablecontrole.Open;
numero := TableControle.fieldbyName(´codcli´).asInteger;

TableControle.Edit;
TableControle.fieldbyName(´codcli´).Value := Numero+1;
TableControle.Post;


Responder

Gostei + 0

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

Aceitar