IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

données déjà saisie dans un sous-formulaire


Sujet :

IHM

  1. #21
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    ... mais tu devras importer l'année (Z) dans ton formulaire "PRODUCTION1" ainsi que le "NUM PRODUCTION" (tu peux créer deux contrôles invisibles pour cela) puis, tu choisis ces deux contrôles comme champs Père et fils entre ton formulaire et ton sous-formulaire.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  2. #22
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Bonjour,
    Merci j'ai réussi à faire ce que je voulais avec les champs père et fils.
    Je me suis aperçue qu'il était préférable que le sous formulaire affiche également les mois de l'année d'après en même temps que celle par exemple de 2008. (un peu long à expliquer pourquoi...).
    J'ai donc voulu utiliser for...to de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Z = InputBox("Saisir l'année ci-dessous", "Démo", Year(Date)) To Z = Z + 1
    et à la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     For I = 1 To 12 ' I prend les 12 valeurs des 12 mois
            Debug.Print I & ", " & Z & "," & W
            sql = "INSERT INTO [stock premier aout] ( mois, annee, [num production] ) VALUES ( " & I & ", " & Z & "," & W & ")"
            DoCmd.RunSQL sql
        Next I
     
        Next Z
     
    Ouverture:
        DoCmd.OpenForm "PRODUCTION1", acNormal
     
     
    End Sub
    Mais cela ne fonctionne pas, auriez-vous une idée de mon erreur??

    Merci
    élodie

  3. #23
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    la fonction next to est-elle appropriée dan ma situation?
    Merci

  4. #24
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Bonjour Elodie !

    Je rentre de quelques jours à l'étranger... d'où mes "non-réponses".

    Est-ce que ton problème est encore d'actualité ?

    Bernard.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  5. #25
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Points : 35
    Points
    35
    Par défaut
    Bonjour! Hélas oui, mon problème est toujours d'actualité!!!

  6. #26
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Ce n'est pas difficile à faire !

    Mais j'ai besoin de tout le code qui est derrière ton bouton pour le modifier... tu verras, cela coule de source et c'est aisément compréhensible !
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  7. #27
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Elodie,

    En fonction de ce que je possède (tu devras certainement y faire des retouches...), voici un code qui :
    1. Vérifie que l'année saisie existe dans la table année et l'ajoute si besoin
    2. Idem avec l'année saisie + 1
    3. Vérifie que la composante Z - NUM PRODUCTION existe déjà ou pas
    4. Idem avec Z + 1
    5. Compose ou pas l'année ou les années pour ce numéro de production.

    A toi maintenant de trouver comment ouvrir ton formulaire "PRODUCTION1" de façon qu'il affiche le bon N° de production et par là même, les bonnes données dans le sous-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
    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
    C'est un peu plus compliqué mais toujours autant logique.

    N.B. J'ai écrit cela un peu rapidement, il y a certainement une façon de procéder plus "clean" mais... ce sera dans le prochain épisode

    A+
    Bernard.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/07/2009, 11h27
  2. Réponses: 1
    Dernier message: 05/04/2008, 17h57
  3. Réponses: 3
    Dernier message: 20/04/2007, 16h37
  4. une saisie dans un sous formulaire
    Par T'chab dans le forum Access
    Réponses: 3
    Dernier message: 05/05/2006, 09h01
  5. Verification de saisie dans un sous-formulaire
    Par OBIWAN64 dans le forum Access
    Réponses: 4
    Dernier message: 15/03/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo