Parabéns Alineri! Fantástica contribuição _MESMO_ !

Vou acompanhar o UIB pelo SVN, então... E vou botar pra funcionar uns testes 
aqui com o FB 2.x

Já ia migrar pro Delphi 2007 pros projetos paralelos pois agora tem um driver 
DBX4 pro FB2.x; com isso posso ficar no D7 ou D2005 e mesmo assim aproveitar o 
FB2.x

Abraço,
Ricardo.

alineri <[EMAIL PROTECTED]> escreveu:                             Ola pessoal,
 
 Continuando o assunto sobre o driver da UIB.
 
 Na verdade o projeto não esta tão parado assim, antes quero deixar
 claro que não entrei contato com o mantenedor do projeto, todas as
 informações aqui são resultados de pesquisas que eu mesmo realizei.
 
 Vamos la, o projeto continua sendo atualizado e podemos acompanhar no
 repositório do Servidor SVN do sourceforge no endereço abaixo:
 
 http://uib.svn.sourceforge.net/viewvc/uib/
 
 Após baixar as versões do projeto, compilei a versão 2.1 oficial     
   ( valida ) que fica no diretorio Tags, gerando a dll nessa versão,
 que tem pouquíssimas modificações em comparação com a versão
 disponível para download no site.
 
 E gerei uma outra dll, com base nas modificações feitas no diretório
 source dentro da pasta trunk do link acima.
 
 Entre as atualizações tem o suporte para o Firebird 2.1 entre outros
 que podem ser verificados nos registros de log do SVN do site.
 
 Estou testando as duas dlls que foram compiladas nas duas versões do
 Firebird 2.0 e 2.1 e ambas funcionam bem nessas duas versões do
 Firebird, não testei na versão 1.5 do firebird mas acredito que o
 suporte continue.
 
 Bem, documentei vários erros mencionados por colegas nesse forum e em
 outros e nao encontrei os referidos erros em ambas as dlls compiladas
 
 Uma observação : As dlls foram compiladas no delphi 7 e testadas no
 delphi 7 e BDS 2006.
 
 O único erro que não encontrei uma solução aparente no font do projeto
 foi em relação aos campos Blobs. Quem trabalhou ou trabalha com a Dll
 ja deve ter se deparado com o problema em que ao incluir ou atualizar
 uma imagem em um campo blob, a primeira transação é feita com sucesso,
 se tentarmos enviar uma nova imagem ou atualiza-la tinhamos o erro
 "transaction not assigned" 
 
 Resolvi esse erro da seguinte forma, utilizando o closedatasets do
 sqlconnection.
 
 ex:
 
 var
 
 MemImagem : TMemoryStream;
 CampoBmp : TJPEGImage;
 
 begin
 
 ....
 
 Sqldataset1.commandtext := 'insert into clientes_foto ( idcliente,   
  foto) values (:PAR_IDCLIENTE,:PAR_FOTO)';
 
 Sqldataset1.parambyname('PAR_IDCLIENTE').VALUE := MEDITIDCLIENTE.TEXT;
 Sqldataset1.PARAMBYNAME('PAR_FOTO').LoadFromStream(memimagem,ftblob);
 
 try
 
 MinhaTransacao.TransactionID := 1;
 MinhaTransacao.IsolationLevel := xilREADCOMMITTED;
 SQLConnection.StartTransaction(MinhaTransacao)
 
 SQLConnection.CloseDataSets;
 SqlDataSet.ExecSQL;
 
 SQLConnection.Commit(MinhaTransacao);
 
 Except
 on Exc:Exception do
 begin
 SQLConnection.Rollback(MinhaTransacao);
 MessageDlg('Erro:'+#10#10+Exc.Message,mtError,[mbOK],0);
 end;
 end;
 
 // abaixo um exemplo de como gerar um stream para carregar em campos
 //blobs
 
 CampoBmp := TJPEGImage.Create;
 MemImagem := TMemoryStream.Create;    
 campobmp.Assign(imgfoto.Picture.Graphic);   
 campobmp.CompressionQuality := 80;     memimagem.free;      
 campobmp.SaveToStream(memimagem);     memimagem.Position := 0;
 
 end;
 
 Dessa forma conseguimos trabalhar tranqüilamente com campos blobs sem
 mudar o "padrão" de como trabalhar com transações no dbx, porque se
 colocarmos o execsql antes de iniciarmos a transação também funciona, ex:
 
 SQLDataSet1. CommandText := 'insert into table (codigo) values (1)';
 SQLDataSet1. ExecSQL;
 StartTransaction;
 commit;
 
 Antes de finalizar o Closedatasets não fecha os datasets, nem fecha a
 conexão, a grosso modo, o CloseDatasets "limpa" os componentes dataset.
 
 Sei que é muito mais "seguro" trabalhar com drivers de empresas que
 mantem seus componentes atualizados, sei que o driver crlab para um
 único desenvolvedor sem o font não sai assim tão caro, se não me
 engano não sai por mais de R$ 180,00, mas já que temos um driver
 disponível a comunidade porque não utiliza-lo ? E inclusive ajuda-lo
 em sua manutenção e desenvolvimento, não podemos dizer todos, mas em
 sua grande maioria programadores que utilizam a plataforma delphi usam
 em seus projetos o Firebird como Banco de dados.
 
 Bem fica ai minha contribuição, espero que seja útil a alguém , segue
 abaixo o link para download das dlls, e os fontes utilizados para
 gerar ambas.
 
 OBS: A dll que esta no diretório VERSAO_TRUNK e a dll que foi gerada
 com as modificações ainda em teste, por isso a utilize ainda como
 teste.  A dll que esta no diretório VERSAO_TAGS foi gerada apartir dos
 fontes da versão 2.1 do diretório tags do repositório SVN.
 
 Lembrando que essa iniciativa não tem nenhuma responsabilidade ou
 ligação com o site do mantenedor do projeto, e para utilização oficial
 testada e validade do produto ir diretamente no site do mantenedor
 http://www.progdigy.com/modules.php?name=UIB ou no site
 http://uib.svn.sourceforge.net/viewvc/uib/ que é o repositório SVN do
 projeto.
 
 O intuito desse e-mail e de mostrar que e possível trabalhar com a Dll
   da UIB e incentivar os projetos Open.
 
 fontes 
 http://rapidshare.com/files/120095669/UIB21_TAGS.rar
 
 fonts
 http://rapidshare.com/files/120098103/UIB21_TRUNK.rar
 
 dlls
 http://rapidshare.com/files/120098709/DBExpress_drivers.rar
 
 Um forte abraço a todos
 Alineri
 
 
     
                                       

       
---------------------------------
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! 

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

Responder a