1. #1
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut Mise à jour de la table avec requete mise à jour à partir d'un sous-formulaire

    Bonjour

    Dans ma base de données inventaire j'ai créé un formulaire de saisie A pour afficher un produit, et un sous-formulaire B créer a partir d'une requête pour réduire ou augmenter les quantités du produit.
    Le sous formulaire B est en mode feuille de données auquel j'ai ajouté une requête mise à jour d'un champs calculé vers la table du formulaire A qui s'exécute lors de la fermeture du formulaire, jusqu'à là tout fonctionne quand je ferme le formulaire. Le problème c'est que si je clic dans le formulaire A pour changer le numéro du produit le changement fait dans le formulaire B ne se met pas à jour dans la table, je dois fermer et rouvrir le formulaire à chaque produit. J'aimerais effectuer des changements dans plusieurs produits sans fermer le formulaire . J'ai essayé d'exécuté la requête mise à jour dans différent endroit et différent évènement dans le formulaire A mais sans succès.

    Malheureusement je n'ai aucune connaissance en code SQL/VBA. Comment pourrais je contourner ce problème.

  2. #2
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut [AC-2010] mise à jour de la table avec requete mise à jour à partir d'un sous-formulaire

    [AC-2016] je me suis trompée c'est la version Access 2016

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut Evénement de recherche du nouveau produit

    Bonsoir,

    C'est juste avant la recherche du nouveau produit que tu peux calculer ton champ.

    Pour savoir sur quel événement ; cela dépend de ce qui déclenche la recherche du nouveau produit (un bouton?) ; il faut que tu intercales ta requête avant le code qui fait la recherche. Tu peux le faire dans le même événement dans la mesure où cela ne t'intéresse guère d'afficher le résultat de ta requête avant de passer à la suite (je le suppose, puisque tu l'a mis dans l'événement de fermeture, au départ).

    Il faut quand même tester que cela a un sens au moment où tu fais ta recherche (que ce n'est pas ta première recherche) sans quoi il n'y a rien à mettre à jour.

    Tu ne fais pas d'autres modifications sur le produit, à partir du formulaire A (saisie de date, libellé...) ?


    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  4. #4
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut re-Paraffine

    Effectivement ma recherche du nouveau produit est faite par un bouton avec liste déroulante. Mon formulaire A sert à sélectionner le produit à modifier selon les données de la table A et comporte un champ qui affiche le résultat d'un champ calculé qui provient du sous-formulaire B. C’est ce champ (résultat) que je veux mettre à jour dans ma table A. Mon sous-formulaire B (feuille de réponse dynamique) sert à modifier les données de la table B et comporte un champ avec calculs qui se mets à jour automatiquement dans la table B. Il y a peut-être un problème au niveau de ma requête.



    Nom : formulaire sortie.PNG
Affichages : 43
Taille : 17,6 Ko
    Nom : requete maj.PNG
Affichages : 43
Taille : 6,1 Ko

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut

    Bonsoir,

    J'ai l'impression que je n'avais pas bien compris : en fait, cette requête ne ressemble pas à une requête action (mise à jour), on dirait plutôt que c'est la source de ton champ calculé, c'est bien cela?
    Dans ce cas je pense que tu a besoin d'un rafraîchissement de la donnée, avec la méthode Requery.
    Pour cela il faut aller sur le contrôle de la liste déroulante, sur l'événement qui correspond à la sélection d'un nouveau produit, et ajouter au code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     forms![nom du formulaire A].requery
    pour aller chercher la valeur du champ calculé suite aux saisies du sous-formulaire avant la consultation du nouveau produit.

    D'ailleurs, il serait peut-être plus judicieux d'insérer cette ligne de code quand la saisie est finie; dans un événement du sous-formulaire, en fait.

    Cordialement,
    Paraffine
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  6. #6
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut re-Paraffine

    J'ai finalement trouvé le vrai problème mais je ne sais pas pourquoi il existe ni comment le réparer. Lorsque que je clique sur la liste déroulante pour changer le produit, la requête mise à jour s'exécute et, en observant sont comportement en même temps dans la table A, je me suis rendu compte qu'il y a un long délai de +- 10 secondes avant que l'enregistrement se met à jour dans la table, ce qui fait que si nous changeons le numéro de produit avant 10 secondes alors la mise à jour ne se fait pas. ma requête s'exécute dans le sous-formulaire B à la sortie. j'ai essayé de la faire exécuter sur le formulaire A mais sans succès pour le moment.

    Par contre lorsque que j'appuie sur le bouton fermer le formulaire la donnée se met à jour immédiatement sans délai.

    je croyais que les changements dans Access étaient instantanés, pourquoi y-a-t 'il ce délai? la base de données est enregistré sur le réseau en accdb et est de taille 7500ko. fais des tests en formation accde, mêmes résultats. Je continue à faire des tests. Merci de votre effort pour trouver une solution.

  7. #7
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut Tentative de mise à jour avec code vba

    J'ai composé un code pour mettre à jour ma table A avec mon formulaire B.

    UPDATE [Nouvelle Bobine] SET [Nouvelle Bobine].[Mètre utilisé] = formulaires![Sortie d'inventaire Câble]!utilisé
    WHERE ((([Nouvelle Bobine].[Code Bobine])=[formulaires]![Sortie d'inventaire Câble]![bobine]));



    le code fonctionne mais toujours avec un délai et lorsque je change mon produit j'ai ce message:

    "Un autre utilisateur a modifié cet enregistrement et a sauvegardé ses modifications avec que vous essayiez de sauvegarder les vôtres. remodifiez l'enregistrement."

    Je suis ouverte en mode exclusif alors j'y comprend rien!

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut Méthode Requery !

    Bonjour Nicaccess,

    En fait tu es en concurrence... avec toi-même. L'espace d'exécution de la requête n'est pas le même que celui du formulaire.
    Il faut donc appeler la méthode Requery pour synchroniser le formulaire avec les données, juste avant de lancer la requête (et peut-être refaire un requery, pour l'affichage).
    La syntaxe :
    Forms![Nom formulaire A].Requery
    Sinon Access détecte que tu cherche à modifier un enregistrement, déjà ouvert en modification par ton formulaire, et il tique.

    Concernant cette histoire de délai, il faudrait davantage de précisions: quel est l'événement qui déclenche ta requête ?

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  9. #9
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut re

    c'est exact. dans lequel formulaire je dois inscrire ce code et dans quel évènement me suggères-tu?

    ma requête est déclenché par l'évènement de fermeture du sous-formulaire, et s'exécute lorsque je change mon produit dans la liste déroulante ou quand je ferme le formulaire. Cela semble bien fonctionné sauf en ce qui concerne le délai entre le déclenchement et la mise à jour. J'ai essayé de la faire déclencher ailleurs dans les 2 formulaires mais ca n'a pas fonctionné. J'ai constaté que depuis que j'ai fait la requête en code cela va un peu plus vite mais j'ai toujours le message "un autre utilisateur ..." qui m'agace.

    Merci
    Nicaccess

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut

    Comme écrit dans mon message précédent, juste avant l'appel à la requête (dans le même événement).
    As-tu essayé d'implanter ta requête sur l'événement AfterUpdate du sous-formulaire ?

    Cordialement.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  11. #11
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut

    Cela fonctionne très bien . plus de délais enfin 1-2 secondes c,est mieux qu'avant
    c'est la seule facon que ca fonctionne rapidement. Exit ou AfterUpdate me donne le meme résultat. a moins que vous trouvez quelque chose de mieux je crois que je vais opter pour cette option. Cela faisait au moins 10 ans que je n'avais pas modifié ma base de donnée.

    voici ce que ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub sf1_Exit(Cancel As Integer)
    DoCmd.RunSQL "UPDATE [Nouvelle Bobine] SET [Nouvelle Bobine].[Mètre utilisé] = formulaires![Sortie d'inventaire Câble]!utilisé WHERE ((([Nouvelle Bobine].[Code Bobine])=[formulaires]![Sortie d'inventaire Câble]![bobine]))"
    End Sub
    Maintenant comment je fais pour faire disparaitre le msg "Un autre utilisateur a modifié cet enregistrement et a sauvegardé ses modifications avec que vous essayiez de sauvegarder les vôtres. remodifiez l'enregistrement."?

    Merci,
    Nicaccess

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut

    Voilà ce que je voulais dire avec la méthode Requery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub sf1_Exit(Cancel As Integer)
          Forms![Nom du formulaire A].Requery
          DoCmd.RunSQL "UPDATE [Nouvelle Bobine] SET [Nouvelle Bobine].[Mètre utilisé] = formulaires![Sortie d'inventaire Câble]!utilisé WHERE ((([Nouvelle Bobine].[Code Bobine])=[formulaires]![Sortie d'inventaire Câble]![bobine]))"
    End Sub

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  13. #13
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut re: Paraffine

    je te remercie énormément, cela fonctionne à merveille! Avec la méthode Requery quand la mise à jour s'effectue, je perds le focus sur le produit sélectionné. y-a-t'il une méthode pour que le produit modifié garde le focus après la mise à jour afin de m'assurer que le changement est fait correctement?

    Nom : Capture.PNG
Affichages : 9
Taille : 5,2 Ko

    Merci beaucoup pour ton aide Paraffine.

    Sincèrement
    Nicaccess

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2017
    Messages : 20
    Points : 37
    Points
    37

    Par défaut

    Bonjour Nicaccess,

    Tu peux rajouter dans ta procédure
    Forms![nom formulaire A]![Nom du contrôle qui doit avoir le focus].setfocus (de mémoire) (n'hésite pas à utiliser l'aide de visual basic pour les syntaxes)

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  15. #15
    Candidat au Club
    Femme Profil pro
    responsable de l'inventaire du stock
    Inscrit en
    octobre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : responsable de l'inventaire du stock

    Informations forums :
    Inscription : octobre 2017
    Messages : 12
    Points : 3
    Points
    3

    Par défaut re: Paraffine

    Tout va à merveille. Merci encore pour ta précieuse aide.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/04/2008, 09h54
  2. Mise à jour d'une table avec une autre
    Par julie75 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/10/2007, 18h54
  3. Mise à jour d'une table avec une autre
    Par Oilcout dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/10/2007, 13h02
  4. Mise à jour d'une table avec une autre
    Par Lucien dans le forum SQL
    Réponses: 2
    Dernier message: 20/04/2006, 10h46
  5. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46

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