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:
// abaixo um exemplo de como gerar um stream para carregar em campos //blobs
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
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
Curtir tópico
+ 0
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?
Como faço para compilar para o delphi 2006 e fb 2.1?
Responder
Clique aqui para fazer login e interagir na Comunidade :)