OVH Cloud OVH Cloud

acLink ODBC de tables Oracle

3 réponses
Avatar
CFlo
Bonjour,

En Access 2000 VBA j'ai besoin de lier des tables Oracle.=20
J'utilise l'instruction DoCmd.TransfertDatabase=20
acLink, "Base de donn=E9es ODBC", "ODBC;DSN etc etc "
Mon probl=E8me est qu'Access envoie un =E9cran avec une=20
question : S=E9lectionner un identificateur unique=20
d'enregistrement avec la liste des champs de la table=20
locale. Pas terrible dans un batch! Qu'est-ce que je dois=20
faire pour =E9viter ce type de message ou bien quelles=20
instructions pour renseigner et ainsi l'=E9viter.

J'ai essay=E9 avec acImport mais comme je boucle sur x=20
tables Oracle que je r=E9cup=E8re toujours sous nom de=20
table "Toto" en local mon .mdb explose car il grossit =E0=20
chaque base Oracle import=E9e m=EAme sous le m=EAme nom et le=20
DoCmd.DeleteObject acTable, "Toto" avant ni change rien.

Merci pour votre aide

3 réponses

Avatar
Xavier HUE
Bonjour CFlo,

J'ai souvent rencontré le même problème en liant des
fichiers AS/400. Ceci est dû au fait qu'Access à besoin
d'une clé primaire pour gérer les tables en mise à jour ou
ajout.

Tes tables Oracle ont-elles une clé primaire?

A défaut, peut être en désactivant les messages envoyés
par Access:

DoCmd.SetWarnings False
DoCmd.TransfertDatabase ...
DoCmd.SetWarnings True

Mais dans le cas, les tables liées seront en lecture seule.

Cordialement.
Avatar
Merci.

Les tables Oracle n'ont pas de clé primaire et je ne peux
pas en créer une. Le gestionnaire de la base ne veut pas
les créer!!!

J'ai essayé le setWarnings False mais ça ne règle pas le
problème.

Je vais tenter la piste Supprimer la table/Changer de
base/Fermer la base/Compacter la base/Ouvrir la
base/Aller dans la base...quelle galère. Je suis preneur
de toute autre meilleur idée.

-----Message d'origine-----
Bonjour CFlo,

J'ai souvent rencontré le même problème en liant des
fichiers AS/400. Ceci est dû au fait qu'Access à besoin
d'une clé primaire pour gérer les tables en mise à jour
ou

ajout.

Tes tables Oracle ont-elles une clé primaire?

A défaut, peut être en désactivant les messages envoyés
par Access:

DoCmd.SetWarnings False
DoCmd.TransfertDatabase ...
DoCmd.SetWarnings True

Mais dans le cas, les tables liées seront en lecture
seule.


Cordialement.
.



Avatar
Xavier HUE
Bonjour CFLo,

Peut être quelque chose comme ce qui suit alors (extrait
d'une routine que j'utilise pour recréer des tables
attachées)

Dim BaseCible As Database
Dim TDF As TableDef 'Objet TableDef à
créer

'Création de la table
'Table ODBC
Set BaseCible = CurrentDB
Set TDF = BaseCible.CreateTableDef(NomTableInterne)
TDF.Connect = "ODBC;DSN=" & NomDataSource & ";DATABASE="
TDF.Name = NomTableInterne
TDF.SourceTableName = NomTableExterne (par exemple
DBLIB.DBPRODP0 pour un fichier AS/400)

'Ajouter Définition de la nouvelle Table dans la
collection
BaseCible.TableDefs.Append TDF


TDF.Close
BaseCible.Close
Set TDF = Nothing
Set BaseCible = Nothing

Tu n'auras pas le message qui te gêne.
Je n'ai pas testé cet extrait modifié.

Tu peux également t'inspirer des exemples présents dans
les archives du forum: http://minilien.com/?cf9UyyhrNf

Cordialement.