Bonsoir,
Encore moiJe pêne un peu avec DAO
J'ai cru comprendre qu'en clonant un Recordset, çà faisait une copie et que toutes modifications dans le clone ne modifie pas le Recordset initial.
Voici mon code qui pose problème :
J'ai un formulaire principal indépendant qui a 2 cadres avec chacun le même sous-formulaire. Le sous-formulaire de cadre 1 est en lecture seule et est liée à la table. Le sous-formulaire de cadre 2 est en écriture et n'est pas liée à la table.
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 Dim oDb As DAO.Database Dim oRst As DAO.Recordset Dim sSQL As String Dim Source As String Set oDb = CurrentDb Source = Forms(FormPrincipalNomSTRp).Form(CadreDetailNomSTRp).Form.RecordSource If Left(Source, 6) = "SELECT" Then 'la source est une requête sSQL = "SELECT * FROM (" & Source & ") WHERE " & FormEnCoursChampcleSTRp & "= " & Chr(34) & Forms(FormPrincipalNomSTRp).Form(CadreDetailNomSTRp).Controls(FormEnCoursChampcleSTRp).Value & Chr(34) & ";" Else 'la source est une table sSQL = "SELECT * FROM " & Source & " WHERE " & FormEnCoursChampcleSTRp & "= " & Chr(34) & Forms(FormPrincipalNomSTRp).Form(CadreDetailNomSTRp).Controls(FormEnCoursChampcleSTRp).Value & Chr(34) & ";" End If Set oRst = oDb.OpenRecordset(sSQL) Set oRecordsetRSTp = oRst.Clone Set Forms(FormPrincipalNomSTRp).Form(CadreSaisieNomSTRp).Form.Recordset = oRst.Clone
Le but est :
- de copier dans le cadre 2 les données de l'enregistrement en cours (et uniquement celui-là) du cadre 1.
- Je modifie manuellement les données via le sous-formulaire du cadre 2.
- Puis lorsque je valide via un clic sur un bouton, les données du cadre 2 sont copiées sur le bon enregistrement du cadre 1.
Problème :
- Lorsque je saisie dans le sous-formulaire du cadre 2, les données du cadre 1 sont également modifiées en temps réel. Et çà, je ne le souhaite pas.
Je n'ai pas dû comprendre le principe du DAO. Auriez vous une piste à mon problème ci-dessus SVP ?
Bonne fin de week-end.![]()
Partager