driver dbexpress da UIB com novas atualizacoes

04/06/2008

0

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


Alineri

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar