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 :
J'ai le formulaire principal basé sur une requête liant deux tables (Interim et Contrat)
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
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
Partager