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

Access Discussion :

Créer une jointure avec VBA


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 165
    Points
    165
    Par défaut Créer une jointure avec VBA
    Bonjour à tous,

    J'ai un problème, je voudrais créer une jointure entre deux tables ACCESS.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        sTableName_1 = "SYNDICATS"
        sTableKey_1 = "CLE_SYNDICAT"
     
        sTableName_n = "TOTAL_OPERATION_TIMBRE_EXERCICE"
        sTableKey_n = "LIEN_CLE_SYNDICAT"
     
     
        Dim dbs: Set dbs = CurrentDb
     
        ' Add a foreign key to the Orders table.
        dbs.Execute "ALTER TABLE " & sTableName_n _
            & " ADD CONSTRAINT " & sTableKey_n _
            & " FOREIGN KEY (" & sTableKey_1 & ")" _
            & " REFERENCES " & sTableName_1 & " (" & sTableKey_1 & ");"
    Nom : Capture.PNG
Affichages : 471
Taille : 2,6 Ko

    J'ai le message: Définition de champ "CLE_SYNDICAT" non valide dans la définition de l'index ou de la relation. Pourtant le champ existe.

    Je ne comprends pas. Mercie de votre aide

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Le champ cle_syndicat existe bien dans les deux tables ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 165
    Points
    165
    Par défaut
    Bonjour,
    Le champ "CLE_SYNDICAT" exite en clé primaire dans une table et je veux créer une contrainte référentielle avec le champ "LIEN_CLE_SYNDICAT" d'une autre table.
    ie établir une jointure 1-n par VBA.

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il faut créer le champ dans la deuxième table au préalable. La clé étrangère n'est que la contrainte d'intégrité liant deux champs existants

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 165
    Points
    165
    Par défaut
    Bonjour,
    Les deux champs existent mais ils n'ont pas le même nom. Ce qui est possible manuellement devrait pouvoir se faire par VBA ?
    Cdt.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Voici un exemple utilisant DAO

    Structure des tables :

    tblClient(id,Nom,Prenom)
    tblCommande(idcommande,idClient)

    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
    Sub CreerCleEtrangere()
    Dim oDb As DAO.Database
     
    Dim oRel As DAO.Relation
    Dim oFld As DAO.Field
     
    Set oDb = CurrentDb
    'Crée une relation entre la table tblClient et tblCommande.
    'La table principale doit être celle disposant d'un index unique
    Set oRel = oDb.CreateRelation("RelClientCommande", "tblClient", "tblCommande")
    With oRel
        'Ajoute un champ de jointure dans la relation
        'Name : nom du champ dans la table principale tblClient
        'ForeignName : nom du champ dans la table "étrangère" tblCommande
        Set oFld = .CreateField
        With oFld
            .Name = "Id"
            .ForeignName = "IdClient"
        End With
        .Fields.Append oFld
        'Mise à jour et suppression en cascade
        .Attributes = .Attributes + dbRelationDeleteCascade + dbRelationUpdateCascade
    End With
    'Ajoute la relation à la structure de la base
    oDb.Relations.Append oRel
     
    End Sub

Discussions similaires

  1. [XL-2007] Créer une liste déroulante dans une cellule avec vba
    Par destroyed dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2014, 09h19
  2. [VBA] Créer une variable avec VBA
    Par hiault dans le forum SDK
    Réponses: 3
    Dernier message: 21/09/2011, 13h55
  3. Comment créer une connexion avec une base de données MySql en VBA
    Par jinkey dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2008, 15h39
  4. [ABAP] Comment créer une requête avec jointure
    Par roadster62 dans le forum SAP
    Réponses: 1
    Dernier message: 21/02/2006, 16h04
  5. [Image]Créer une image avec JAVA 1.1
    Par burno dans le forum 2D
    Réponses: 4
    Dernier message: 11/08/2004, 09h19

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