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

VBA Access Discussion :

Annuler une entrée dans un sous-formulaire - Une autre solution? [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut Annuler une entrée dans un sous-formulaire - Une autre solution?
    Bonjour,

    J'ai un formulaire indépendant et un sous formulaire en mode feuille de données.
    Dans le formulaire parent j'ai une combobox qui permet de choisir la valeur d'un champs. Une fois ce champs choisi, j'actualise le sous-formulaire pour afficher les enregistrements qui correspondent à la valeur choisie.
    Pour eviter que l'utilisateur puisse entrer quoique ce soit dans le sous formulaire (il peut commencer toutefois à y tapper un début de quelque chose) sans avoir préalablement sélectionné une valeur, j'ai fait une fonction sur l'événement before insert du sousformulaire (voir ci-dessous).
    Cette fonction teste deux champs du formulaire parent et s'ils sont vides (donc erreur causée par l'absence de choix de la combobox) lance un code qui rends le focus à la combobox, envoie un message et surtout efface dans la table associée au sous-formulaire l'enregisterement qui vient d'être entré.

    Ca fonctionne mais ca ouvre en arrière plan la table ce qui n'ets pas très esthetique...

    J'avais essayé avec Cancel = True ou DoCmd.CancelEvent mais ca ne marche pas


    Avez-vous une solution plus partique et light qui permette que l'info entré par un utilisateur ne puisse pas etre introduit dans la base associé(sans passer par une table temporaire)?

    Merci :-)

    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
    20
    21
    22
    23
    24
    25
    26
     
    Private Sub Form_BeforeInsert(Cancel As Integer)
     
    On Error GoTo Err_Form_BeforeInsert
     
        Me.NumCD = Me.Parent.txtnumcd
        Me.NumMIC = CStr(Me.Parent.txtnummic)
     
    Exit_Form_BeforeInsert:
        Exit Sub
     
    Err_Form_BeforeInsert:
     
        MsgBox Err.Description & " - Veuillez choisir un dossier , SVP!"
        DoCmd.GoToControl Me.Parent!cmbEmerg.Name
        DoCmd.OpenTable "NbrEmergence", , acEdit, acHidden
     
        DoCmd.GoToRecord acDataTable, "NbrEmergence", acLast
        DoCmd.RunCommand acCmdDeleteRecord
        DoCmd.Close acTable, "NbrEmergence", acSaveYes
     
        Me.Requery
     
        Resume Exit_Form_BeforeInsert
     
    End Sub

  2. #2
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 363
    Points
    1 363
    Par défaut
    Effectivement, il y a plus simple, avec le BeforeInsert et le Cancel.
    En fait tu peux directement aller voir dans la forme parent plutôt que de passer via la table de donnée sous-jacente.

    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
    Private Sub Form_BeforeInsert(Cancel As Integer)
     
    Dim frm as Form_frmParent
    Set frm = Forms("frmParent")
     
    ' On vérifie si dans le record actuellement affiché dans la forme parent
    ' les champs attendus sont bien remplis
    if ((frm.NumCD = "") or (isNull(frm.NumCD))) then
        ' Pas remplits => stop
        MsgBox "....."
        Cancel=true
        exit sub
        end sub
     
    ' Remplits => ok
    ...

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut

    Bon comme quoi... pourquoi chercher midi à 14 h?
    Je teste ça demain!

    Merci Ivr (mon presque homonyme ;-) )

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Bonjour!

    Ivr J'ai donc testé ta proposition qui est ok. Merci
    Toutefois j'ai préféré une autre solution qui consiste à fournir d'office un contenu (contenu qui dépends du bouton qui appelle le formulaire) à la combobox ce qui fait que celle-ci n'est jamais vide et ca propose à l'utilisateur le premier enregistrement qur lequel il peut travailler. PLus cool pour lui je trouve.

    Merci encore!!
    Et à bientôt!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2007, 14h24
  2. Surligner une ligne dans un sous formulaire
    Par Renardo dans le forum Access
    Réponses: 2
    Dernier message: 30/09/2006, 14h44
  3. Lancer une fonction dans un sous formulaire
    Par malingue dans le forum Access
    Réponses: 4
    Dernier message: 20/06/2006, 11h33
  4. une saisie dans un sous formulaire
    Par T'chab dans le forum Access
    Réponses: 3
    Dernier message: 05/05/2006, 09h01
  5. Réponses: 3
    Dernier message: 25/11/2005, 14h51

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