Erro sql Dephixe10+FireDac+FB 1.5
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.
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
Curtidas 0
Melhor post
Natanael Ferreira
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:
Veja este link:
http://www.activedelphi.com.br/forum/viewtopic.php?t=51346&highlight=transaction
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
GOSTEI 1
Mais Respostas
Geraldo Barroso
11/04/2016
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.
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.
GOSTEI 0
Natanael Ferreira
11/04/2016
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.
Faça um teste do código que passei utilizando o SQLConnection.
GOSTEI 0
Geraldo Barroso
11/04/2016
Vou tentar aqui, e post se dar certo ou não, muito grato pela ajuda.
GOSTEI 0