[firebase-br] Transações & Driver UIBDBExp12Win32

Rodrigo Schiavo schiavor em uol.com.br
Qui Jan 27 12:33:15 -03 2005


Eh e agora com esse problema não sei qual driver usar, o do Interbase 
jah deve estar bem incompativel.


Francisco Thiago de Almeida escreveu:

> Recentemente tive de retirar o Driver da UIB para FB1.5 pq ele estava 
> gerando sql com erros.. eu não conseguia apagar / editar nenhum 
> registro... Era uma aplicação Multitier usando SOAP
>
> Extranho né?
>
> Thiago
> ----- Original Message ----- From: "Rodrigo Schiavo" 
> <schiavor em uol.com.br>
> To: <delphi-br em yahoogrupos.com.br>; <lista em firebase.com.br>
> Sent: Thursday, January 27, 2005 1:52 AM
> Subject: [firebase-br] Transações & Driver UIBDBExp12Win32
>
>
>
>    Olá amigos.
>
>    Hoje resolvi um problema de validações de dados usando uma transação
> e uma coisa muito incomum ocorreu.
>
>    No meu projeto de teste estava utilizando DBExpress com driver
> Interbase e banco de dados Firebird, tudo funcionou corretamente. Porém
> ao implementar a solução em meu projeto principal que também utiliza
> DBExpress e banco Firebird mas os drivers são da UIB quando era gerada
> uma exceção a mesma transação não efetuava o Rollback dos dados
> permitindo que inconsistências fossem geradas.
>
>    Só consegui resolver este problema mudando o driver do meu projeto
> principal para Interbase o que não é aconselhavel uma vez que este
> driver não é mais 100% compativel com Firebird, alguém ja passou por 
> isso?
>
>    Abaixo segue a configuração dos componentes e a rotina que estava
> sendo utilizada:
>
>    CONEXAO UTILIZANDO DRIVER INTERBASE
>    conBase: TSQLConnection
>    ConnectionName = 'IBConnection'
>    DriverName = 'Interbase'
>    GetDriverFunc = 'getSQLDriverINTERBASE'
>    LibraryName = 'dbexpint.dll'
>    LoginPrompt = False
>    Params.Strings = (
>      'DriverName=Interbase'
>      'Database=Teste.fdb'
>      'RoleName=RoleName'
>      'User_Name=sysdba'
>      'Password=masterkey'
>      'ServerCharSet='
>      'SQLDialect=3'
>      'ErrorResourceFile='
>      'LocaleCode=0000'
>      'BlobSize=-1'
>      'CommitRetain=False'
>      'WaitOnLocks=True'
>      'Interbase TransIsolation=ReadCommited'
>      'Trim Char=False')
>    VendorLib = 'gds32.dll'
>
>  CONEXAO UTILIZANDO DRIVER UIB
> conBase: TSQLConnection
>    ConnectionName = 'UIB FireBird15 Connection'
>    DriverName = 'UIB FireBird15'
>    GetDriverFunc = 'getSQLDriverINTERBASE'
>    LibraryName = 'dbexpUIBfire15.dll'
>    LoginPrompt = False
>    Params.Strings = (
>      'BlobSize=-1'
>      'CommitRetain=False'
>      'Database=database.fdb'
>      'DriverName=UIB FireBird15'
>      'ErrorResourceFile='
>      'LocaleCode=0000'
>      'Password=masterkey'
>      'RoleName=RoleName'
>      'ServerCharSet='
>      'SQLDialect=3'
>      'Interbase TransIsolation=ReadCommited'
>      'User_Name=SYSDBA'
>      'WaitOnLocks=True')
>    VendorLib = 'fbclient.dll'
>
>
>
> PROCEDIMENTO
> procedure TForm1.Gravar(var cds: TClientDataSet);
> var
>  TD: TTransactionDesc;
> begin
>  Application.ProcessMessages;
>  if not (cds.State in [dsInsert, dsEdit]) then Exit;
>  TD.TransactionID := 1;
>  TD.IsolationLevel := xilREADCOMMITTED;
>  conBase.StartTransaction(TD);
>  try
>    cds.Post;
>    cds.ApplyUpdates(0);
>    conBase.Commit(TD);
>  except
>    conBase.Rollback(TD); >>>>>>>>>>>>>>>>>> ESTE ROLLBACK NÃO É
> EXECUTADO COM DRIVER UIB
>    cds.Edit;
>    raise;
>  end;
> end;
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>




Mais detalhes sobre a lista de discussão lista