[VBA-A97] DAO : Suppression champs et création MCD...
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:
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:
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 ;-)
@+
[VBA-A97] DAO : Indexation champs multiple et Création MCD
Bonjour à tous !
Permettez-moi un tit up sur mon dernier message, ce sont les 2 seuls points bloquants qu'il me reste ! :-)
Merciiiiiiiiiiiiiiiiiiiiiiiii