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 :
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
Mais cela ne fonctionne pas.
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