Davi, no evento BeforeApplyUpdates do DataSetProvider, você fecha a conexão, 
assim:

TSQLConnection.CloseDataSets.

vê se funciona.

Márcio Ricardo.


  ----- Original Message ----- 
  From: Davi Eduardo Borges Wall 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Thursday, June 14, 2007 2:52 PM
  Subject: RES: [delphi-br] D7 - DBExpress - SQLServer 2005 - ReadCommited / e 
alterações com Fetch (não fetchAll) SERÁ QUE TEM SOLUÇÃO???


  Estou utilizando a estrutura Connection <- sqlquery <- provider <- 
clientedataset<- datasource

  Se vc está falando do problema do fetch, tivemos que utilizar ddois dataset's 
1 para consultas e outro para alterações para 

  contornar o problema.

  Mas o problema ainda existe, se eu não der fetchall numa query utilizando sql 
server eu não consigo alterar os dados.
  as vezes gera uma mensagem de erro que não recordo, mas lembro que era em 
português e achei um tanto esquisito.

  ________________________________

  De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Márcio 
Ricardo
  Enviada em: quarta-feira, 13 de junho de 2007 16:52
  Para: delphi-br@yahoogrupos.com.br
  Assunto: Re: [delphi-br] D7 - DBExpress - SQLServer 2005 - ReadCommited / e 
alterações com Fetch (não fetchAll) SERÁ QUE TEM SOLUÇÃO???

  Davi, que tipo de componentes de conexão você está utilizando?

  Você poderia passar exatamente a mesangem de erro que está dando? Acho que 
tive algo parecido com isso, e consegui resolver, é fácil.

  Márcio Ricardo.
  ----- Original Message ----- 
  From: Davi Eduardo Borges Wall 
  To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
  Sent: Friday, June 08, 2007 9:47 AM
  Subject: [delphi-br] D7 - DBExpress - SQLServer 2005 - ReadCommited / e 
alterações com Fetch (não fetchAll) SERÁ QUE TEM SOLUÇÃO???

  Olá senhores,

  Gostaria de saber como os senhores lidaram com esta situação que 
aparentemente só acontece
  no SGBD SQL Server.

  Trabalho no desenvolvimento de um sistema multibanco que utiliza transação 
pessimista. Ou seja, 
  somente quero ler informações "commitadas". Todos os dados que não forem 
"commitados" considero
  dados inconsistentes. 

  No SQL Server (no meu caso 2005) se eu abrir uma transação, alterar, salvar e 
não dar commit ele da lock na tabela em questão.
  Todas as outras consultas ficarão literalmente travadas, até que o commit 
desta transação seja efetuado. Alguém sabe a causa disto?
  É assim mesmo que o SQL Server se comporta nesse caso? Por que os outros 
bancos como o FireBird e o Oracle não se comportam desta
  maneira mesmo utilizando ReadCommited?

  Estudei o hint NOLOCK que transforma aquele select especifico em uma consulta 
Read Uncommited, isto está ok, não gera mais o lock.
  Mas ele me retorna os dados antes de "Commitar". O que não é legal. Imagine 
que um dado está sendo inserido por um usuário enquanto

  Outro usuário está tirando um relatório e esta informação está saindo no 
relatório. Daí da um erro, e acontece um Rollback. Eu tenho um
  dado no relatório que não existe na base.
  ReadPast me traz todos os registros que não estão "lockados". O que também 
não satisfaz, pois o usuário pode estar editando um registro,
  importante alterando por exemplo a descrição, e estou tirando um relatório 
com valores. Esse registro não vai aparecer no relatório.

  Um colega uma vez disse " Qualquer que for a sua escolha, todas as opções são 
ruins", é isso mesmo ?

  Estas situações me fazem chegar a conclusão de que o Sql Server não é um 
banco de dados compatível com isolation ReadCommited,
  pois se para evitar um lock eu devo usar uma instrução Read Uncommited.

  No SqlServer também, estou com um problema intrigante. Se eu tenho uma query 
com fetch de 30 ou XX registros e tento alterar algum registro,
  após salvar o registro não salva. Somente se eu der um FetchAll, alterar e 
salvar, aí então os dados são salvos.

  Se alguém passou por esses problemas, qualquer sugestão é bem vinda.

  []'s

  Davi Wall.

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a