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 :

Conservation des tris lors de navigations entre formulaires [Toutes versions]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    Juillet 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 150
    Points : 71
    Points
    71
    Par défaut Conservation des tris lors de navigations entre formulaires
    Bonjour à tous, je vous sollicite à nouveau pour m'aider à résoudre un problème de tri sur formulaire.

    Mon application affiche autant de formulaires que de supports de paiement possibles pour des prestations (ex : chèque, espèces, virement etc ...)
    Lors du pointage par rapport aux relevés de sa banque l'utilisateur peut trier les écritures selon les colonnes de son choix (date, montant ...) en utilisant l'option adéquate du ruban (groupe Trier et filtrer).

    Lorsqu'il laisse ce formulaire en attente (sans le fermer) pour en ouvrir un autr,e Access demande s'il veut le mettre à jour auquel cas il répond OUI, ce qui a pour effet d'actualiser la propriété OrderBy du formulaire en attente.
    Ainsi quand il revient dessus, le tri est inchangé et tout va bien.

    Problème : ceci fonctionne très bien en mode .accdb mais après enregistrement en .accde, Access ne pose plus la question et le tri est réinitialisé selon celui du query support.

    Questions :
    1. Le comportement du .accde est-il contournable ? si oui comment ?
    2. Si non, comment mémoriser de manière simple la propriété OrderBy de manière à la réappliquer lors du retour d'affichage ?

    Comme d'habitude je vous remercie par avance pour vos commentaires et suggestions.

    Bien cordialement

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Bonjour,

    Je ne retrouve pas ce problème avec ma petite application test. Cependant pour forcer la conservation du dernier tri il est possible de l'enregistrer dans une variable conservée au niveau du formulaire, variable mise à jour au moment de la désactivation du formulaire puis utilisée au moment de l'activation (ré-activation) de ce 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
    Option Compare Database
    Option Explicit
     
    Dim sTri As String
     
    Private Sub Form_Activate()
        Me.OrderBy = sTri
        Me.OrderByOn = True
        Debug.Print "Form_Activate  ", Me.Name, Me.OrderBy
    End Sub
     
    Private Sub Form_Deactivate()
        sTri = Me.OrderBy
        Debug.Print "Form_Deactivate", Me.Name, Me.OrderBy
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre régulier
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    Juillet 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 150
    Points : 71
    Points
    71
    Par défaut
    Bonjour EricDgn et merci d'avoir pris la peine de regarder mon problème.

    J'ai construit une petite base de test avec 2 formulaires (frmTest1 et frmTest2) et je me suis rendu compte de ceci :
    1. Si les 2 formulaires sont ouverts en direct et que je trie frmTest1, Access ne demande rien et conserve le nouveau tri sur frmTest1 même si j'accède à frmTest2 avant d'y revenir,.
    2. Si j'insère les 2 formulaires dans un formulaire de navigation avec onglets et que je fais la même manip, Access pose la question suivante : "Voulez-vous enregistrer les modifications apportées à la structure de Formulaire frmTest1 ?". Je réponds OUI et ça fonctionne MAIS PLUS DU TOUT si j'enregistre sous format .accde.

    Le problème est que mon application est justement construite à base de formulaires de navigation englobant des formulaires de listes.
    La solution que tu proposes dans ton message est valable mais demande à être insérée dans chaque formulaire, or j'en ai plus de 90 !

    D'où la question :
    - peut-on fabriquer un .accde qui va bien avec les formulaires de navigation ?
    - sinon peut-on factoriser ta solution de manière à éviter 90 duplications ?

    Merci de ton avis.

    Bien cordialement.

    PS : en pièce jointe ma petite base de test
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 595
    Points
    5 595
    Par défaut
    Effectivement, les tris ne sont pas conservés.
    Je ne sais pas ce qui sera le plus rapide: faire des copier-coller du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim sTri As String
     
    Private Sub Form_Activate()
        Me.OrderBy = sTri
        Me.OrderByOn = True
    End Sub
     
    Private Sub Form_Deactivate()
        sTri = Me.OrderBy
    End Sub
    dans les formulaires concernés, ou faire une macro qui va y ajouter ce code (mais coder prend aussi du temps).

    Pour un code, je n'en ai pas sous la main. Deux pistes: création dynamique, recherche texte dans code.

    Cordialement.

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    bonjour,
    1. Le comportement du .accde est-il contournable ? si oui comment ?
    pour information, le format .accde permet d'ouvrir le formulaire en mode création mais pas d'en conserver les modifications.
    Donc, certaines propriétés dont le OrderBy, ne peuvent pas être sauvegardées dans la structure

  6. #6
    Membre régulier
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    Juillet 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 150
    Points : 71
    Points
    71
    Par défaut
    Merci à vous deux pour votre retour sur le sujet.
    Il y a vraiment un défaut dans l'arsenal sécurité de Microsoft car le passage à .accde, indispensable à la protection contre le hacking, conduit à renoncer à des fonctionnalités nécessaires à l'utilisateur.

    Il y a quand même un truc louche : si vous testez avec mon exemple joint dans le précédent message vous voyez que le problème ne se produit pas si on travaille en direct avec les deux formulaires. Ce n'est que dans le cas où l'on passe par le formulaire de navigation à onglets "navTest" qu'il y a problème. C'est donc le formulaire de navigation qui et à l'origine. Dur.

    Je vais donc m'orienter vers la solution d'EricDgn mais avant je vais en tenter une factorisation à base de WithEvent dans un module de classe (je n'ai encore jamais fait çà mais j'aime les expériences nouvelles), le but étant de réduire la duplication de ce code.
    Si ça marche je mettrai la solution dans ce fil. Promis.

    Bien cordialement.

  7. #7
    Membre régulier
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    Juillet 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 150
    Points : 71
    Points
    71
    Par défaut
    Bonjour,
    Je fais de nouveau appel à vous après avoir vainement tenté d'adapter la solution d'EricDgn dans le contexte du formulaire de navigation navTest.

    J'ai écrit une Sub publique qui lance Form_Activate et une autre qui lance Form_Deactivate de chaque formulaire (frmTest1 et frmTest2) mais je n'ai pas été capable de trouver la bonne syntaxe pour les lancer à partir de navTest (j'ai cherché sur des sites en français et en anglais mais sans succès).

    Pouvez-vous me donner un coup de main SVP ? Merci d'avance.
    Bien cordialement.

  8. #8
    Membre régulier
    Homme Profil pro
    Manager de projet (retraité)
    Inscrit en
    Juillet 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Manager de projet (retraité)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 150
    Points : 71
    Points
    71
    Par défaut
    Lors de l'exposé de mon problème j'avais promis de vous faire part d'une solution si j'en trouvais une. Je reviens donc sur ce fil pour honorer ma promesse.

    Rappel du sujet : en mode accdb, sur un formulaire de liste l'utilisateur peut demander un tri sur une colonne quelconque. Dans ce cas Access lui demande s'il veut conserver ce tri (ce qui est le cas) et procède à la mise à jour du formulaire.
    Le problème est que ceci ne fonctionne plus en mode accde et ceci est documenté, par exemple "The ACCDE file allows users to perform normal database operations, but prohibits creation of database objects and alterations to the designs of forms and reports."

    La solution qui me convient :
    - je reste en mode accdb pour continuer à benéficier du tri modifiable
    - j'interdis toute possibilité de modifier le code en neutralisant la touche F11
    - je crée un formulaire de login qui effectue tous les verrouillages





    https://www.developpez.net/forums/d8...access-2007-a/

    https://social.technet.microsoft.com...eitproprevious

    Concernant le mot de passe sur le formulaire de login, je recommande la construction d'un mot de passe long (au moins 15 caractères majuscules et chiffres).

    Bien cordialement.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2007, 17h27
  2. Réponses: 1
    Dernier message: 14/08/2007, 15h37
  3. Réponses: 13
    Dernier message: 03/08/2007, 10h07
  4. navigation entre formulaires
    Par samtheh dans le forum IHM
    Réponses: 1
    Dernier message: 14/06/2007, 20h45
  5. [MySQL] Navigation entre formulaires
    Par navona dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 18/05/2006, 20h13

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