Bonsoir,
J'utilise une base de donnée Access pour gérer un stock. J'ai un tableau de grilles de crible et un tableau de d'intervention appeler "tbMouvementGrille" avec un numéro de grille, une date de début et une date de fin (je lui affecte par défaut 31/12/9999 comme valeur pour un état en cour) comme champs. J'ai un formulaire qui me permet d'enregistrer les interventions sur mes grilles. Pour ce faire, j'ai un premier formulaire dans lequel j'ai une liste de toutes mes grilles en service et un deuxième formulaire qui s'affiche une fois la grille sélectionnée pour créer un nouvelle état (en service, stock, HS, etc.). Lorsque je choisi une grille, je souhaite affecter une nouvelle date de fin à l'enregistrement précédent de la grille, c'est à dire passer de 31/12/9999 à la date de l'intervention et créer un nouvel enregistrement. J'ai le code suivant sur mon premier formulaire :
Et le code suivant sur mon deuxième formulaire :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Private Sub Commande5_Click() Dim idInter As Long Dim lng As Long Dim DateInter As Date 'Message d'erreur s'il n'y a pas de date If IsNull(Me!Texte2) = True Then MsgBox "Vous n'avez pas entré de date d'intervention", vbOKOnly, "Attention, date manquante !" End If ' on verifie que l'on a bien selectionné une liste DateInter = Me!Texte2 If IsNull(Liste0.Column(0)) Then MsgBox "Vous n'avez pas choisi de grille", vbOKOnly, "Attention, date manquante !" Exit Sub Else idInter = Liste0.Column(0) End If 'On enregistre la date de l'intervention et le numéro de l'intervention Call MAJ_MouvementPrecedent(idInter, DateInter) DoCmd.OpenForm "MouvementGrille", acNormal, , , , , idInter End Sub Private Sub Commande6_Click() DoCmd.Close End Sub Private Sub MAJ_MouvementPrecedent(prmNumMouvement As Long, prmDateMouvement As Date) Dim numMouvementPrecedent As Variant numMouvementPrecedent = prmNumMouvement If Not (IsNull(numMouvementPrecedent)) Then 'Il y a un mouvement précédent Dim db As dao.Database: Set db = CurrentDb Dim r As dao.Recordset: Set r = db.OpenRecordset("tbMouvementGrille", dbOpenDynaset) If Not r.NoMatch Then r.Edit r![DateFinEtat] = prmDateMouvement r.Update Else Error (5): 'Cas normalement impossible car on vient de le trouver End If r.Close: Set r = Nothing: 'Ferme le recordset et libère la mémoire utilisée. db.Close: Set db = Nothing: 'Ferme la database et libère la mémoire utilisée. End If End Sub
Lorsque je sélectionne un grille, j'ai le message d'erreur suivant qui s'affiche : "Erreur d'exécution '-2147352567 (80020009)': Impossible d'attribuer une valeur à cette objet. "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Form_Open(Cancel As Integer) If Me.OpenArgs = "GotoNew" Then DoCmd.GoToRecord , , acNewRec Else If Not IsNull(Me.OpenArgs) And Me.OpenArgs <> "GotoNew" Then Me.idPrecedenteInterv = Me.OpenArgs Else 'Ne rien faire ou faire autre chose d'utile End If End If End Sub
avec le débogage qui me surligne la ligne suivante dans le code du deuxième formulaire mais j'arrive pas trop à comprendre pourquoi.
Auriez-vous une idée d'ou pourrai venir le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.idPrecedenteInterv = Me.OpenArgs
Merci d'avance
Sébastien
Partager