Bonjour
Environnement : Access 2002 SP3, Windows XP
J'ai lu et vérifié qu'on ne pouvait pas modifier la structure de tables liés.
Il faut pourtant que je trouve un moyen de les modifier sans sortir de mon application, d'où le raisonnement suivant - peut-être erroné :
- je supprime les liens en cours
- j'ouvre la base des tables que je veux attacher, dans un autre workspace
- je change la structure
- je re-crée les liens
ci-joint le code qui devrait faire ça :
Mais cela ne fonctionne pas.
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
28
29
30
31
32
33
34
35
36
37
38
39
40 Sub alter_ation(ByVal Fichier As String) Dim dbs, db As Database Dim tdf As TableDef Set dbs = CurrentDb ' Elimination des liens For Each tdf In dbs.TableDefs If Len(tdf.Connect) > 0 Then DoCmd.DeleteObject acTable, tdf.Name End If Next Set wrk = CreateWorkspace("", "admin", "", dbUseJet) Set db = wrk.OpenDatabase(Fichier) For Each tdf In db.TableDefs 'Altération table Risques If tdf.Name = "Risques_PALIER" Then If Not ExisteChamp(tdf.Name, "Date_ident") Then CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ALTER COLUMN [Gravité_Risque] string(15)" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ALTER COLUMN [Proba_Risque] string(12)" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ADD COLUMN [Num_factor] string(3)" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ADD COLUMN [Date_ident] date" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ADD COLUMN [Date_maj] date" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ADD COLUMN [Tendance] byte" CurrentProject.Connection.Execute "ALTER TABLE " & tdf.Name & " ADD COLUMN [Phase] string(30)" End If End If Next ' Re-Mise en place des liens For Each TB In db.TableDefs DoCmd.TransferDatabase acLink, "Microsoft Access", Fichier, acTable, TB.Name, TB.Name, False Next End Sub
Access me dit : "Table ou contrainte non trouvée" sur le premier "Alter column".
Or il a pourtant trouvé la table puisqu'il est entré dans le "If".
A votre avis, qu'est ce qui cloche dans le raisonnement (ou dans le code) ?
merci à vous
cordialement
Partager