|
Tables: Ne pas se laisser piquer par le bug Synonym ! |
Author(s) Dev Ashish |
|
Ne vous laissez pas piquer par le bug Synonym !
Lorsqu'on utilise une table attachée par ODBC, comme
vous le savez, il nous faut fournir un index pour être capable de modifier les
données. Lorsqu'on crée un lien, manuellement, vers une table synonyme en
Oracle, on nous demande de choisir un index. Si on ne le fait pas, aucune erreur
ne survient, mais la table ne devient accessible qu'en lecture seulement.
Le problème est encore plus compliqué lorsqu'on crée ou
manipule ces liens de par le code VBA: le lien sera crée, sans demande d'index
et toutes les tables rafraîchies sont maintenant en lecture seule..
La seule solution que j'ai trouvé.... N'utilisez pas de
synonymes, connectez directement à la table actuelle.
Pour ce que cela vaut, je pense que c'est parce que le pilote
ODBC, lorsqu'il retourne l'information entre une table visible et un synonyme,
depuis Oracle, aucune distinction n'est faite entre les deux. Quand Access
essaie de s'attacher à un synonyme, il pense s'attacher à une table, mais,
avec raison, ne trouve pas d'index. Manuellement, on se retrouve avec une demande
d'information additionnelle, mais cela ne se produit pas si on passe par le
code.
--Soumis par Steve Jorgensen--
Vous pouvez utiliser une requête DDL (Data Definition Language) pour
définir une clé à une table attachée/liée à une vue en Access 2, 95,
ou 97. Access 97 est la première version qui permet également de définit
manuellement la clé lorsqu'une connexion manuelle est crée.
La requête DDL fonctionne également sous Access 97. Simplement exécuter la
requête qui contient la commande de définir une clé primaire sur le lien.
Étant appliqué sur un lien, JET interprète cet énoncé en spécifiant que
champs personnalisent chaque enregistrement. Je sais que cette méthode
fonctionne, car je l'utilise fréquemment.
Exemple:
create index ProdBatchID on vwInventory(ProdBatchID) with primary
|