Ola Luciano, Estou utilizando firebird 2.1 + dbexpress com o Driver da UIB E esta tudo funcionando perfeitamente, inclusive campos Blobs.
Vamos aos seu problema primeiro. Realmente o seu codigo utilizando o driver do Interbase funciona Ok, a diferenca acredito que esta realmente na forma como ambos os drivers tratam as transacoes no dbexpress. Faca o seguinte: SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; SQLDataSet1. ExecSQL; StartTransaction; commit; basta voce startar a transacao apos o execsql e nao antes. essa foi a unica diferenca que encontrei dos drivers para IB e FB. Blobs funcionam normalmente com o drive da UIB Testa ai e verifica se vai funcionar. Em relacao ao close comitar esse problema nao sei como resolver principalmente se estiver setado no driver da UIB Default Transaction = TACommit, ele vai comitar assim que o close for chamado. a unica forma para evitar seria ao dar um open em uma consulta relalizar todos os procedimentos dentro das suas rotinas e ao termino da um close. um problema que estou tendo e para compilar a a dll da UIB http://www.progdigy.com/modules.php?name=UIB existe um pacote novo a UIB2.1 ( componente de acesso ) so que essa dll utiliza as implementacoes desse pacote de componentes que ja esta adaptado para firebird 2.x, entao acredito que eeses error devam estar corrigidos, o problema e que nao consigo compilar,utilizo o BDS 2006, e nao reconhece o tipo de dados DBINAME e OIDViewFields no BDS 2006 existe DBINAME32 e OIDViewField se altero no font a Dll e gerada normalmente mas nao funciona. Em alguns foruns ja verifiquei que a Dll consegue ser compilada sem problemas na versao 7 do Delphi que nao tenho no momento. Um detalhe antes de compilar o pacote da UIB e compilar a Dll e necessario instalar o pacote SynEdit disponivel no link abaixo http://sourceforge.net/project/downloading.php?group_id=3221&use_mirror=ufpr&filename=SynEdit-2_0_6.zip&75620534 quem sabe se com esse compilacao o problema de controle de transacao nao esta resolvido ? um forte abarco a todos []s alineri --- Em delphi-br@yahoogrupos.com.br, Luciano Calenzani Simões <[EMAIL PROTECTED]> escreveu > > Ninguém passou por este problema? > Alguém está usando FireBirs 2 com esse driver UIB FireBird15? > > Luciano Calenzani Simões > > > > > > ----- Mensagem original ---- > De: Luciano Calenzani Simões <[EMAIL PROTECTED]> > Para: delphi-br@yahoogrupos.com.br > Enviadas: Quinta-feira, 29 de Maio de 2008 19:39:41 > Assunto: [delphi-br] DBExpress x FireBird 2 x UIB FireBird15 > > > O UIB FireBird15 para DBExpress com FireBird 2 tem problemas no gerenciamento de transação. Além daquele do campo BLOB já relatado nesta lista. > > Explico: Se dentro do contexto da transação tiver um SQLDataSet/SQLQuery /... fazendo um select em uma tabela, ao executar o SQLDataSet.Close ele" commita" a transação, e continua o procedimento normalmente. Se ocorrer algum erro após esse SQLDataSet.Close, as operações de I/O que foram feitas no início não serão desfeitas, mesmo sendo executado o RoolBack. Não deve estar acreditando, na hora eu também não acreditei. > > Fiz um teste com o mesmo código com o dirver Interbase e funciona perfeitamente. Mas esse driver não funciona perfeitamente com o FireBird 2. > Isso só acontece com operação de SELECT, se dentro da transação só tiver INSERT, UPDATE e DELETE irá funcionar perfeitamente. > > Código exemplo (síntese): > > begin > ... > StartTransaction; > try > SQLDataSet1. CommandText := 'insert into table (codigo) values (1)'; > SQLDataSet1. ExecSQL; > SQLDataSet1. Close; > > SQLDataSet1. CommandText := 'select * from table'; > SQLDataSet1. Open; > SQLDataSet1. Close; // Aqui ele comita a transação automaticamente. > > // Quando chegar aqui, o 1º insert já está comitado, se houver erro daqui para frente ele não será desfeito. > SQLDataSet1. CommandText := 'insert into table (codigo) values (2)'; > SQLDataSet1. ExecSQL; > SQLDataSet1. Close; > > CommitWork; > except > RollBack; > end; > end; > > Luciano Calenzani Simões > > > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! > http://br.mail.yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas] >