OK je ne me souviens plus en détail comment j'avais traité un cas similaire mais j'étais passé par un booléen
Bon courage![]()
OK je ne me souviens plus en détail comment j'avais traité un cas similaire mais j'étais passé par un booléen
Bon courage![]()
Merci !Envoyé par mout1234
Désormais je planche sur la création de pseudo "assistant" pour la création des nouveaux enregistrements.![]()
Discussion très intéressante. FredG, n'hésite pas à poster le fruit de tes nouvelles réflexions ou découvertes si tu en as le temps.
Pour ce qui est de gérer des forms de saisie dépendants avec transactions, mon code a l'air au point.
Mais je suis un peu court niveau temps pour partager mon travail de tout de suite.
Donc un peu plus tard, je soumettrai mes idées à la rédaction de dvp.com pour voir si y a de quoi publier un article sur la question, sinon je reviendrai directement dans ce thread pour partager du code source et en discuter ensemble.![]()
Bonjour,
Est ce que deux objets de cette classe peuvent exister en même temps ? Auquel cas tu vas créer des workspace du même nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Class_Initialize() Set ws = DBEngine.CreateWorkspace("ws", "Admin", vbNullString) Set db = ws.OpenDatabase(CurrentDb.Name) ws.BeginTrans End Sub![]()
Ceci dit, je n'arrive pas à reproduire le même problème chez moi.
J'ai créé un formulaire avec 3 boutons : 1 qui charge les données, l'autre qui valide, un troisième qui annule.
Avec ce code et cette classe :
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 Option Compare Database Option Explicit Private ws As DAO.Workspace Private db As DAO.Database Private Sub Class_Initialize() Set ws = DBEngine.CreateWorkspace("ws", "Admin", vbNullString) Set db = ws.OpenDatabase(CurrentDb.Name) ws.BeginTrans End Sub Public Sub RollBack() ws.RollBack ws.BeginTrans End Sub Public Sub Commit() ws.CommitTrans ws.BeginTrans End Sub Public Function OpenRecordset(dataSourceName As String) As Recordset Dim qdf As DAO.QueryDef Set qdf = db.QueryDefs(dataSourceName) Set OpenRecordset = qdf.OpenRecordset(dbOpenDynaset) End FunctionEt le formulaire se comprte bien comme mes boutons lui indique.
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 Dim ws As Classe1 'Code du bouton charger Private Sub Commande3_Click() Set ws = New Classe1 Set Me.Recordset = ws.OpenRecordset("r1") End Sub 'Code du bouton valider Private Sub Commande4_Click() Me.Refresh ws.Commit Me.Dirty = False End Sub 'Code du bouton annuler Private Sub Commande5_Click() Me.Refresh ws.RollBack End Sub
Salut Tof,
Oui, aucun souci tant que tu n'ajoutes pas le Workspace à la collection Workspaces.Envoyé par Tofalu
Normal, il n'y a aucun problème. Mes résultats étaient faussés à cause d'un Refresh (ou Me.Dirty =false) placé après le Commit. Il faut bien sûr le placer avant.Envoyé par Tofalu
A part ça dans ton code le Me.Dirty=False n'est pas nécessaire étant donné que tu utilises avant le Me.Refresh (il font la même chose).
Envoyé par FRED.G
Oui, mais j'étais en phase de bidouillage![]()
Partager