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 :

Changer les valeur d'une colonne du sous formulaire à partir du Formulaire [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut Changer les valeur d'une colonne du sous formulaire à partir du Formulaire
    Bonjour au Forum,

    Pour les besoins d'une table de gestion de contrat de personnel, je dois faire un formulaire contenant toutes les missions à validé par le manager et qu'il puisse tous les valider en un click et que la date de validation se mette à jour.
    J'ai donc créé un formulaire sur lequel j'ai placé une case à cocher (comme dans la table missions), une textbox avec une date et un Sous formulaire base sur la table missions.
    Sur l'évènement après mise à jour de la case à coché, j'ai place un code comme sur celui de la textbox.
    Mais il me renvoi l'erreur : Access can't find the field 'l' referred to in your expression.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ChkValidation_SSDRIG_AfterUpdate()
    Forms![F_Validation_SSDRIG].[Forms]![S/F_Validation_SSDRIG]![1er_prolong] = Me![ChkValidation_SSDRIG]
    End Sub
     
    Private Sub Date_Validation_SSDRIG_AfterUpdate()
    Forms![F_Validation_SSDRIG].[Forms]![S/F_Validation_SSDRIG]![Date_1er_Prolong] = Me![Date_Validation_SSDRIG]
    End Sub
    Si quelqu'un peux m'aider à trouver la solution. Je me lance dans le VBA access et je suis loin d'avoir les bon reflex de programation.

    Cdt

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    Tu as une erreur dans la référence à ton sous-formulaire. Je te conseille ce tuto pour savoir tout sur les appels des sous-formulaires.
    Tu devrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![F_Validation_SSDRIG].[S/F_Validation_SSDRIG].Form![Date_1er_Prolong] = Me![Date_Validation_SSDRIG]
    ou en profitant de l'intellesense et en utilisant le Me, on devrait avoir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.[S/F_Validation_SSDRIG].Form![Date_1er_Prolong] = Me![Date_Validation_SSDRIG]
    Question : Pourquoi ne pas regrouper les deux assignations de valeurs dans un seul module et l'appeler à partir des 2 évènements des 2 contrôles.

    Conseils :
    1- Enlèves les caractères extra dans tes noms d'objets (tables, champs, contrôles, formulaires, ...). N'utilise que les caractères alphanumériques et l'underscore "_".
    2- Quand tu postes tes codes sur le forum, mets les dans les balises pour que cela ne soit pas difficile à lire : Tu le sélectionnes et cliques sur #


    Cordialement,

    EDIT (en approfondissant ce que tu veux faire) : A priori, ton code ne va mettre à jour qu'une ligne de ton sous-formulaire. Pour tout mettre à jour, il faudrait utiliser une requête mise à jour (UPDATE) ou parcourir les données du sous-formulaire avec un Recordset.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut
    Bonsoir,
    Merci, je vais creuser dans les deux directions et voir ce qui va le mieux.
    Cdt.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    J'ai creusé un peu la question et j'ai l'impression que la meilleure solution serait le recordset. Problème, comment appeler les enregistrements du sous formulaire à partir d'un bouton.
    J'ai essayé un code mais il ne fonctionne pas, car j'ai l'impression qu'il fait appel à une table et que j'y met un 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
    Private Sub Command7_Click()
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("Me.[S/F_Validation_SSDRIG].Form![1er_prolong]", dbOpenTable)
    While Not oRst.EOF
      'Passe en mode modification
      oRst.Edit
      'Affecte la date et la case à coché
      oRst.Fields("[1er_prolong]").Value = Yes
      oRst.Fields("[Date_1er_Prolong]").Value = Me![Date_Validation_SSDRIG]
      'Met à Jour
      oRst.Update
      'Passe au suivant
      oRst.MoveNext
    Wend
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
    End Sub
    Merci pour l'aide apporté, je decouvre le recordset.

    Cdt.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonsoir,

    Tu n'as pas besoin d'ouvrir un Recordset à partir d'une table.
    Un formulaire étant un jeu de données possède aussi la propriété RecordSet, donc on peut utiliser le Recordset du sous-formulaire.
    Ce qui donnerait un code du genre :
    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
    Private Sub Command7_Click()
    With Me.[S/F_Validation_SSDRIG].Form.Recordset
        While Not .EOF
          'Passe en mode modification
          .Edit
          'Affecte la date et la case à coché
          ![1er_prolong] = Yes
          ![Date_1er_Prolong] = Me![Date_Validation_SSDRIG]
          'Met à Jour
          .Update
          'Passe au suivant
          .MoveNext
        Wend
    End With
    End Sub
    J'utilise le With pour éviter la répétition de l'écriture du Recordset.

    Cordialement,

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur process
    Inscrit en
    Novembre 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur process
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2014
    Messages : 111
    Points : 54
    Points
    54
    Par défaut
    Bonsoir,
    Un grand merci, ca fonctionne.
    Pour ma comprehension, je vais encore piocher ce sujet.

    Cdt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DataGridView: changer les valeurs d'une colonne
    Par Razor82 dans le forum VB.NET
    Réponses: 9
    Dernier message: 18/03/2011, 17h27
  2. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  3. Toutes les valeurs d'une colonne - Tableau à 2D
    Par Bridou dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 16h05
  4. requete pour compter les valeurs ds une colonne
    Par smariteau dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/02/2006, 17h37
  5. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15

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