Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 12h28   #1
Membre habitué
 
Inscription : janvier 2006
Messages : 99
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2006
Messages : 99
Points : 101
Points : 101
Par défaut Liaison ODBC Oracle en lecture seule

Bonjour,

J'utilise Access en frontal sur une base Oracle. Cette base Oracle possède plusieurs schémas identiques.
Sur mon frontal, l'utilisateur choisit son schéma auquel il veut se connecter.
Ensuite mon programme déconnecte toutes les tables attachées Oracle et se reconnecte ensuite sur le bon schéma.

Mon problème se situe au niveau du code de rattachement des tables. En effet, il attache bien toutes les tables Oracle mais celles-ci sont en lecture seule uniquement. Alors que si je procède manuellement (lier les tables --> tables odbc --> je choisis ma liaison --> je choisis mes tables), les tables sont bien en lecture/écriture.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
Const ServerOracle = "MonServeurOracle"
Const DSN = "MonDSN"
Const UserId = "MonUser"
Const Pwd = "MonPwd"
 
Private Sub ConnexionTablesOracle()
 
    Dim db As Database, tbl As TableDef
    Dim rst As Recordset
 
    Set db = CurrentDb
    Set rst = db.OpenRecordset("Select * From[Liste des Tables Oracle à charger]")
    rst.MoveFirst
    While Not rst.EOF
        Set tbl = db.CreateTableDef(rst![Nom Access])
        tbl.Connect = "ODBC;DSN=" & DSN & ";DBQ=" & ServerOracle & ";UID=" & UserId & ";PWD=" & Pwd & ";DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BNF=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;"
        tbl.SourceTableName = rst![Nom Oracle]
        tbl.Name = rst![Nom Access]
        db.TableDefs.Append tbl
        tbl.RefreshLink
        rst.MoveNext
    Wend
    rst.Close
    Set rst = Nothing
 
End Sub
J'ai bien vérifié que la propriété Connect est identique entre une table liée manuellement ou liée par ce code. Les tables Oracle ont bien toutes une clef primaire.

Qu'ai-je bien pu oublié ?

PS : à noter que sous Access 2007 (même version d'Oracle, même version de drivers ODBC), ce code fonctionne parfaitement, les tables sont en lecture/écriture.
Aegnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h48   #2
Membre habitué
 
Inscription : janvier 2006
Messages : 99
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2006
Messages : 99
Points : 101
Points : 101
Au temps pour moi, le code fonctionne parfaitement. C'est juste mon poste en Access 2003 qui avait besoin d'un petit redémarrage. Les mystères de Windows, quoi...
Aegnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h22.


 
 
 
 
Partenaires

Hébergement Web