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 :

parcourir les résultats d'une requête pour créer des enr dans une autre table [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut parcourir les résultats d'une requête pour créer des enr dans une autre table
    Bonjour,

    Mon but est d'ajouter des enregistrements dans une table à partir des résultats d'une requête.

    La requête R_Article retourne la liste des articles concernés. (clé : ID_Article)
    La table TableEnseigneMois , dans laquelle, la clé est triple: ID_Article, ID_Enseigne et ID_Mois.
    Bien entendu, R_Article a tous les champs utiles de TableMois.

    Dans TableEnseigneMois , chaque article n'existe pas ou existe pour les 12 mois (donc 12 enregistrements).

    Pour chaque article de R_Article, j'aimerais ajouter les 12 enregistrements dans TableEnseigneMois s'il n'y a pas 12 enregistrements pour cet article et pour cette enseigne dans TableEnseigneMois.

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : novembre 2002
    Messages : 881
    Points : 1 102
    Points
    1 102
    Par défaut
    bonjour
    Essai ça comme ceci pour voir:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Function AjoutEnreg()
        Dim StrSQL As String, Rst As DAO.Recordset, enseigneN As Long
        enseigneN = NouveauID_Enseigne ' Appel function pour retrouver le dernier enreg de TableEnseigneMois
        'Tu mettras dans StrSQL le code sql de la requete R_Article, comme ceci:
        StrSQL = "SELECT ..... FROM...."     'Le but etant de creer un recordset
        Set Rst = CurrentDb.OpenRecordset(StrSQL)
        If Rst.RecordCount = 0 Then
            MsgBox "la requete R_Article ne retourne aucun enregistrement.", vbOKOnly, "Mon appli"
            Else
                Rst.MoveLast
                Rst.MoveFirst
                Dim StrSQL1 As String, Rst1 As DAO.Recordset, n As Byte
                Do Until Rst.EOF    'On parcourt les enreg de R_Article
                    For n = 1 To 12 ' Les 12 mois de l'annee
                    StrSQL1 = "SELECT TableEnseigneMois.* FROM TableEnseigneMois " & _
                    "WHERE(((TableEnseigneMois.ID_Article)=" & Rst![ID_Article] & ") AND ((TableEnseigneMois.ID_Mois)=" & n & "));"
                    Set Rst1 = CurrentDb.OpenRecordset(StrSQL1)
                    If Rst1.RecordCount = 0 Then
                        Rst1.AddNew
                        Rst1![ID_Article] = Rst![ID_Article]
                        Rst1![ID_Mois] = Rst![ID_Mois]
                        Rst1![ID_Enseigne] = enseigneN + 1
                        Rst1.Update
                        Else
                          ' Tu pourras ajouter du code ici pour faire autre chose
                    End If
                Next n
                Rst1.Close
                Set Rst1 = Nothing
                Rst.MoveNext
                Loop
                MsgBox "Opération terminée avec succès!", vbInformation, "Mon appli"
        End If
    End Function
    Function NouveauID_Enseigne() As Long
        Dim StrSQL0 As String, Rst0 As DAO.Recordset
        StrSQL0 = "SELECT TOP 1 TableEnseigneMois.* FROM TableEnseigneMois ORDER BY ID_Enseigne DESC;"
        Set Rst0 = CurrentDb.OpenRecordset(StrSQL0)
        If Rst0.RecordCount = 0 Then
            NouveauID_Enseigne = 0
            Rst0.Close
            Set Rst0 = Nothing
            Else
                NouveauID_Enseigne = Rst0![ID_Enseigne]
        End If
        Rst0.Close
        Set Rst0 = Nothing
    End Function
    J'espere t'avoir compris.
    @+

  3. #3
    Membre habitué
    Inscrit en
    juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 268
    Points : 130
    Points
    130
    Par défaut
    Impeccable, merci Keita!

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

Discussions similaires

  1. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 11h01
  2. [AC-2007] pb pour utiliser des options dans une requête
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/07/2010, 22h24
  3. créer des séries dans une requête
    Par raiamanu dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/04/2008, 08h40
  4. Requête pour supprimer des doublons dans une table
    Par nomade333 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2008, 13h48
  5. Réponses: 4
    Dernier message: 09/01/2008, 21h10

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