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 :

Ne pas enregistrer les modifications de données dans un sous-formulaire


Sujet :

Access

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Ne pas enregistrer les modifications de données dans un sous-formulaire
    Bonjours à tous ...

    Je développe une base d données sous Access 2003.

    J'aimerais savoir comment je peux faire pour annuler les modifications de données apportées à un sous-formulaire.

    Je sais que pour un formulaire je peux utiliser : Me.Form.UNDO mais pour mon sous-formulaire cela ne fonctionne pas ...

    Est-ce que vous auriez des idées ???

    Merci de votre aide ... et à tout bientôt ...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    est ce que ton chemin vers ton sous formulaire est correcte (je me suis fais pieger comme ca) ?

    ca doit ressembler à ca normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.monSousFrom.Form.form2.undo
    - Me étant le formulaire principal
    - monSousforme étant le nom de la source du sous formulaire pour le formulaire principal
    - form2 étant le nom de ton sous formulaire

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci pour ta réponse ... alors voici ce que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Form(str_NomFormulaire).Form(str_NomSousFormulaire).Undo
    str_NomFormulaire : Contient le nom du formulaire principal
    str_NomSousFormulaire : Contient le nom de mon sous-formulaire

    Mais cela ne fonctionne pas vraiment ...

    Si vous avez des idées ... merci de votre aide ...

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pourquoi Form(xxxx)

    Form n'est pas une collection

    Me.NomDuCadreDeSousFormulaire.Form.Undo

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    effectivement j'ai mis form2 en trop (car le .Form nous donne déjà le formulaire...) en fait apres le .form il faut mette le control ciblé, dsl

    sinon, je pensais pas que tes noms de formulaire étaient variables, je passe toujours comme dit Tofalu. Sinon ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls(str_NomSousFormulaire).Form.undo
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Forms(str_NomFormulaire).Controls(str_NomSousFormulaire).Form.undo

  6. #6
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci à tous pour vos réponse ..

    Alors j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls(str_NomSousFormulaire).Form.undo
    et ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Forms(str_NomFormulaire).Controls(str_NomSousFormulaire).Form.undo

    Mais cela ne fonctionne pas ... lorsque mon code s'exécute il n'y a pas de problème (aucune erreur comparé à avant ) mais lorsque je regarde mes informations dans mon sous-formulaire lorsque j'ouvre à nouveau mon formulaire, je m'apperçois que les modifications ont été enregistrées alors qu'elles ne devraient pas ...

    Je ne comprend pas pourquoi ... ...

    Si vous avez encore des idées, elles seront les bienvenues ... Merci encore mille fois pour votre aide ... et à tout bientôt ...

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    ça dépend de où tu as mis ton code (quel événement), mais si tu es dans le formulaire principal alors c'est trop tard, les modifs sont déjà enregistrées dans le sous-form

    il faut agir au niveau du sous-form

  8. #8
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Ok ... alors c'est un peu la M...

    Mon code se trouve sur un bouton qui sert à quitter le formulaire c'est à dire sur le formulaire ...

    Ce qu'il faut que je fasse pour remédier à mon problème c'est un truc du style :

    1) Sauvegarde de la valeur avant modification dans une variable
    2) Si la réponse à : Voulez-vous enregistrer est non,
    2.1) Parcourir la table en cherchant la bonne ligne,
    2.2) Remettre la valeur sauvegardée dans la table
    2.3) Sauvegarder la table
    3) Quitter le formulaire


    En gros, cela aurait vraiment été plus simple d'utiliser un simple : .UNDO ... ...

    Merci pour ton aide en tout cas ... et je vais me mettre dans ma programmation VBA pour essayer de faire ce que je viens de citer ...

    A tout bientôt ... ...

    PS : Je laisse encore ce post le temps que je fasse ma fonction pour que je puisse par la suite publier mon code, qui sais, cela peut servir à quelqu'un ...

  9. #9
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Je relance un peu le sujet car mon problème est toujours là ... je ne parviens pas à annuler mes modifications et peut être avez-vous des nouvelles idées....

    Je prends volontier toutes les solutions ... car si je dois faire ce que j'ai écris dans mon poste ci-dessus je crois que cela va devenir une usine à gaz ...

    Merci de votre aide ...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    Je vais peu être dire une connerie, mais es tu vraiment obligé de faire un UNDO ?

    Dans mon appli en cours, j'ai une liste (genre recherche multicritères de Cafeine). Pour une liste sélectionnée, je peux lancer un formulaire de modification des données de cette ligne. (En gros j'ai un formulaire tout simple en mode boite de dialogue lancé par macro avec la condition WHERE qui me place sur le bon enregistrement). Dans ce formulaire j'ai un bouton "OK" et un bouton "Annuler".

    Le bouton "ok" enregistre les modif et ferme le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.Close
    Le bouton "Annuler" ne fait que fermer le formulaire (et n'enregistre PAS les modifications, car je pense qu'il ne travaille pas directement sur la table et ses enregistrement, mais sur une récupération d'un des enregistrement... ) :

  11. #11
    Membre actif Avatar de moicats
    Inscrit en
    Mars 2006
    Messages
    299
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 299
    Points : 200
    Points
    200
    Par défaut
    salut,

    dans mon appli j'ai fait ce genre d'action.
    si l'utilisateur sort du sous formulaire sans avoir validé par le bouton l'enregistrement j'annule celui-ci:

    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
    16
    17
    18
    19
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
    'si action bouton on ne fait rien
     If Not mTest_abp Then
     
     'sinon affichage Msgbox test
       If MsgBox("Voulez-vous terminer la saisie ?" & Chr(13) + Chr(10) & 
    "(si elle est terminée validez-la)", vbYesNo + vbQuestion, "Titre application") = vbNo Then
     
        'si Non annule enregistrement
        Me.Undo
     
       Else
        'si oui bloque l'utilisateur dans ss formulaire
        Cancel = True
     
       End If
     End If
    End Sub
    ce code est sur l'evenement BeforeUpdate du sous formulaire lui même.
    et ça marche, le bouton étant sur le sous formulaire aussi bien sur sinon ça ne fonctionne pas.

    esperant t'avoir aidé, bon courrage
    a+

  12. #12
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci pour toutes vos réponse mais j'ai réussi à """" corriger """" mon problème ...

    Je vous explique ...

    Lorsque j'ouvre mon formulaire certains champs doivent être vierges (même si il y a une valeur qui est dans la table ) et les modifications que je voulais annuler se trouvaient sur un de ces champs donc ... mon problème est résolu ... ... à l'ouverture de mon formulaire j'affiche ces dits champs VIERGE ... et il n'y a plus de problème ... du moins pour l'application que je suis en train de faire ... c'est assez compliqué à comprendre ... la preuve j'ai compris seulement aujourd'hui que ces champs devaient être vierges alors que cela fait 5 mois que je suis sur ce projet ... ... et ouais ... c'est la dure loi de l'informatique quand on veut faire compliqué quand on peut faire simple ... lol ...

    Merci à tous pour vos réponses et pour votre aide ... à tout bienôt ....

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

Discussions similaires

  1. [Débutant] Enregistrer les modifications du Datagrid dans mes objets
    Par lerieure dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/09/2012, 16h24
  2. Réponses: 6
    Dernier message: 03/06/2010, 22h35
  3. enregistrer les modification de données sur une requete
    Par mnssylvain dans le forum WinDev
    Réponses: 2
    Dernier message: 24/02/2008, 14h16
  4. Réponses: 2
    Dernier message: 03/07/2007, 11h09
  5. Interdire les modifications des données dans une JTable
    Par markfish55 dans le forum Composants
    Réponses: 3
    Dernier message: 19/12/2006, 15h48

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