Array
(
)

Cannot create new connection because in manual or distribute

Murilo-jau
   - 30 abr 2008

Pessoal estou com o seguinte erro em um sistema :
´Cannot create new connection because in manual or distributed transaction mode´

Uso Delphi 7 , SQL SERVER 2000 e DBExpress.
O mesmo aplicativo roda em ORACLE e nele não ocorre erro algum !

Diferente de tudo que já achei é que da este erro quando dou um Open em um SQLQuery , mas em 100 ¬ dos casos que eu vi este erro acontece quando está em uma transação e a solução é dar um CLOSEDATASETS, mas no meu caso não posso fechar todos meu datasets ativos pois dependo deles.

Alguem pode me ajudar ?
Se sim ai eu passo mais informações

Murilo-jau
   - 30 abr 2008

Pessoal esta estudando melhor o código aqui e achei o Inicio de uma transação sim. Então corrigindo este erro acontece quando dou um Open um SQLQuery e que está SIM depois de uma iniciação de Transação !!!

Murilo-jau
   - 30 abr 2008

Solução mais rápida:

A Query em que estava dando o ero, era uma query criada em tempo de execução pois ela está dentro de uma Unit.
Achei em um forum um caso de um erro pareciso e que a solução seria marcar as opções
poFetchBlobsOnDemand e
poFetchDetailsOnDemand
do DataSetProvider com valor FALSE.
Com isso tive a idéia de criar os 4 componentes ( sqq, dts, dsp, qry) em tempo de projeto no meu Data Modulo. Deixei as opções do Provider como indicado no outro forum e funcionou. !!! :shock:

Problema resolvido !
Mas ainda se possivel preferia não ter que cria no Data Modulo, mas como não consegui acessar as opções do Provider em tempo de execução nem mesmo por um SimpleDataSet por enquanto vai ficar assim mesmo !

Murilo-jau
   - 26 mai 2008

É a solução que usei ja não serve mais !

Estou no mesmo caso, depois de ter iniciado a transação tenho que fazer varias consultas e em uma quando dou um Open em uma Query criada em tempo de execução, e acontece o mesmo erro.
Tentei fazer criando o conjunto dos 4 componentes como fiz no caso anterior mas agora isso não adianta o erro continua.

Eu usei um CLOSEDATASETS, o erro não acontece mas ai dá erro na regra de negócios pois fecha alguns resultados que eu necessito.

Alguem tem alguma solução ?
no site da Microsoft fala que devo mudar o DBPROP_MULTIPLECONNECTIONS
do DataSource de VARIANT_TRUE para False, mas não sei como fazer isto.

http://support.microsoft.com/?scid=kb¬3Ben-us¬3B272358&x=14&y=10

Murilo-jau
   - 26 mai 2008

Pts, Consegui !!!

O erro acontece por ter + de uma conexão ativa dentro da Trasação,
no meu código quem realizava a 1ª conexão era um SQLQuery, ai só substitui eles por um SimpleDATASet e pronto, eu não mexi na Query que estava ocorrendo o erro e sim em uma anterior.

UFA !!!