Bonjour,
Je bloque sur un UPDATE assez complexe pour moi, j'essaye mais je n'aboutis pas.
Une table T_CdeMagDetail stocke différents commandes d'un ou plusieurs article avec notamment les champs Article, Taille, QuCde pour la quantité commandée, QuIN1 pour la quantité déjà reçue, Suivi pour l’état de la commande (Complet, Partiel, Commandé), Livraison pour la quantité livrée et réceptionnée et enfin Souffrance pour le solde à recevoir (champ calculé QuCDe - QuIN1).
Un formulaire permettant le choix d'un numéro commande rempli un sous formulaire détaillant la T_CdeMagDetail pour ce N° de Commande rappelé sur le formulaire par une zone de texte indépendante (numcom).
Lors de la modification manuelle de la valeur de livraison-réception (champ Livraison) d'un ou plusieurs articles et d'un click de validation, la QuIN1 devrait se voir ajouter la valeur de la livraison, modifier le Suivi (si QuIN1 = 0 alors "Commandé", si QuCde = QuIN1 alors "Complet", Si QuCde > QuIn1 alors "Partiel".
Ensuite l'idéal avant de remettre à zéro les valeurs de Livraison, c'est de faire un UPDATE dans une Table T_Stock modifiant son champ QUANTITE en lui ajoutant aussi la valeur de livraison à condition que les champs Article et Taille de la commande provenant de la T_CdeMagDetail correspondent aux champs Article et Taille de la T_Stock.
Pour un débutant comme moi, cela fait pas mal de chose à gérer sur un seul SUB.
j'ai essayer un code ci-dessous, celui-ci fonctionne pour modification des QuIN1, mais me pose des soucis pour le reste.
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
53
54 Private Sub ConfirmerSuivi_Click() 'Mise à jour de toute les quantités reçues (QuIn1) en rapport à la livraison (Livraison) CurrentDb.Execute "UPDATE T_CdeMagDetail SET T_CdeMagDetail.QuIN1 = [QuIN1] + [Livraison] WHERE NCde='" & numcom & "'", dbFailOnError Me.Requery 'Traitement du champ (Suivi) de la commande après mise à jour des quantités déjà reçues (QuIN1) Dim base As Database: Dim ligne As Recordset Dim Rst As String: Dim Rst2 As String: Dim critere As String Dim livre As Integer livre = Livraison.Value Set base = Application.CurrentDb Set ligne = base.OpenRecordset("SELECT * FROM T_CdeMagDetail WHERE NCde='" & numcom & "' ", dbOpenDynaset) ligne.MoveFirst 'boucle afin de traiter tout enregistrement concernant la même commande (numcom) Do 'Condition afin de donner la valeur adéquate au champ (Suivi) If QuIN1 = QuCde Then critere = "Complet" ElseIf QuIN1 = 0 Then critere = "Commandé" Else: critere = "Partiel" End If 'Mise à jour du champ (Suivi)et remise à zéro du champ (Livraison) Rst = "UPDATE T_CdeMagDetail SET T_CdeMagDetail.Suivi = '" & critere & "',T_CdeMagDetail.Livraison = 0 WHERE NCde='" & numcom & "'" base.Execute Rst 'Mise à jour de la table T_Stock Rst2 = "UPDATE T_Stock SET T_Stock.QUANTITE = [QUANTITE] + int(livre) WHERE T_Stock.Article='" & Article.Value & "' and T_Stock.Taille = '" & Taille.Value & "'" base.Execute Rst2 ligne.MoveNext Loop Until ligne.EOF Livraison.Value = 0 'Vider la mémoire ligne.Close base.Close Set ligne = Nothing Set base = Nothing End Sub
Partager