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

Access Discussion :

Current (bug ou principe non compris ?)


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut Current (bug ou principe non compris ?)
    Bonjour,

    Voilà un problème que je rencontre et que je vous soumets en espérant avoir une réponse.


    1ere étape : à partir d'un base vierge :

    -> Créer une table : TEST
    IDTEST -> Numéro Auto
    TEST -> Texte

    -> Créer par l'assistant, un formulaire en mode feuille de données sur la table TEST.

    -> Sur l'évenement 'Sur activation' (Current), placer sur bout de code vous permettant de savoir que vous passez par là (un point d'arrêt fait l'affaire).

    -> Passer en mode formulaire et créer 2 ou 3 enregistrements.

    -> Sélectionnez un enregistrement et faites supprimer (touche suppr), l'évènement se déclenche. (normal)

    -> Sélectionnez tout les enregistrements (en cliquant sue carré à la jointure de l'entete des lignes et colonnes), touche Suppr, l'évènements ne se produit pas. Idem si vous sélectionner le dernier enrgegistrements ET la ligne d'ajout.


    Des que la ligne d'ajout est sélectionnée dans les enregistrements à supprimer, l'évènement Current ne se produit plus.



    En poussant les tests un peu plus loin, même access "oublie" de mettre à jour des champs calculées.

    2ième étape : Sur la base de l'exemple précédent :

    -> créer un formulaire vierge, poser le formulaire TEST précédent en sous formulaire.

    -> ajouter une zone de texte calculée avec source contrôle : =[TEST].form![IDTEST]

    -> refaire la procédure de suppression décrite précédemment, la zone de texte faisant référence à la valeur de l'ID ne sera pas mise à jour après suppression de la totalité des enregistrements.





    Donc, soit j'ai loupé quelque chose, soit c'est un bug qui, même s'il n'est pas amené à se produire souvent, est fortement pénalisant (pas réussi à le contourner).

    Edit (précision): Testé sous Access 2000, 2002 et 2007

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    C'est pas un bug...
    L'événement Current concerne l'enregistrement en cours pas un lot d'enregistrements qui plus est effacés par cette méthode.

    Tu peux contourner en procédant ainsi (à peaufiner) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Delete(Cancel As Integer)
      Cancel = (MsgBox("On supprime ?", 36, "Supprimer") = 7)
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Citation Envoyé par argyronet
    Bonjour,

    C'est pas un bug...
    L'événement Current concerne l'enregistrement en cours pas un lot d'enregistrements qui plus est effacés par cette méthode.

    Argy
    Je suis prenneur de toutes infos, mais pourquoi alors l'évènement current se produit si l'on sélectionne plusieurs enregistrements sans sélectionner la ligne vide d'ajout ?

    Pour info, même avec le code que tu fournis, rien ne garanti que les enregistrements soit effectivement supprimés (dans le cas ou on répond oui, bien sur), vu qu'access par défaut effectue une demande de confirmation globale après la série de demande de confirmation (autant de demande qu'il y a d'enregistrements sélectionnés). L'option de confirmation globale est désactivable par l'utilisateur ou par code (setoption) dans le menu option de mémoire.

    Pour en revenir au problème énoncé, j'ai pris la peine de détailler au maximum et de donner une procédure qui, me semble, permet de reproduire le problème évoqué. J'ai passé des heures a essayer de comprendre le pourquoi ou du moins a essayer de le contourner.

    La question est donc : ce comportement est-il normal, si oui pourquoi ? et la question n'est pas comment demander la confirmation de la suppression d'un ou de plusieurs enregistrements.

    Merci tout de même pour la réponse, même si elle ne m'apporte aucun élément

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Ben en fait, oui, je sais, l'événement Current se produit sur un jeu d'enregistrements mais, ce que je voulais souligner par mes dires, c'est que l'on exploite en général cet événement pour l'enregistrement en cours. Et puis, n'importe comment, il n'empêchera pas la suppression...

    Il faut tout de même avouer que ta façon de procéder est peu orthodoxe.
    Si quelqu'un clique sur cette zone, c'est quand même pas pour faire un INSERT !!! tu me suis !!!
    Donc, si tu ne veux plus être ennuyé avec cette zone, évite le mode feuille de données et conçoit un mode formulaire continu dans le même look. (SpreadSheet)

    Maintenant, de là à dire que c'est un bug, je ne m'engagerais pas...
    Tu sais, il y a beaucoup de choses by design comme ils disent chez MS.
    Je peux t'en donner une liste...

    Le code que je t'ai fourni n'est qu'un simple exemple et n'est pas à utiliser à la légère dans le sens où il est peu convivial ; c'était juste pour te montrer.

    Pour résumer, je ne sais pas quel est ton objectif :
    Si c'est d'écrire une synthèse sur la zone de sélection ou bien si c'est pour développer une application...
    Ici, on sera à même de t'apporter une aide plus particulière et adaptée pour la seconde option...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  5. #5
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Le contexte dans lequel j'ai rencontré ce problème était dans un formulaire avec plusieurs sous formulaires.

    Je voulais effectuer un requery d'un sous formulaire sur l'évènement 'Current'. Les formulaires 'parent' et 'l'enfant' étant tout 2 des sous formulaires, je ne pouvais utiliser la relation 'champs pères'->'champs fils'.

    En mode feuille de données, le formulaire enfant n'était pas mis à jour (évènement current ne se produisant pas) lors de la suppression des données (comme expliqué sur le 1er post).

    Par contre j'ai exploré la solution que tu proposes, c'est à dire de m'orienter vers un forumlaire en continu (même si visuellement, le rendu n'est pas le même et n'offre pas la même souplesse d'utilisation) et apparemment là, le Current se produit bien dans tout les cas.

    J'évoque la notion de Bug, vu que l'évènement Current se produit bien en mode feuille de données, sauf quand on sélectionne la ligne vide d'ajout, alors qu'en mode continu, il se produit à chaque fois.

    Serait-il possible que 'by design', un évènement se produise ou pas juste par le fait d'une différence dans la présentation des données ? Ca me paraitrait problèmatique vu qu'il est laisser libre a l'utilisateur (par défaut) de basculer d'un mode de formulaire à l'autre.

    N'ayant pas de contact chez Microsoft, serait-il possible que quelqu'un assez proche de leurs services expose le problème ou m'indique une procédure pour obtenir une réponse de leur part.


    Merci.

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par DelphiManiac
    Serait-il possible que 'by design', un évènement se produise ou pas juste par le fait d'une différence dans la présentation des données ? Ca me paraitrait problèmatique vu qu'il est laisser libre a l'utilisateur (par défaut) de basculer d'un mode de formulaire à l'autre.
    Non, si tu l'interdit, un utilisateur ne peut pas passer d'un mode à l'autre... Il ne faut pas exagérer.
    Personnellement, lorsque je développe une appli, l'utilisateur a le droit de faire ce que je lui donne le droit de faire, à l'exclusion de tout autre chose, point barre !

    Il t'appartient à toi et toi seul de prévoir ce que risque de faire un user lambda. C'est à ça que servent les tests.

    Pour ce qui est de la synchro Forms/SubForms sans exploiter Champs Pères et Fils (pourquoi d'ailleurs ???) tu peux envisager respectivement par programme ou par conception de :
    1/ mettre à jour les infos avec DAO
    2/ mettre à jour les infos avec les phénomène de cascade (dangereux et pas recommandé).

    Citation Envoyé par DelphiManiac
    N'ayant pas de contact chez Microsoft, serait-il possible que quelqu'un assez proche de leurs services expose le problème ou m'indique une procédure pour obtenir une réponse de leur part.
    Tu peux toujours les appeler au titre d'un support 0825.827.829 mais je ne pense pas que cela rentrera dans le cadre d'un bug...
    Sinon, tu peux écrire, sans garantie (???) de réponse, à :
    msfrance@microsoft.com

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

Discussions similaires

  1. Bug non compris
    Par Alec6 dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/02/2007, 09h48
  2. [MySQL] Classe database + connexion multiple + principe mal compris
    Par Rodrigue dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/08/2006, 14h06
  3. [error] depassement de memoire non compris
    Par guns17 dans le forum Langage
    Réponses: 8
    Dernier message: 26/07/2006, 16h35
  4. Bug d'affichage non identifié. . .
    Par TheReturnOfMuton dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 21/06/2006, 20h25

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