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 :

Nouvel enregistrement en gardant des informations


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut Nouvel enregistrement en gardant des informations
    Bonjour à tous,

    Il m'a été demandé de réaliser un plan de maintenance mais j'ai des difficultés pour effectuer certaines opérations :

    J'ai une requête qui vérifie que la date d'une opération de maintenance est inférieur à sa date d’exécution + la récurrence le date (ex : nettoyer les mandrins de la machine tous les jours donc (date() >= date_exécution + récurrence), jusque là tout va bien ma requête affiche bien les enregistrement souhaité.

    C'est la que ça ce complique, j'aimerais créer un formulaire qui reprend les informations de la dernière exécution (date, personne, remarque) et de pouvoir créer en même temps un nouvel enregistrement dans lequel on inscrit les nouvelles valeurs mais il devrait garder la même référence (Réf_historique) que l'ancien, cette variable correspond au type d'opération à faire (ex : nettoyage des mandrins) mais je n'arrive pas à faire celà. Soit ça me crée un tout nouvel enregistrement et ne garde rien de l'ancien soit ça modifie l'ancien sans créer de nouvel enregistrement.

    Je vous montre un screen de mes relations pour vous aider un peu plus à comprendre la situation, désolé si je ne suis pas très clair dans mon explication, n'hésitez pas à me demandé des détails si vous ne parvenez pas à comprendre ma situation.

    Nom : relations.png
Affichages : 238
Taille : 11,4 Ko
      0  0

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Le mieux c'est de le faire en VBA, sur l'événement avant insertion de ton formulaire et en utilisant les fonctions de domaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim id As Long
     
    id = DMax("Id_Historique", "Historique") ' retient le dernier id : id max
     
    Me.Date_Execution = DLookup("Date_Execution", "Historique", "Id_historique=" & id) ' mets à jour la date d'exécution avec la date du dernier id.
    Me.Personne = DLookup("Personne", "Historique", "Id_historique=" & id)
    Me.Remarque = DLookup("Remarque", "Historique", "Id_historique=" & id)
     
    End Sub
    A tester...

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci pour ta réponse !

    Cela a marché la première fois mais après impossible de le refaire fonctionner ça modifie celui qui est affiché à la place de créer un nouveau.
      0  0

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Tu as bien mis le code sur l'événement avant insertion ?

    Peux-tu poster ta base sans les données pour tester ?

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai bien mis le code dans avant insertion, je peux poster le fichier complet il n'y a rien de confidentiel et il n'est pas encore trop lourd pour l'instant.

    https://mega.nz/#!GxslkYLa!V_tZHtAhG...-XRdpX9fXmEQYk
      0  0

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    N'oublies pas que tu as mis un critère Date() > =date_exécution + récurrence dans la requête source de ton formulaire, ce qui filtre tes données, mais si tu regardes dans la table historique tu verras que tes saisies apparaissent bien.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Je n'arrive vraiment pas à le faire fonctionner, cela ne fait que modifier l'enregistrement actuel
      0  0

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Le code sur l'événement avant insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim id As Long
     
    id = DMax("Id_Historique", "Historique") ' retient le dernier id : id max
     
    Me.Date_exécution = DLookup("Date_Exécution", "Historique", "Id_historique=" & id) ' mets à jour la date d'exécution avec la date du dernier id.
    Me.Personne = DLookup("Personne", "Historique", "Id_historique=" & id)
    Me.Remarque = DLookup("Remarque", "Historique", "Id_historique=" & id)
     
    End Sub
    Le code sur l'événement clic du bouton ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CmdAjouter_Click()
    DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
     
    End Sub
    Et la base jointe allégée (j'ai supprimé les images).

    Cdlt,
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci beaucoup pour ton aide mais je n'arrive toujours pas à le faire fonctionner chez moi.

    Quand je modifie la date, la personne et la remarque puis que j'appuie sur le bouton, cela continue à modifier l'enregistrement actuel plutôt que de créer un nouvel enregistrement. J'ai essayé également essayé d'appuyer sur le bouton avant de remplir le formulaire mais là aucune information n'est gardée.

    Voila ce qu'il se passe lorsque je modifie un enregistrement : Nom : Sans titre.png
Affichages : 190
Taille : 8,0 Ko
      0  0

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Il faut d'abord appuyer sur le bouton ajouter, puis modifier les champs du formulaire.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Voici l'erreur que ça me donne lorsque je fais comme cela : Nom : Sans titre.png
Affichages : 217
Taille : 18,5 Ko
      0  0

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Pouvez-vous me dire se qu'il affiche si vous cliquez sur débogage ?

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Private Sub CmdAjouter_Click()
    DoCmd.GoToRecord acDataForm, Me.Name, acNewRec

    End Sub

    C'est la ligne en gras qui surlignée,
    L'erreur survient quand j'appuie une seconde fois sur le bouton après avoir rempli les informations sur le formulaires. Et je remarque que le champ "Historique.Ref_historique" reste à 0 lorsque l'on appuie sur le bouton.
      0  0

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Rebonjour,

    le champ RefHistorique de la table Historique ne peut pas être à 0 car cette valeur d'index n'est pas présente dans la table Maitre_Historique :

    Conformément à la relation un à plusieurs:

    Maitre_Historique(RefHistorique) 1-n Historique(RefHistorique)

    C'est pour cette raison qu'il vous empêche de passer à un nouvel enregistrement, car la saisie de 0 dans le champ RefHistorique de la table Historique n'est pas possible.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Mais il faudrait qu'il garde le même numéro que celui qu'on modifie, ce numéro correspond à la manipulation effectuée et donc c'est grâce à lui qu'on sait qu'elle manipulation à été effectuée
      0  0

  16. #16
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Le même numéro ça d'accord, mais pas égal à 0, dans ce cas il faut ajouter une ligne au code avant insertion.

    Et il faut aussi renommer le champ Maitre_Historique.Ref_Historique dans la requête pour distinguer les 2 ref(s) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim id As Long
     
    id = DMax("Id_Historique", "Historique") ' retient le dernier id : id max
     
    Me.Date_exécution = DLookup("Date_Exécution", "Historique", "Id_historique=" & id) ' mets à jour la date d'exécution avec la date du dernier id.
    Me.Ref_historique = DLookup("Ref_historique", "Historique", "Id_historique=" & id)
    Me.Personne = DLookup("Personne", "Historique", "Id_historique=" & id)
    Me.Remarque = DLookup("Remarque", "Historique", "Id_historique=" & id)
     
    End Sub
    Cdlt,
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup cela semble fonctionné mais j'ai maintenant un autre soucis, dans ma requête "A faire", je cherche dans historique les enregistrement dont la date d'aujourd'hui est supérieur à la date d'exécution + récurrence, mais il faudrait que ce ça compare uniquement le dernier de chaque "réf_historique". Car avec le formulaire cela va me créer un enregistrement ayant le même "réf_historique" jusque là c'est parfait mais la requête va continuer à afficher celui déja effectué le jour avant par exemple. J'espère avoir été assez clair, n'hésite pas à me demandé plus d’éclaircissement si tu ne comprends pas le soucis et merci beaucoup pour ton aide en tout cas !
      0  0

  18. #18
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Essaies de mettre le critère suivant sous le champ Id_Historique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaxDom("id_historique";"Historique";"Ref_Historique=" & [Historique].[Ref_historique])
    Ce qui renvoie le dernier id_historique dans la table Historique pour des enregistrements qui ont la même Ref_Historique.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Bonjour, cela marche à la perfection merci !
    Un dernier petit soucis et je pense qu'après ce sera bon, après avoir rentré les informations du nouvel enregistrement la requête ne s'actualise pas, je dois aller cliquer manuellement sur "actualiser tout" dans la requête "A faire" pour avoir accès au nouvel enregistrement sinon je recrée toujours un enregistrement ayant le même "Ref_historique".
      0  0

  20. #20
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Rebonjour,

    Dans le code sur l'événement clic du bouton ajouter, il faudrait actualiser le formulaire avant l'ajout avec la méthode Requery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CmdAjouter_Click()
    Me.Requery
    DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
     
    End Sub
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON
      0  0

Discussions similaires

  1. Réponses: 13
    Dernier message: 25/10/2009, 23h11
  2. Réponses: 3
    Dernier message: 07/03/2008, 23h13
  3. Réponses: 2
    Dernier message: 03/12/2007, 21h52
  4. Réponses: 4
    Dernier message: 08/06/2006, 23h04
  5. Réponses: 9
    Dernier message: 10/01/2006, 16h27

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