Dicas do OsmarJr

Sinônimos Oracle


Com tabelas ODBC, como você sabe, precisamos ter um campo índice definido para sermos capazes de atualizar dados. Quando criamos manualmente um vínculo a um sinônimo de tabela do Oracle, devemos selecionar um índice. Se não atendermos, não serão gerados novos erros, exceto que a tabela se torna apenas leitura.

Autores: Dev Hashish e Steve Jorgensen

O problema fica ainda mais complicado quando criamos/manipulamos a vinculação ODBC por código. O VBA cria o vínculo sem fazer solicitação de índice. Todas as tabelas vinculadas via código tornam-se Apenas Leitura.

A única solução que encontrei: não use sinônimos, conecte-se diretamente às tabelas.

Pelo que valer, acho que isto ocorre porque o driver ODBC, ao devolver a informação visível de tabela e sinônimo do Oracle não faz distinção entre uma tabela e seu sinônimo. Quando o Access tenta vincular a um sinônimo, ele pensa que a vinculação é à tabela e não consegue encontrar um índice, e com razão, já que o índice está presente na tabela real. Manualmente é solicitada a seleção de um índice mas, por código, isto não ocorre.

Alternativa:

Você pode usar uma consulta DDL (Data Definition Language) para definir uma chave única de uma vinculação a uma view em Access 2, 95 ou 97. O Access 97 é a primeira versão que permite que campos chave sejam definidos quando da criação do vínculo.

O método da consulta DDL ainda funciona no Access 97. Simplesmente execute uma consulta DDL que contém um comando para definir a chave primária do vínculo. Como isto está sendo aplicado a um vínculo, o JET interpreta a declaração como especificando quais campos identificam unicamente cada registro (linha). Sei que este método funciona pois o uso regularmente.

Exemplo:

    create index ProdBatchID on vwInventory(ProdBatchID) with primary

 

Home

Contato | Copyright©Osmar José Correia Júnior | 24-Nov-2005 18:23