Após várias tentativas, integrar Oracle + Delphi + Zeos aparentemente ficou fácil!
Depois de algum tempo tentando integrar o Delphi 7 + Oracle, finalmente consegui!!
Estava com o seguinte problema: Conectava o Zeos a uma aplicação com banco de dados Oracle XE (free), conseguia atualizar tabelas (ZTables) mas para aplicações com muito tráfego atualizar tabelas não seria uma boa escolha pois ela trariam todas as tuplas da tabela, seria um select * da vida.
Então resolvi utilizar o ZQuery onde no programa coloco um sql do tip ( select * from cliente where cod_cli = :cod_cli). No construtor do programa abro a query.OPEN e então consigo visualizar os dados pesquisado (cod_cli). O problema estava quando tentava inserir, atualizar, ou deletar os dados. Simplesmente não fazia nenhuma ação.

Solução:

  • No componente Zconnection:
  1. configurar a propriedade TransactionIsolationLevel para tiReadCommited, com isso usuários só enxergaram dados atualizados
  2. Verificar o AutoCommit = true
  • No form de cadastro de cliente:
  1. Inserir um componente TZUpdateSQL, e para cada ação (insert, modify, delete) inserir os dados. Quais dados ? Eu fui na tentativa e erro e peguei todos os campos da minha tabela e fiz o seguinte
update cliente
set
cli_cod = :cli_cod,
cli_nome= :cli_nome,
cli_cpf = :cli_cpf,
cli_logradouro = :cli_logradouro,
...
where cli_cod = :old_cli_cod

Depois para na propriedade PARAMS definir o tipo de todos, repeti para as outras ações:
  • Insert:
insert into cliente(cli_cod,
cli_nome,
cli_cpf,
cli_logradouro, ...)
values( :cli_cod, cli_nome .....)

  • Delete
delete from cliente
where cli_cod =:cli_cod

Pronto! Na propriedade UpdateObject da query selecionei o componente TZUpdate e agora ORACLE RUN !!

Qualquer dúvida pode mandar email!

Até a próxima!