driver dbexpress da UIB com novas atualizacoes

04/06/2008

1

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:´+#1010+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;


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


Responder

Posts

10/08/2008

Farnetani

Qual é exatamente a diferença da versão Tags e Trunk?

Como faço para compilar para o delphi 2006 e fb 2.1?


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira