[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