Você está na página 1de 20

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

1 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

2 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Notepad++ XN Resource Editor

Nesse artigo o diretrio D:\Delphi\Componentes\ZeosDBO2011\ ser o local escolhido para o checkout, sendo utilizado como path base. Assim, no caso de voc escolher um caminho diferente, basta reajustar as configuraes no passoa-passo de instalao para esse novo caminho. OBS: A revision utilizada durante a escrita desse artigo foi a r822.

Instalando o Pacote O procedimento de instalao bastante simples:

3 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

1. Abra o IDE do Delphi com permisses de administrador. Apesar de no ser obrigatrio, deixo como uma forte recomendao em decorrncia de problemas que tive em outras ocasies. 2. No IDE do Delphi, clique na opo "Open Project" no menu "File" e v at o subdiretrio "\packages\delphi15" do local onde o foi feito o checkout do ZeosLib. L, abra o grupo de projetos ZeosDbo.groupproj. OBS: O "15" nesse path identifica a verso do Delphi que, nesse caso, refere-se ao Delphi XE. Caso esteja utilizando uma outra verso, deve-se abrir o grupo de projetos correspondente a essa verso. Uma segunda dica para aqueles que j possuem o ZeosDBO 7 instalado e querem atualiz-los, recomendo antes de iniciar a instalao que seja removido a verso atual do IDE e tambm deletado todos os arquivos criados no ltimo build (.dcp, .dcu, .loca, .identcache, .dsk, .map e .bpl). Esses ltimos podem ser encontrados na pasta "build" (\packages\delphi15 \build). Assim, certifique-se de que essa pasta no contenha arquivos. 3. Build todos os projetos (menu Project -> Build All Projects); Se tudo estiver ok, o Delphi ir informar a ocorrncia de muitos hints e warnings durante o build dos packages. No se preocupe, por hora vamos considerar que essas notificaes no representam problemas.

4 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Entretanto, muito provavelmente ser apresentar uma mensagem de erro informando que no ter encontrado um determinado arquivo fonte (Exemplo: "... [DCC Fatal Error] ZCore.dpk(51): F1026 File not found: 'ZVariant.dcu' ..."). Para corrigir isto basta apenas localizar o respectivo arquivo mencionado na mensagem de erro a partir do subdiretrio "src" no local onde o checkout foi feito e acrescentar o caminho completo no Libray Path do Delphi (Menu Tools -> Options -> Environment Options -> Delphi Options -> Library). Para evitar essa e vrias outras notificaes desse tipo, acrescente cada um dos subdiretrios referentes ao cdigo fonte do ZeosLib no Library Path, como mostrado na imagem abaixo.

5 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Observe que na definio dos paths eu utilizo "$(DelphiComponents)\". Na minha esto de trabalho h uma varivel de ambiente chamada DelphiComponents que tem a finalidade de referenciar o diretrio onde todos os componentes/pacotes de terceiros esto localizados. Isso facilita a migrao e utilizao de verses diferentes de componentes sem que seja necessrio a reconfigurao dos path nos projetos ou no IDE do Delphi. Caso no tenha ou no queira adicionar essa varivel de ambiente, apenas substitua "$(DelphiComponents)\" pelo path onde o ZeosDBO est localizado (que nesse artigo D:\Delphi\Componentes\ZeosDBO2011). OBS: Se aps acrescentar os diretrios na Library Path o Delphi continuar exibindo a mensagem de erro, basta fech-lo e reabr-lo. No esquea de reabr-lo com permisses de administrador!

4. Instale o pacote de componentes selecionando a opo "Install" (no menu de

6 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

contexto) do pacote "ZComponentDesign150.bpl";

Se ao tentar instalar o pacote "ZComponentDesign150.bpl" for apresentado uma mensagem de erro igual ao da imagem abaixo, isso significa que o Delphi no encontrou o arquivo .BPL especfico.

7 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

