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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Partager