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 :

besoin d'un astuce pour mettre à jour des formulaires


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut besoin d'un astuce pour mettre à jour des formulaires
    Bonsoir,

    J'ai une formulaire Encodage Commande. Formulaire et ssf, classique.
    Dans le ssf j'encode les lignes appartenant à la commande.

    Si l'article existe, mais sans code barre, une autre formulaire en mode modal 's ouvre pour encoder le code barre. Idem, pour le changement de prix. Pendant se temps, le formulaire commande reste ouvert.
    Dés qu'on ferme le fenêtre d'encodage code barre ou prix, mon formulaire initiale est mise à jour et le code barre est bien présent dans la liste.

    La, ou je sèche est quand l'article n'existe pas du tout. J'ouvre à nouveau un formulaire ou le client peut encode son article. Pas de souci.
    Par contre une fois que j'enregistre l'article créer et que je retourne à ma commande, le nouveau article n'est pas disponible. Je dois quitter ma commande, et la réouvrir en mode modification pour que l'article est disponible.

    Je pense que je dois utiliser la commande Requery pour ça, mais ou, comment et à quelle moment.

    Est-ce que je peux, dans l'événement de mon bouton sauvegarder (sur le formulaire d'encodage produit) faire une requery sur ma commande? Uniquement sur le sous-formulaire? (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forms![frmEncodageCommande]![ssfEncodageCommande].form.requery
    ??

    Merci pour votre aide

    Hans

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    Personnellement, ce genre de truc, je fais un module qui boucle sur tous les formulaires ouverts et j'applique un refresh dessus.
    En gros, un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim monform As Access.Form
        On Error Resume Next
        ' On parcourt tous les formulaires OUVERTS pour les rafraîchir
        For Each monform In Forms
            Application.Forms(monform.Name).Refresh
        Next
    Il n'y a qu'à appeler la fonction directement lors de la fermeture de ton formulaire.

    Cordialement,

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,


    Je ne crois pas qu'un Refresh fasse l'affaire.

    Je suppose que, dans ton formulaire, le choix de l’article se fait au moyen d’une liste déroulante.
    Ce qu’il faut, c’est donc réactualiser la propriété « Contenu » de la liste déroulante après l'ajout dans la table des articles . Par exemple, si la zone de liste s’appelle « cboArticles » une instruction de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forms!LeFormulaire!cboArticle.rowsource = forms!LeFormulaire!cboArticle.rowsource
    .

    Où faut-il placer cette instruction ?

    Par exemple, dans l’événement Sur fermeture du formulaire d’encodage de l’article.
    Là, tu testes si LeFormulaire est ouvert et si c’est le cas, l’instruction en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Close()
     If CurrentProject.AllForms("LeFormulaire").IsLoaded Then
         Forms!LeFormulaire!cboArticle.RowSource = Forms!LeFormulaire!cboArticle.RowSource
     End If
    End Sub

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    Ok, merci,

    j'ai écrit donc dans l'événement Form_Close ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CurrentProject.AllForms("frmEncodageCommande").IsLoaded Then
         Forms![frmEncodageCommande]![ssfEncodageCommande].Form.CodeFournisseur.RowSource = Forms![frmEncodageCommande]![ssfEncodageCommande].Form.CodeFournisseur.RowSource
      End If
    mon bouton sauvegarder à préalablement déjà enregistrer le nouveau article.

    Mais, je ne vois toujours l'article dans la liste déroulante dans ma formulaire EncodageCommande.

    Est-ce que le syntaxe n'est pas bon?

    Pq est-ce que j'écrit que la la rowsource est = à la rowsource? Je ne comprends pas tout à fait ce que c'est senser de faire là.

    Merci si vous pouvez m'éclairer un petit peu plus

    Hans

  5. #5
    Expert éminent

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

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

    Et si tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CurrentProject.AllForms("frmEncodageCommande").IsLoaded Then
         Forms![frmEncodageCommande]![ssfEncodageCommande].Form.CodeFournisseur.Requery
      End If
    Bonne continuation

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    malheureusement rien

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonsoir,

    Avant de poster ma réponse, j'avais préparé un exemple pour vérifier !

    Peux-tu poster ta db dans une version compatible Access2000 ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    voici les tables et formulaires nécessaire pour le test.

    Merci d'avance

    Hans
    Fichiers attachés Fichiers attachés

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Citation Envoyé par Salsaboy60 Voir le message
    Ok, merci,

    j'ai écrit donc dans l'événement Form_Close ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CurrentProject.AllForms("frmEncodageCommande").IsLoaded Then
         Forms![frmEncodageCommande]![ssfEncodageCommande].Form.CodeFournisseur.RowSource = Forms![frmEncodageCommande]![ssfEncodageCommande].Form.CodeFournisseur.RowSource
      End If
    Dans ssfEncodageCommande, le contrôle en question ne s'appelle pas "CodeFournisseur" mais "Description" !

    La syntaxe est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Close()
     
      If CurrentProject.AllForms("frmEncodageCommande").IsLoaded Then
         Forms![frmEncodageCommande]![ssfEncodageCommande].Form.Description.RowSource = Forms![frmEncodageCommande]![ssfEncodageCommande].Form.Description.RowSource
      End If
     
     
     
    End Sub

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    si si,

    j'ai trois listes déroulantes, le code barre, le code fournisseur et la description.

    Mais c'est la liste du code fournisseur, qui appèl l'ouverture de mon formulaire produit et que je voudrais mettre à jour.
    Les autres c'est automatique par la suite.

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    S'il y a trois listes qui sont concernées, il faut les rafraîchir toutes les trois !

    Je viens aussi de constater que tu écris "...Commande" alors que tu as nommé "...Commandes"
    C'est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Close()
     
      If CurrentProject.AllForms("frmEncodageCommandes").IsLoaded Then
         Forms![frmEncodageCommandes]![ssfEncodageCommandes].Form.Description.RowSource = Forms![frmEncodageCommandes]![ssfEncodageCommandes].Form.Description.RowSource
      End If
    End Sub
    qu'il faut écrire

    Corrige et dis-moi si cela fonctionne.

    Si c'est non,

    je ne devine pas comment fonctionne ton application et je ne parviens malheureusement pas à tester. Si cela ne fonctionne pas encore, donne-moi la marche à suivre pour que je puisse constater l'erreur chez moi :

    - ouvrir frmEncodageCommandes,
    - comment provoquer l'ouverture de frmProduits,
    - donne-moi un exemple d'ajout de produit...

    P.-S.

    As-tu vérifié que si, après avoir refermé frmProduits, tu fermes frmEncodageCommandes et que tu l'ouvres à nouveau, alors le produit ajouté est bien présent.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    Youpie, ça marche.

    J'ai trouvé mon (grosse) erreur.

    Puisque le formulaire frmProduit peut-être appeler à partir de différentes formulaires, j'ai passé, dans le cadre de l'ouverture via l'encodage commande, une variable global (ChoixClient) avec la valeur 100.
    J'ai testé sur fermeture de mon frmProduits si ChoixClient 100 fait la mise à jour, sinon, rien faire.

    Mais, dans mon bouton sauvegarder, j'ai réinitialisé la variable ChoixClient et donc, le programme ne pouvais pas passer via le code souhaité.
    C'est corrigé maintenant et tout fonctionne a merveille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Close()
     
    If ChoixClient = 100 Then
      If CurrentProject.AllForms("frmEncodageCommandes").IsLoaded Then
         Forms![frmEncodageCommandes]![ssfEncodageCommandes].Form.CodeFournisseur.RowSource = Forms![frmEncodageCommandes]![ssfEncodageCommandes].Form.CodeFournisseur.RowSource
      End If
    ChoixClient = 0
    End If
     
    End Sub
    Un grand merci pour ton aide. Ceci me plait vraiment bcp.

    Hans

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/02/2015, 19h17
  2. Probleme pour mettre à jours les Periodes des prévisions
    Par LABETISIA dans le forum Développement
    Réponses: 5
    Dernier message: 06/12/2013, 18h11
  3. Réponses: 4
    Dernier message: 06/12/2012, 07h07
  4. Réponses: 21
    Dernier message: 03/12/2010, 13h21
  5. Astuces pour mettre à jour un exe ?
    Par TreizeSegments dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/07/2005, 20h02

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