Bonjour à tous...

J'ai quelques questions pour vous concernant la modification de tables et la création de relations par DAO...

Je remercie également Tofalu pour son excellent tuto ici.

1er blocage : j'ai X tables dans une db pour lesquels je dois créer le MCD après une ré-importation de toutes ces tbl via ODBC.
Sur les conseils de Tofalu j'ai donc créer dans une tbl spécifique "tblRelation" ces relations avec ces champs :
TablePrincipale__________Texte
Champprincipal__________Texte
TableSecondaire ________Texte
ChampSecondaire _______Texte
MAJEnCascade __________Oui/Non
SuppressionEnCascade ___Oui/Non

Ensuite je dois donc créer les relations avec chacun des enregistrements à l'aide de ce code :
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
Private Function CreerRelationTable()
Dim oDb As DAO.Database
Dim oRlt As DAO.Relation
Dim oFld As DAO.Field
Set oDb = CurrentDb
'Crée la relation
Set oRlt = oDb.CreateRelation
'Définit les propriétés
oRlt.Attributes = dbRelationUpdateCascade
oRlt.ForeignTable = [tblRelation]![TableSecondaire].Value
oRlt.Name = [tblRelation]![ChampPrincipal].Value
oRlt.Table = [tblRelation]![TablePrincipale].Value
'Crée le champ dans la relation
Set oFld = oRlt.CreateField([tblRelation]![ChampPrincipal].Value)
'Définit le nom de la clé externe
oFld.ForeignName = [tblRelation]![ChampSecondaire].Value
'Ajoute le champ
oRlt.Fields.Append oFld
'Rafraîhit la collection Relations
oDb.Relations.Refresh
'Ajoute la relation
oDb.Relations.Append oRlt
'Rafraîhit la collection Relations
oDb.Relations.Refresh
'Ferme la base de données
oDb.Close
Set oDb = Nothing
End Function
Ma question : Comment structurer le code pour lire l'ensemble des enregistrements et créer toutes les relations de la tblRelation...Surement à l'aide d'un Do...Loop...?

2ème blocage : même principe que le 1er lol; je dois supprimer, dans toutes mes tables importées, des champs qui ne me servent pas. J'ai donc créé une tblChampASupprimer avec :
TableSource_______________Texte
ChampASupprimer__________Texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Private Function SupprimerChamp (oBaseDeDonnees As DAO.Database, strNomTable As String,
 strNomChampASupprimer As String) As Boolean
 
  'Récupère la table
   Set oTbl = oBaseDeDonnees.TableDefs(strNomTable)
  'Supprime le champ
  oTbl.Fields.Delete (strNomChampASupprimer)
  'Renvoie True
  SupprimerChamp = True
 Exit Function
Ma question : Comment structurer le code pour lire l'ensemble des enregistrements et supprimer tous les champs de la tblChampASupprimer ...Surement à l'aide d'un Do...Loop...?

Enorme merci à tous...je suis prêt à apprendre en suivant vos conseils ;-)
@+