A forma mais prtica e rpida de corrigir esse problema colocando o diretrio onde tal .BPL est localizada no PATH do sistema. Observe que ao ser buildado os pacotes do ZeosLib, ser criado um diretrio chamado build localizado no subdiretrio ".\packages\delphi15". Assim, basta acrescentar esse caminho (D:\Delphi\Componentes\ZeosDBO2011 \packages\delphi15\build) na lista de diretrios da varivel de ambiente "PATH".

OBS: Qualquer alterao nas variveis de ambiente ir requerer fechar e abrir novamente o Delphi, para que as alteraes tenham efeito. Se ao tentar instalar o pacote "ZComponentDesign150.bpl" for apresentado uma mensagem de erro igual ou semelhante ao da imagem abaixo, muito provavelmente ocorreu um descuido na especificao dos path do ZeosDBO.

Classifico como descuido porque esse erro foi ocasionado quando estava

8 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

tentando instalar o ZeosDBO que estava em um path diferente daquele referenciado no System Path e no Library Path (no IDE do Delphi). Assim, garanta que todos os path apontem exatamente para o diretrio onde o ZeosDB est localizado. Se tudo correr bem o Delphi ir apresentar um dialog informando a lista dos componentes que foram instalados.

5. Validando a instalao do pacote Opcionalmente, voc pode confirmar se a instalao realmente est consistente verificando os pacotes de componentes instalados no Delphi. Para isso acesse o menu Component -> Install Packages ... e localize a entrada "Zeos Database Components".

9 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Conexo com PostgreSQL 9.0 A primeira questo a ser verificada se essa verso do ZeosDBO consegue, ao menos, conectar-se ao PostgreSQL. Nesse ponto assumido que voc j tenha instalado o PostgreSQL 9.0. Para esse teste bsico, um novo projeto foi criado e um componente TZConnection foi dropado no formulrio. Observe na imagem ao lado que a conexo foi efetuada com sucesso sobre a prpria base de dados do postgres (metadados). Um ponto a ser destacado que na lista de protocolos (propriedade Protocol) no h um item "postgresql-9", como esperado. Assim, a opo mais provvel foi utilizar "postgresql-8". Penso que com o tempo seja acrescentado uma opo exclusiva para a verso 9 do postgresql, j que essa introduz mudanas significativas. A configurao do componente TZConnection no DFM apresentado como: object ZConnection1: TZConnection

10 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Properties.Strings = ( 'codepage=UTF8' 'client_encoding=UTF8') AutoCommit = False Connected = True Protocol = 'postgresql-8' HostName = '127.0.0.1' Port = 5432 Database = 'postgres' User = 'postgres' Password = 'MinhaSenha' Left = 126 Top = 16 end Aps configurar o componente e alterar a propriedade Connected para True, pela primeira vez, uma notificao de erro igual ao da imagem abaixo foi apresentada.

Esse um problema clssico que resolvido ou copiando os devidos arquivos para a pasta do projeto ou acrescentando o diretrio onde tais arquivos se

11 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

encontram no PATH do sistema. Todas as DLLs esto localizados no subdiretrio "bin" do diretrio de instalao do PostgreSQL (provavelmente C:\Program Files\PostgreSQL\9.0\bin).

Como mostra a imagem acima, a soluo escolhida foi acrescentar o diretrio de instalao do PostgreSQL no Path do sistema para que no seja necessrio ter que copiar novamente as DLLs para novos projetos que usem o ZeosDBO. Aps isso s foi necessrio fechar e reabrir o Delphi e a conexo ocorreu como esperada.

Realizando consultas Aps uma conexo bem sucedida, realizei alguns testes com os componentes bsicos para exibir os registros das tabelas. Na imagem abaixo pode-se notar o componente DBGrid exibindo informaes da tabela "information_schema.table".

12 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Apesar de ter realizados alguns poucos testes bsicos em modo de design, aparentemente os componentes esto funcionando bem. No notei qualquer tipo de falha. Para validar provveis problemas de suportes que muitas vezes so observados em circunstncias especficas ou aps um bom tempo de uso, resolvi migrar todo um sistema desenvolvido no Delphi 2010 para o Delphi XE. Esse sistema possui um framework de banco de dados baseado no ZeosDBO e, em teoria, buildar e executar esse sistema atravs do Delphi XE iria expor qualquer falta de suporte para com o PostgreSQL 9.0, j que esse framework faz uso moderado dos recurso/componentes do ZeosDBO e o sistema possui uma base de dados relativamente grande.

