Bonsoir,

Encore moi Je 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 :

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
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.

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.