Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lister les relations entre tables access

2 réponses
Avatar
michel_bdx
bonjour

quand je liste les relations entre tables j'obtiens ceci pour rel.name :
{CBD94C15-E05F-4B28-8260-097EFD3E107B}

comment obtenir la liste de toutes les relations avec tous les parametres
des relations

merci
michel

2 réponses

Avatar
Gilbert
Bonjour,

Tu peux t'inspirer du code suivant

Gilbert

'Constante définissant le nom de la table où seront sauvegardées les
définitions de relations
Const cTableSauvegarde = "SystSauvegardeRelationTable"

Sub RelationsSauvegarde()
'--------------------------------------------------------------------------­
------------------------
' Objet : Sauvegarde dans une table toutes les informations définissant les
relations entre les
' tables de la base courante.
'
' Usage : Permet de restaurer toute ou partie des relations perdues,
notamment après suppression
' et réimportation d'une table.
' S'utilise conjointement avec les fonction RelationsSuppression et
RelationRestauration
'
' Rem. : La table de sauvegarde est créée dynamiquement si celle-ci
n'existe pas déjà.
' Le nom de cette table peut être paramétrée par la constante
'cTableSauvegarde'
' Si cette table existe déjà, son contenu est effacé avant la
nouvelle sauvegarde
'--------------------------------------------------------------------------­
------------------------
On Error GoTo Erreur
Dim bds As Database
Dim chp As Field
Dim rel As Relation
Dim rs As Recordset
Dim qd As QueryDef
Dim tdfNew As TableDef
Dim intNbRel As Integer
Dim intNbChp As Integer
Dim strSQL As String
'Retourne une référence à la base de données active.
Set bds = CurrentDb
'Si au aucune relations, on sort
If bds.Relations.Count = 0 Then
Exit Sub
End If
'Si la table SystemRelationsTable n'existe pas, on la crée
'si elle existe déjà, on la vide
If IsNull(DLookup("[Name]", "MSysObjects", "[Type]=1 and [Name] = '" &
cTableSauvegarde & "'")) Then
'Création de la table
Set tdfNew = bds.CreateTableDef(cTableSauvegarde)
With tdfNew
.Fields.Append .CreateField("IdRelation", dbLong)
.Fields.Append .CreateField("Name", dbText)
.Fields.Append .CreateField("Table", dbText)
.Fields.Append .CreateField("ForeignTable", dbMemo)
.Fields.Append .CreateField("Attributes", dbLong)
.Fields.Append .CreateField("IdField", dbLong)
.Fields.Append .CreateField("FieldName", dbMemo)
.Fields.Append .CreateField("ForeignFieldName", dbMemo)
End With
bds.TableDefs.Append tdfNew
Else
'Vidage de la table
strSQL = "DELETE * FROM " & cTableSauvegarde & ";"
Set qd = bds.CreateQueryDef("", strSQL)
qd.Execute
End If
'ouverture de la table
Set rs = bds.OpenRecordset(cTableSauvegarde, dbOpenTable)
'Balaye toutes les relations existantes
For Each rel In bds.Relations
intNbRel = intNbRel + 1
intNbChp = 0
'Balaye tous les champs de la relation
'For i = 0 To rel.Fields.Count - 1
For intNbChp = 0 To rel.Fields.Count - 1
'Ecriture dans la table des caractéristiques de la relation
rs.AddNew
rs!IdRelation = intNbRel
rs!name = rel.name
rs!Table = rel.Table
rs!ForeignTable = rel.ForeignTable
rs!Attributes = rel.Attributes
rs!IdField = intNbChp + 1
rs!FieldName = rel.Fields(intNbChp).name
rs!ForeignFieldName = rel.Fields(intNbChp).ForeignName
rs.Update
Next intNbChp
Next rel
Sortie:
On Error Resume Next
Set bds = Nothing
Set rel = Nothing
Set chp = Nothing
Set rs = Nothing
Set qd = Nothing
Set tdfNew = Nothing
Exit Sub
Erreur:
MsgBox err.Number & " " & err.Description
Resume Sortie
End Sub






"michel_bdx" a écrit dans le message
de news:
bonjour

quand je liste les relations entre tables j'obtiens ceci pour rel.name :
{CBD94C15-E05F-4B28-8260-097EFD3E107B}

comment obtenir la liste de toutes les relations avec tous les parametres
des relations

merci
michel


Avatar
Raymond [mvp]
Bonjour.

tu peux commencer par faire ceci pour obtenir la liste et ensuite tu verras
ce que tu peux en faire:
Dim Ix As Long
Dim Db As DAO.Database
Set Db = CurrentDb
For Ix = 0 To Db.Relations.Count - 1
Debug.Print Db.Relations(Ix).Name & ";" & Db.Relations(Ix).Table &
";" & Db.Relations(Ix).ForeignTable 'etc.......
Next Ix

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://www.mpfa.info/ pour débuter sur le forum.
Inscrivez-vous à la Newsletter TechNet.
http://www.microsoft.com/france/technet/presentation/flash/default.mspx


"michel_bdx" a écrit dans le message
de news:
| bonjour
|
| quand je liste les relations entre tables j'obtiens ceci pour rel.name :
| {CBD94C15-E05F-4B28-8260-097EFD3E107B}
|
| comment obtenir la liste de toutes les relations avec tous les parametres
| des relations
|
| merci
| michel