Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <michelbdx@discussions.microsoft.com> a écrit dans le message
de news:FD7BAC85-5A32-4B74-8393-CE0CE6ED33E4@microsoft.com...
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
'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
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
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" <michelbdx@discussions.microsoft.com> a écrit dans le message
de news: FD7BAC85-5A32-4B74-8393-CE0CE6ED33E4@microsoft.com...
| 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
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