Migrando o sistema para o Delphi XE Imaginei que seria mais trabalhoso, mas praticamente no foi preciso fazer muita coisa. Ao abrir o grupo de projeto desse sistema que foi criado no Delphi 2010, o Delphi

13 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

XE nem mesmo realizou qualquer tipo de converso de formato. O nico trabalho que tive foi substituir, na clusula require dos projetos a referncia de alguns pacotes de componentes de terceiros (por exemplo: substituir tms2010 por tms2011). O que no custou mais do que 30 minutos. S encontrei problemas com alguns pacotes de terceiros que estavam sendo utilizados. Entretanto, para todos j havia uma verso mais recente que suportavam o Delphi XE. Assim, o trabalho real foi instalar as verses novas desses pacotes, com exceo de um deles que necessitou alguma interveno manual. Bom, aqui o que nos interessa a suporte do ZeosDBO ao PostgreSQL 9.0 e em relao a isso surpreendetemente no foi necessrio modificar uma linha se quer do framework de banco de dados (esse framework foi criado em 2008 com a ainda recente verso 6.6.4 do ZeosDBO!). O sistema foi buildado 100% sem qualquer problema (apenas alguns poucos hints). O foco desse post no a migrao de sistemas para o Delphi XE, mas a experincia foi muito positiva. E encorajo qualquer um que use o Delphi 2010 para fazer esse upgrade. Inicialmente fiquei pensando que era bom demais para ser verdade e que bastaria rodar o sistema para as cores de cabea aparecerem. Para minha felicidade, o software executou normalmente passando com sucesso em todos os testes automatizados.

Concluso Tenho a total conscincia que por mais amplo que seja a utilizao dos componentes e das funcionalidades do ZeosDBO nesse framework de banco de dados, precipitado concluir que a verso alfa da verso 7.0 totalmente compatvel com o PostgreSQL 9.0, mas sinto-me tranquilo para incentivar a qualquer um que j esteja pensando em fazer algum tipo de migrao/upgrade parecido para que o faa.
Postado por Fabius Lovato s 17:17

14 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

11 comentrios:
EPR disse... Muito o post!!! Apenas uma coisa a acrescentar ao utilizar o Zeos conectando ao PostgreSQL: - Na propriedade PROPERTIES acrescentar as seguintes linhas: codepage=UTF8 client_encoding=UTF8 Isso far com o que Zeos reconhea caracteres especiais e acentos. Caso contrrio, ele os exibir de forma incorreta\distorcida. 21 de outubro de 2010 18:17

Paulo disse... EPR Referente ao seu comentario: - Na propriedade PROPERTIES acrescentar as seguintes linhas: codepage=UTF8 client_encoding=UTF8 Estou desenvolvendo em Delphi 2010 com ZEOS 7. O PG 8.4 (ou 9) ser armazenado no Linux: neste caso como configurar o PG (com UTF8) e o ZEOS quanto 'locale', 'client_encoding'? 27 de outubro de 2010 16:46

Boris disse... Ol, Executei os procedimentos listados no seu texto. Ao trmino recebi a

15 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

confirmao de instalao com sucesso, mas os componentes no aparecem na paleta. Ao tentar editar recebo a informao de que a bpl zcomponentdesign150.bpl no foi encontrada. Nota: Atualizei o path do windows e reiniciei tanto o windows quanto o Delphi. Uso Windows7, DelphiXE, Zeos reviso 835. Um abrao. 31 de outubro de 2010 22:29

