IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Récupérer le code d'une relation entre des tables


Sujet :

VBA Access

  1. #1
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut Récupérer le code d'une relation entre des tables
    Bonne fête du travail à tous.
    J’utilise Access2000.
    Dans une table, je dois modifier le type de donnée d’un champ qui intervient dans des relations très complexes.
    Access m’invite à d’abord supprimer ces relations.
    Je devrai donc supprimer, modifier, rétablir les relations, tester et, sans doute recommencer le ce cycle jusqu’à mise au point finale.
    Je voudrais alléger ce travail fastidieux. Quelqu’un aurait-il une astuce qui me permettrait de récupérer la relation originale ?
    En quelque sorte l’équivalent ‘code’ de l’affichage graphique de la relation (comme le sql d’une requête)
    Merci déjà.

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour et bonne fête aussi.

    Lorsque tu es dans le QBE (c'est à dire l'interface graphique de la création de ta requête), tu trouveras juste sur le bord droit du bouton affichage, une liste déroulante qui te permet de passer en affichage SQL.

    Là ce trouve la syntaxe de ta requete à copier et coller dans une doc word. Tu pourras la recoller comme tu veux plus tard

    A+

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Merci d'essayer de m'aider.
    Ce que tu me proposes, c'est l'exemple que je donnais pour illustrer ma question !
    Ce que je souhaite, c'est récupérer le code de la relation entre plusieurs tables (si cela existe) qui correspond à ce que je vois lorsque je me trouve dans l'écran "relations" i.e. outils/relation ...
    Bonne journée.

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour....
    ..récupérer le code de la relation entre plusieurs tables....qui correspond à......écran "relations" i.e. outils/relation ...
    Tu peux déjà récupérer ces différentes relations sous forme de documentation (pas de code à proprement parlé....)

    Outils > Analyse > Documentation.....
    Onglet [Base de données en cours] > tu coche Relations > OK

    Tu obtiens un état comportant toutes les relations existantes entres tes tables.....

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Merci.
    Un antisèche, c'est déjà ça.
    Je ne connaissais pas (J'aurais pris un printscreen).

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Tu peux trés bien sauvegarder et restaurer des relations par programme.

    Regarde l'objet Relation de la collection Relations de l'objet DAO.Database.

    Tu parcours la collection de relations, tu enregistres les propriété de la relation dans une table puis à partir de la table tu recrées ta relation.

    A+

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Ah merci pour cette bonne nouvelle !
    Bonne soirée

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour à tous,

    marot_r
    Tu peux trés bien sauvegarder et restaurer des relations par programme.
    Regarde l'objet Relation de la collection Relations de l'objet DAO.Database.
    Tu parcours la collection de relations, tu enregistres les propriété de la relation dans une table puis à partir de la table tu recrées ta relation."
    J'ai essayé, mais je n'y arrive pas!

    Quelqu'un aurait-il un bout de code
    1° pour mémoriser les relations actuelles
    2° les supprimer
    3° les restaurer

    Merci déjà

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Vingt fois sur le métier remettez votre ouvrage, polissez-le sans cesse, et le repolissez, ...
    La piste de marot_r est la bonne !

    Voici une solution :

    J’ai une table : « Relations » qui contient les champs suivants :
    Nom, Table1, Table2, ChampTable1, ChampTable2 (texte) et Attributs (entier long)

    1ère étape Sauver la relation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub SauverRelations()
    Dim rel As DAO.relation
    DoCmd.SetWarnings False
    'purge de la table
    DoCmd.RunSQL ("DELETE Relations.Nom FROM Relations;")
    'alimentation de la table
    For Each rel In CurrentDb.Relations
       DoCmd.RunSQL ("INSERT INTO Relations ( Nom, Table1, Table2, ChampTable1, ChampTable2, Attributs )  SELECT """ & rel.Name & """ AS Expr1, """ & rel.Table & """ AS Expr2, """ & rel.ForeignTable & """ AS Expr3, """ & rel.Fields(0).Name & """ AS Expr4, """ & rel.Fields(0).ForeignName & """ AS Expr5, " & rel.Attributes & " AS Expr6;")
    Next rel
    DoCmd.SetWarnings True
    End Sub
    2ème étape Supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function SupprimerRelations()
    Dim rel As relation
    For Each rel In CurrentDb.Relations
       CurrentDb.Relations.Delete rel.Name
    Next rel
    End Function
    3ème étape Restaurer
    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
    Public Sub RestaurerRelations()
    Dim rec As DAO.Recordset
    Dim rel As DAO.relation
    Dim chp As Field
    Set rec = CurrentDb.OpenRecordset("Relations")
    Do Until rec.EOF
      Set rel = CurrentDb.CreateRelation(rec("nom"), rec("table1"), rec("table2"))
      rel.Attributes = rec("Attributs")
      Set chp = rel.CreateField(rec("ChampTable1"))
      chp.ForeignName = rec("ChampTable2")
      rel.Fields.Append chp
      CurrentDb.Relations.Append rel
      rec.MoveNext
    Loop
    End Sub
    Elémentaire, n'est-il pas ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Relations entre des tables sans clef
    Par ouamtax dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 22/09/2008, 23h23
  2. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 20h20
  3. problème de relation entre des tables
    Par dodie84 dans le forum Modélisation
    Réponses: 2
    Dernier message: 20/05/2008, 16h07
  4. Réponses: 6
    Dernier message: 23/12/2007, 14h06
  5. Réponses: 9
    Dernier message: 24/04/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo