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 :

Recordset pour dupliquer un sous-formulaire


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut Recordset pour dupliquer un sous-formulaire
    Bonjour,

    Je souhaite dupliquer un enregistrement sur un formulaire en vidant certains champs mais aussi dupliquer les enregistrements du sous-formulaire. Or quand on duplique de manière classique (bouton dupliquer) seul l'enregistrement principal est dupliqué, le sous-formulaire est mis à vide.
    J'ai regardé avec la méthode recordset mais je ne comprends pas bien 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Commande104_Click()
    Private Sub Dupliquer()
    Dim rstProtocole As DAO.Recordset, rstProtocole2 As DAO.Recordset
    Dim Db As DAO.Database, fld As DAO.Field
    Dim sql As String
    Dim id As Long
    Set Db = CurrentDb
    'Ouvre le recordset où sera prélevé le protocole
    Set rstProtocole = Db.OpenRecordset("SELECT NomProtocole FROM Protocole WHERE IdProtocole=1")
    'Verifie que le protocole 1 existe
    If rstProtocole.EOF Then Exit Sub
    'ouvre le recordset où sera ajouté le protocole
    Set rstProtocole2 = Db.OpenRecordset("protocole")
    'Duplique le protocole
    With rstProtocole2
      .AddNew
      'duplique les champs
      For Each fld In rstProtocole.Fields
        .Fields(fld.Name) = fld.Value
      Next
      id = .Fields("idprotocole")
      .Update
      'se positionne sur l'enregistrement ajouté
    End With
     
    'Duplique les lignes
    sql = "insert into LigneProtocole (IdProtocole,Libelleligne) SELECT " & _
      id & ", LibelleLigne FROM LigneProtocole WHERE idprotocole=1"
    Db.Execute sql
    End Sub
     
    End Sub
    J'ai le formulaire principal basé sur une requête liant deux tables (Interim et Contrat)
    Interim (n°Interim, Nom, DateNais, ...)
    Contrat (N°contrat, Date, Responsable, Usine, ..., n°Interim)

    Pour chaque contrat d'intérimaire, il y a un sous-formulaire avec les différentes semaines du contrat (Pointages). Ce sous-formulaire est basé sur la table Point (n°pointage, N°semaine, Mission, nbHeures, Salaire, Coef, N°contrat)

    Toutes les clés primaire sont en n°auto.

    Je veux lorsqu'un intérimaire est en fin de contrat, appuyer sur un bouton dupliquer et que cela duplique le formulaire principal (donc tous les éléments de la requête, je viderai juste le champ Date). Mais que cela duplique aussi le sous-formulaire afin que je n'ai pas à retaper les champs Mission, nbheures, salaire, coef... qui sont identiques de contrat en contrat.

    Pouvez-vous m'aider si j'ai été assez clair ?

    Merci.

    Fred

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Qu'est ce qui te pose problème? Est ce la compréhension des recordsets ou la manière de mettre en oeuvre le processus de duplication de tes données?
    Amicalement

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 27
    Points
    27
    Par défaut
    c'est la compréhension des recordsets. J'ai lu la FAQ, j'ai du mal. Je sais pas trop quoi mettre pour remplacer les champs protocole par rapport à mes tables ...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Dans ce cas, je crois qu'il est plus commode pour toi de commencer ici http://warin.developpez.com/access/dao/
    Amicalement

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/04/2008, 14h36
  2. quel événement utilisé pour lier un sous-formulaire
    Par MarLoZ dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/09/2007, 13h51
  3. Pb pour cacher un sous formulaire contenu dans un onglet
    Par sebastien_oasis dans le forum IHM
    Réponses: 2
    Dernier message: 20/07/2007, 14h20
  4. problème de compréhension recordset pour dupliquer
    Par fpecastaing dans le forum Access
    Réponses: 38
    Dernier message: 15/03/2007, 16h16
  5. Recordset et champ de sous formulaire
    Par Gwenou974 dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 14h44

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