Adriano disse... Caro, Fabius Lovato, tentei instalar o zeos 6.6.6 conforme seu artigo, mais encontrei um problema ao dar um Build All Projects. Ele para aqui: ZPlainSqLite3.sqlite_open(PAnsiChar(AnsiToUTF8(FileNameString)), Result0) E mostra as seguntes mensagens de erro do compilador: [DCC Error] ZPlainSqLiteDriver.pas(839): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar' [DCC Fatal Error] ZPlain.dpk(403): F2063 Could not compile used unit '..\.. \src\plain\ZPlainSqLiteDriver.pas' [DCC Fatal Error] ZComponentDesign.dpk(36): E2202 Required package 'ZPlain' not found Poderia me ajudar? 2 de novembro de 2010 00:15

EPR disse... Paulo, quanto sua dvida... Quando voc for criar o banco, j deve colocar o CHARSET para UTF8 e, nas

16 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

tabelas, o client-encoding para UTF8 tambm. 16 de novembro de 2010 13:25

starglider disse... Caro Fabius, instalei no meu Delphi 7 e PostgreSQL 8.1, mas os carateres com acento no aparecem corretamente. Claro que coloquei em Properties os valores mencionados. Ser da verso do Delphi? Obrigado. Cumps. Jorge 29 de novembro de 2010 09:01

mslxp disse... EPR, obrigado pela dica, me salvou :D 8 de dezembro de 2010 16:06

talo disse... Bem pessoal..irei passa uma forma que conseguir instalar o zeos rpido e sem problemas 1 cria uma pasta no diretrio "lib" caso do delphi xe. exemplo "pasta Zeos" 2 copie todos arquivos do zeos para essa pasta e abra o delphi xe, navegue at Packages\delphi15 e selecione sergurando o ctlrl todos e somente os arquivos de extenso "DPROJ" ou "DPK" e manda excutar(compilar) todos de

17 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

uma vez s, no delphi xe ira aparece erros ..deixa pra l. 3v Menu Tools -> Options -> Environment Options -> Delphi Options -> Library).e indique os diretrios da pasta Src, na pasta Zeos que voc criou no diretrio lib do delphi xe de um por um, pronto!!! 4 v na pasta Packages\delphi15\build do Zeos e copie todos e somente os arquivos com extenso "bpl"que foram gerado na compilao para a pasta pasta bin do delphi xe. 5 abra o delphi xe e v em Component e escolha a opo Instal Packages... logo depois v em add e va at no diretrio que voc criou com nome Zeos na pasta lib do delphi xe. o diretrio :Packages\delphi15\build e escolha o arquivo de extenso "bpl" chamado:"ZComponentDesign150.bpl" PRONTO TUDO ESTAR INSTALADO E FUNCIONANDO BEM!!!! 11 de dezembro de 2010 16:16

disse... Worked like a charm. For those using MySql and UTF-8, put OnAfterConnect of TZConnection: procedure Trdm.ZConnection1AfterConnect(Sender: TObject); var qryUpit:TZQuery; begin qryUpit := TZQuery.Create(nil); qryUpit.Connection := ZConnection1; qryUpit.SQL.Add('SET NAMES utf8'); qryUpit.ExecSQL(); qryUpit.SQL.Clear; qryUpit.SQL.Add('SET CHARACTER SET utf8'); qryUpit.ExecSQL(); qryUpit.SQL.Clear; qryUpit.SQL.Add('SET character_set_client=utf8'); qryUpit.ExecSQL(); qryUpit.SQL.Clear;

18 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

qryUpit.SQL.Add('SET character_set_connection=utf8'); qryUpit.ExecSQL(); qryUpit.Free; end; Thanks Fabius 11 de maro de 2011 19:38

Luis disse... Perfeito Diferente dos outros posts, este resolve a maior parte dos problemas. Mto bom! 27 de abril de 2011 16:44

Alessandro disse... Para quem esta com problema de no aparecer os componentes na palete eu tambm tive esse problema e resolvi atravz de variavel de ambiente! eu no utiliza, apenas apontava o caminho no path porm se no fizer usando as variveis de ambiente no rola... 29 de abril de 2011 23:34 Postar um comentrio

Links para esta postagem


Criar um link

Postagem mais recente

Incio

Postagem mais antiga

19 de 20

14/09/2011 17:11

Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0

http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html

Assinar: Postar comentrios (Atom)

20 de 20

14/09/2011 17:11

Você também pode gostar