terça-feira, 15 de janeiro de 2008

TUpdateSQL & PostgreSQL

Olá!

Hoje vamos corrigir um BUG no Zeos!

Ohhhhhhhh...

Não é nada de mais, mas com certeza atrapalha o cara na hora de decidir se usa ou não o Zeos.

O problema é no componente TZUpdateSQL.
O objetivo deste componente é o de gerar, rapidamente, instrução DML, ou seja, Insert, Delete e Update.
Basicamente, você deve ligar um TZQuery a um TZUpdateSQL, dar dois cliques neste último, clicar em alguns botões e, voilá, poderemos editar as tabelas.

E qual o problema?

Por um desses mistérios da vida, o PostgreSQL não aceita esse tipo de instrução:

insert into tabela (tabela.campo1) values ('teste');

O que pega é justamente o trecho: tabela.campo1.

E só porque o PostgreSQL não aceita isso o TZUpdateSQL gera as isntruções justamente assim.

A princípio, bastaria apenas desmarcar a opção Quote Field Names, que, no momento dessas mal traçadas linhas, eu não sei bem ao certo o objetivo.

Para corrigir esta situação, proceda da seguinte forma:

1) Feche todo r qual projeto do Delphi;

2) Abra o ZComponentDesign100.bpl;

3) Procure a unit ZUpdateSqlEditor;

4) Localize a function GetTableRef;

5) Acrescente os ovos;

6) Mude a intrução if QuoteChar <> '' then para if (Self.QuoteFields.Checked) then;

7) Compile e instale a BPL;

8) Reabra o seu projeto e seja mais produtivo!

Obviamente pode ser que haja uma solução mais elegante que esta e se houver eu realmente gostaria de saber.

Mas em todo o caso, esta é uma solução.

Feliz Código a todos.

Minha lista de blogs