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 55 56 57 58 59 60 61 62
| Private Sub Commande78_Click()
Dim I As Integer ' Représente les 12 mois, voir ci-dessous For-To-Next
Dim Z As Integer ' Représente l'année (voir ci-dessous divers possibilités)
Dim W As Integer ' Représente le numéro de production qui va venir se mettre par défaut
Dim X As Integer ' Représente les 2 boucles à réaliser pour initialiser les deux années (Z & Z+1)
Dim sql As String ' Variable dans laquelle on inscrit un code SQL variable selon I & Z
Dim Ctrl_f As String ' Variable recevant la composante des champs W et Z
Dim Ctrl_n As String ' Variable recevant le "num production" correspondant à W
Dim Ctrl_a As String ' Variable recevant l'année en fonction de Z et contenu de la table
Dim Ctrl_t As String ' Variable recevant le composé de Ctrl_n & Ctrl_a
Z = InputBox("Saisir l'année ci-dessous", "Démo", Year(Date)) ' Interaction avec l'utilisateur (utile pour
' situation de fin d'année)
' Ici on contrôle si l'année "Z" est inscrite dans la table "Années" et si non, on l'ajoute
If IsNull(DLookup("[Num année]", "Années", "[Num année] = " & Z)) Then
DoCmd.RunSQL "INSERT INTO Années ( [Num année] ) SELECT " & Z & " AS Year"
End If
' Ici on contrôle si l'année "Z + 1" est inscrite dans la table "Années" et si non, on l'ajoute
If IsNull(DLookup("[Num année]", "Années", "[Num année] = " & Z + 1)) Then
DoCmd.RunSQL "INSERT INTO Années ( [Num année] ) SELECT " & Z + 1 & " AS Year"
End If
W = Me.NUM_PRODUCTION.Value
' Création d'une année par N° de production
For X = 1 To 2
Ctrl_f = IIf(X = 1, W & Z, W & Z + 1) ' Ici, on compose un "string" avec "Me.NUM_PRODUCTION.Value" & le "Z" de l'InputBox
Ctrl_n = IIf(Not IsNull(DLookup("annee", "stock premier aout", "[num production] =" & W)), W, "_")
Ctrl_a = IIf(Not IsNull(DLookup("[num production]", "stock premier aout", "annee =" & Z)), Z, "_")
Ctrl_t = Ctrl_n & Ctrl_a ' Ici, on compose un autre "string" avec les données de la table ("[num production]" & "annee")
' Dès lors, il suffit de comparer les deux "strings" créés pour savoir s'il faut ou pas créer les 12 mois pour le N° de production
If Ctrl_f = Ctrl_t And X = 1 Then GoTo X2 ' Si l'année est déjà créée, on passe à la seconde année
If Ctrl_f = Ctrl_t And X = 2 Then GoTo Ouverture ' Si l'année est déjà créée, on ouvre directement le formulaire
' ****************** Fin de la section à éventuellement supprimer
For I = 1 To 12 ' I prend les 12 valeurs des 12 mois
Debug.Print I & ", " & Z & "," & W
If X = 1 Then
sql = "INSERT INTO [stock premier aout] ( mois, annee, [num production] ) " & _
"VALUES ( " & I & ", " & Z & "," & W & ")"
Else
sql = "INSERT INTO [stock premier aout] ( mois, annee, [num production] ) " & _
"VALUES ( " & I & ", " & Z + 1 & "," & W & ")"
End If
DoCmd.RunSQL sql
Next I
X2:
Next X
Ouverture:
DoCmd.OpenForm "PRODUCTION1"
End Sub |
Partager