Bonjour à tous,
Je possède un sous-formulaire (basé sur la table "T_Commande") comprenant entre autre les champs "NoFacture", "NoArticle", et "Quantité". Je souhaiterai faire en sorte que si l'utilisateur choisit un NoArticle déjà existant pour ce NoFacture, la Quantité se cumule automatiquement, et qu'aucune nouvelle ligne ne soit créée.
Pour cela j'ai tenté le code suivant dans Quantité_AfterUpdate :
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 Dim db As DAO.Database Dim rst As DAO.RecordSet Set db = CurrentDb() Set rst = db.OpenRecordSet("SELECT * FROM [T_Commande] WHERE [NoFacture] = ' " & Me.NoFacture & " ' AND NoArticle = ' " Me.LstArticles.Column(0) & " ' ") '(le numéro d'article étant contenu dans une Combobox) 'cumule les quantités s'il existe un premier enregistrement, ne change rien sinon rst.MoveFirst If Not rst.NoMatch Then rst.Edit rst ("Quantité") = rst ("Quantité") + Me.Quantité.Value rst.Update End If 'efface le deuxième enregistrement s'il existe (c'est-à-dire s'il y en avait déjà un premier pour ce NoArticle et NoFacture) If Not rst.EOF Then rst.MoveNext rst.Delete End If rst.Close Set rst = Nothing Set db = Nothing
Il cumule bien les quantités, mais rencontre un problème sur le delete : "aucun enregistrement en cours". Je pensais que le test sur EOF suffirait, mais visiblement non.
J'ai essayé différentes petites choses, comme de placer le MoveNext avant le test, ou alors les FindFirst, NoMatch, et autres joyeux "Not IsNull (rst)", mais rien à faire je suis bloquée...
Une petite aide, siouplait ?
Partager