Fórum Erro sql Dephixe10+FireDac+FB 1.5 #551117

11/04/2016

0

Caros amigos:

Estou realizando alguns teste para desenvolvimento em multicamadas usando as tecnologias

Delphi XE 10 Seattle - Versão Demo

Banco : FireBird 1.5

Servidor de aplicação
FDCursor
FDFBLink

FDConnection - xReadComited
FDQuery
DataSetProvider

Cliente
ClientDataSet <Ligado> DataSetPrivider

Trabalhando somente com usuário conectado ok, todas a operações são executas perfeitamente sem erro nenhum pesquisa,
inserção e edição e deleção blz

Mas quando entra um segundo usuário, a coisa complica o segundo usuário não consegue enxergar nada o que o primeiro
usuário faz e vice versa.

Exemplificando :
Se o usuário um entra no registro faz alguma alteração e grava e faz uma pesquisa novamente aparece para ele a alteração
tudo ok..
Mas se o segundo fazer uma pesquisa não aparece para ele a modificação e se tento alterar este registro aparece a mensagem
de do firedac lock conflict on no wait transaction deadlock - update conflitcs with concurrent update

Os componentes basicamente deixei as configurações padrões.

No lado cliente uso

Cds.Append ou Edit
Cds.Post;
Cds.ApplayUpdates(0)

O que posso esta fazendo errado ou e alguma configuração dos componentes de conexão.

Desde já agradeço a todos.
Geraldo Barroso

Geraldo Barroso

Responder

Post mais votado

12/04/2016

Este é um problema de transação concorrente.
Te aconselho a utilizar o FDTransaction para controle de transações e realizar estas transações de maneira curta.

Neste modelo:

try 
   if not Transaction.InTransaction then 
     Transaction.StartTransaction; 
   tabelaY.post; 
   Transaction.Commit; 
except 
   on E: Exception do 
    begin 
       if Transaction.InTransaction then 
         Transaction.Rollback; 
    end; 
end;


Veja este link:
http://www.activedelphi.com.br/forum/viewtopic.php?t=51346&highlight=transaction

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

12/04/2016

Geraldo Barroso

Caro Natanael,
obrigado pela dica, mas, me corrija se estiver errado o fdtransaction tem que esta ligado ao fdconnection? se for realmente isto, como é um teste em três camadas não tem como eu não tenho acesso ao fdconnection(lado servidor) somente o sqlconnection(lado cliente) pode ser feito por ele?...

Desde já agradeço.
Responder

Gostei + 0

12/04/2016

Natanael Ferreira

Se você não tem acesso ao fdConnection não dá para usar o fdTransaction.
Faça um teste do código que passei utilizando o SQLConnection.
Responder

Gostei + 0

12/04/2016

Geraldo Barroso

Vou tentar aqui, e post se dar certo ou não, muito grato pela ajuda.
Responder

Gostei + 0

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

Aceitar