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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager