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 :
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...?
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
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
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...?
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
Enorme merci à tous...je suis prêt à apprendre en suivant vos conseils ;-)
@+
Partager