Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0
1 de 20
http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html
14/09/2011 17:11
Delphi Developing: Delphi XE (2011) + ZeosLib 7 + PostgreSQL 9.0
2 de 20
http://flovato.blogspot.com/2010/09/delphi-xe-2011-zeoslib-7-postgresql-90.html
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 diretório 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 configurações no oa-o de instalação para esse novo caminho. OBS: A revision utilizada durante a escrita desse artigo foi a r822.
Instalando o Pacote O procedimento de instalação é 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 permissões de . Apesar de não ser obrigatório, deixo como uma forte recomendação em decorrência de problemas que tive em outras ocasiões. 2. No IDE do Delphi, clique na opção "Open Project" no menu "File" e vá até o subdiretório "\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 versão do Delphi que, nesse caso, refere-se ao Delphi XE. Caso esteja utilizando uma outra versão, deve-se abrir o grupo de projetos correspondente a essa versão. Uma segunda dica para aqueles que já possuem o ZeosDBO 7 instalado e querem atualizá-los, recomendo antes de iniciar a instalação que seja removido a versão atual do IDE e também deletado todos os arquivos criados no último build (.d, .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 não contenha arquivos. 3. Build todos os projetos (menu Project -> Build All Projects); Se tudo estiver ok, o Delphi irá informar a ocorrência de muitos hints e warnings durante o build dos packages. Não se preocupe, por hora vamos considerar que essas notificações não 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 não 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 subdiretório "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 várias outras notificações desse tipo, acrescente cada um dos subdiretórios referentes ao código 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 definição dos paths eu utilizo "$(DelphiComponents)\". Na minha estão de trabalho há uma variável de ambiente chamada DelphiComponents que tem a finalidade de referenciar o diretório onde todos os componentes/pacotes de terceiros estão localizados. Isso facilita a migração e utilização de versões diferentes de componentes sem que seja necessário a reconfiguração dos path nos projetos ou no IDE do Delphi. Caso não tenha ou não queira adicionar essa variável de ambiente, apenas substitua "$(DelphiComponents)\" pelo path onde o ZeosDBO está localizado (que nesse artigo é D:\Delphi\Componentes\ZeosDBO2011). OBS: Se após acrescentar os diretórios na Library Path o Delphi continuar exibindo a mensagem de erro, basta fechá-lo e reabrí-lo. Não esqueça de reabrí-lo com permissões de !
4. Instale o pacote de componentes selecionando a opção "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 não encontrou o arquivo .BPL específico.
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 prática e rápida de corrigir esse problema é colocando o diretório onde tal .BPL está localizada no PATH do sistema. Observe que ao ser buildado os pacotes do ZeosLib, será criado um diretório chamado build localizado no subdiretório ".\packages\delphi15". Assim, basta acrescentar esse caminho (D:\Delphi\Componentes\ZeosDBO2011 \packages\delphi15\build) na lista de diretórios da variável de ambiente "PATH".
OBS: Qualquer alteração nas variáveis de ambiente irá requerer fechar e abrir novamente o Delphi, para que as alterações 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 especificação 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 diretório onde o ZeosDB está localizado. Se tudo correr bem o Delphi irá apresentar um diaformando a lista dos componentes que foram instalados.
5. Validando a instalação do pacote Opcionalmente, você pode confirmar se a instalação realmente está consistente verificando os pacotes de componentes instalados no Delphi. Para isso e 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
Conexão com PostgreSQL 9.0 A primeira questão a ser verificada é se essa versão do ZeosDBO consegue, ao menos, conectar-se ao PostgreSQL. Nesse ponto é assumido que você já tenha instalado o PostgreSQL 9.0. Para esse teste básico, um novo projeto foi criado e um componente TZConnection foi dropado no formulário. Observe na imagem ao lado que a conexão foi efetuada com sucesso sobre a própria base de dados do postgres (metadados). Um ponto a ser destacado é que na lista de protocolos (propriedade Protocol) não há um item "postgresql-9", como esperado. Assim, a opção mais provável foi utilizar "postgresql-8". Penso que com o tempo seja acrescentado uma opção exclusiva para a versão 9 do postgresql, já que essa introduz mudanças significativas. A configuração 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' = 'postgres' = 'MinhaSenha' Left = 126 Top = 16 end Após configurar o componente e alterar a propriedade Connected para True, pela primeira vez, uma notificação de erro igual ao da imagem abaixo foi apresentada.
Esse é um problema clássico que é resolvido ou copiando os devidos arquivos para a pasta do projeto ou acrescentando o diretório 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 estão localizados no subdiretório "bin" do diretório de instalação do PostgreSQL (provavelmente C:\Program Files\PostgreSQL\9.0\bin).
Como mostra a imagem acima, a solução escolhida foi acrescentar o diretório de instalação do PostgreSQL no Path do sistema para que não seja necessário ter que copiar novamente as DLLs para novos projetos que usem o ZeosDBO. Após isso só foi necessário fechar e reabrir o Delphi e a conexão ocorreu como esperada.
Realizando consultas Após uma conexão bem sucedida, realizei alguns testes com os componentes básicos para exibir os registros das tabelas. Na imagem abaixo pode-se notar o componente DBGrid exibindo informações 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 básicos em modo de design, aparentemente os componentes estão funcionando bem. Não notei qualquer tipo de falha. Para validar prováveis problemas de es que muitas vezes são observados em circunstâncias específicas ou após 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 através do Delphi XE iria expor qualquer falta de e 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 não 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 conversão de formato. O único trabalho que tive foi substituir, na cláusula require dos projetos a referência de alguns pacotes de componentes de terceiros (por exemplo: substituir tms2010 por tms2011). O que não custou mais do que 30 minutos. Só encontrei problemas com alguns pacotes de terceiros que estavam sendo utilizados. Entretanto, para todos já havia uma versão mais recente que avam o Delphi XE. Assim, o trabalho real foi instalar as versões novas desses pacotes, com exceção de um deles que necessitou alguma intervenção manual. Bom, aqui o que nos interessa é a e do ZeosDBO ao PostgreSQL 9.0 e em relação a isso surpreendetemente não foi necessário modificar uma linha se quer do framework de banco de dados (esse framework foi criado em 2008 com a ainda recente versão 6.6.4 do ZeosDBO!). O sistema foi buildado 100% sem qualquer problema (apenas alguns poucos hints). O foco desse post não é a migração de sistemas para o Delphi XE, mas a experiência 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 cabeça aparecerem. Para minha felicidade, o software executou normalmente ando com sucesso em todos os testes automatizados.
Conclusão Tenho a total consciência que por mais amplo que seja a utilização dos componentes e das funcionalidades do ZeosDBO nesse framework de banco de dados, é precipitado concluir que a versão alfa da versão 7.0 é totalmente compatível com o PostgreSQL 9.0, mas sinto-me tranquilo para incentivar a qualquer um que já esteja pensando em fazer algum tipo de migração/upgrade parecido para que o faça. 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 comentários: 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 reconheça caracteres especiais e acentos. Caso contrário, 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 término 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
confirmação de instalação com sucesso, mas os componentes não aparecem na paleta. Ao tentar editar recebo a informação de que a bpl zcomponentdesign150.bpl não foi encontrada. Nota: Atualizei o path do windows e reiniciei tanto o windows quanto o Delphi. Uso Windows7, DelphiXE, Zeos revisão 835. Um abraço. 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 dúvida... 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 também. 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 não aparecem corretamente. Claro que coloquei em Properties os valores mencionados. Será da versão 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 a uma forma que conseguir instalar o zeos rÁpido e sem problemas 1° cria uma pasta no diretório "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 extensão "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á. 3°vá Menu Tools -> Options -> Environment Options -> Delphi Options -> Library).e indique os diretórios da pasta Src, na pasta Zeos que você criou no diretório 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 extensão "bpl"que foram gerado na compilação para a pasta pasta bin do delphi xe. 5° abra o delphi xe e vá em Component e escolha a opção Instal Packages... logo depois vá em add e va até no diretório que você criou com nome Zeos na pasta lib do delphi xe. o diretório é:Packages\delphi15\build e escolha o arquivo de extensão "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 março 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 não aparecer os componentes na palete eu também tive esse problema e resolvi atravéz de variavel de ambiente! eu não utiliza, apenas apontava o caminho no path porém se não fizer usando as variáveis de ambiente não rola... 29 de abril de 2011 23:34 Postar um comentário
Links para esta postagem Criar um link
Postagem mais recente
19 de 20
Início
Postagem mais antiga
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
: Postar comentários (Atom)
20 de 20
14/09/2011 17:11