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 :

Condition de fermeture d'un formulaire


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut Condition de fermeture d'un formulaire
    Bonjour, je voudrais savoir si c'était possible de bloquer la fermeture d'un formulaire dans le cas où certains champs ne seraient pas remplis, ça reviendrait en fait à ne valider l'insertion d'un enregistrement que si ces champs sont bien remplis.

    Voilà, scusez moi de poser pleins de questions, mais en fait chuis en plein stage VB et je galère pas mal.

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    utilise l'événement Sur libération et si ton test n'est pas ok tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cancel = true 'annule la fermeture
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  3. #3
    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 : 40
    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
    Pour annuler la mise à jour, il faut utiliser l'évenement Before_Update du formulaire pour y faire les vérifications sur les controles. Si il faut annuler alors, il faut fixer Cancel=True dans l'évenement

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Ok j'essaie ça tout de suite, (FAW j'adore ta signature moi ça serait pareil avec VBA..), mais tantqu'à faire j'ai une autre petite question qui complèterai mon problème:

    en fait j'ai un formulaire et un sous-formulaire de cardinalité "plusieurs", donc je veux vérifier qu'il y ait au moins un enregistrement dans ce sous-formulaire, j'ai testé count(leChamp) mais ça marche pas.. donc si quelqu'un a une idée.

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie de prendre la valeur d'un contrôle et tu vérifie si elle est nulle ou pas.

    Pour résoudre ton problème, je fais un test sur le contenu des contrôles et si c'est le cas, j'affiche ou active le seul bouton qui me permet de fermer mon formulaire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    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 te conseille de regarder du côté de IsNull() et de recordCount (de recordSet)
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Essaie de prendre la valeur d'un contrôle et tu vérifie si elle est nulle ou pas.
    Je pensais faire exactement ça, mais au niveau du test, ça marche pas, vu qu'apres ajout d'un enregistrement dans le sous-formulaire, le champ nouvel enregistrement apparait vide, donc on ne peut pas tester ce contenu, enfin c'est ce que je constate.

  8. #8
    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 pige pas pourkoi récupérer les valeur avant d'ajouter l'enregistrement ne marche pas. Avec un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Form_Unload(Cancel As Integer)
        If (IsNull(Me.monChamp)) Then
            MsgBox ("Champ vide")
            Cancel = True
        Else
            ' ajout de l'enregistrement
        End If
    End Sub
    ca marche pas ?

    après à tester Me.monChamps.value et Me.monChamps.text (ca depend de ton type de controle ; sans rien ca prend value je crois...)
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  9. #9
    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 : 40
    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
    Le plus simple :

    Dans le sous formulaire, crée un champ nommé txtTotal et invisible dont la source est =Count(UnChampDuFormulaire)

    Ensuite dans ton formulaire principal, tu aura par exemple sur l'évenement Current :

    If Me.NomDuSousFormulaire.Form.TxtTotal=0 then msgbox "Sous form Vide"

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Non, pas de problème, ça marche parfaitement, le gros problème c'est de tester les données du sous-formulaire... ah ! tiens je viens de voir la réponse de tofalu, ki a l'air bonne mais par contre il ce champ est-ce qu'il va se mettre à jour au fur et à mesure ou est-ce qu'il faudrait pas rajouter un évenement genre requery ? Je teste ça et je vous dis..

  11. #11
    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 : 40
    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
    le champ txtTotal se mettra à jour tout seul.

    En tout cas, pour le rafraichir, ce ne sera pas la méthode Requery mais plutot Recalc. En effet, requery travail sur les sources de données, recalc, sur les sources de calcul. =Count() est un calcul

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    OK, ça marche ! Merci à tous de vous être intéressé à mon problème, c'est super sympa .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Unload(Cancel As Integer)
        If (IsNull(Me.[(Ajouter Article)].Form.Compte)) Or (Me.[(Ajouter Article)].Form.Compte = 0) Then
            MsgBox ("Vous n'avez pas rempli le type de l'article")
            Cancel = True
        Else
            ' ajout de l'enregistrement
            MsgBox ("OK")
        End If
    End Sub
    Par contre je me demandais, si le gars s'est trompé, il a aucun droit de modif ou de suppression, donc plutot que de l'empecher de partir, lui signaler que la transaction est annulée, ça serait pas mieux ?
    J'ai vu un truc du genre , attendez je teste et je reviens.. oops, je trouve plus la syntaxe, aidez-moi svp..

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Ok, bah abort, j'ai abandonné (jeu de mot...hum), apparement c'est vachement plus complexe que ce que je croyais, donc je vais créer une macro qui va effacer les enregistrements non complets et qui s'exécutera apres chaque exit mal fait, l'exec sera peut etre plus longue, mais pour l'instant c'est le mieux que j'ai trouvé. Je mets pas encore le tag "Resolu" au cas où vous auriez d'autres alternatives. Voilà @+.

    PS:quelqu'un sait comment éxécuter une requete Access en VB ?
    [EDIT] c'est bon j'ai trouvé, j'avais oublié les guillemets autour du nom... désolé.

  14. #14
    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 : 40
    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
    Pour annuler la saisie dans le formulaire, utilise :

    Me.Undo

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    En fait :
    ça efface juste les champs du formulaire, moi ce que je voulais c'était annuler la transaction, mais j'ai trouvé une parade :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenQuery ("EffacerArticlesSansType")
    ça efface en fait tous les articles qui n'apparaissent pas dans la table de référencement des types. Voilà, ça marche parfaitement pour ce que je veux faire, donc problème résolu ! Merci à tous de votre collaboration

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2009, 14h16
  2. [C#]Empecher la fermeture d'un formulaire
    Par jojo-la-praline dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/04/2006, 09h22
  3. Comment annuler la fermeture d'un formulaire?
    Par charleshbo dans le forum Access
    Réponses: 7
    Dernier message: 13/04/2006, 17h45
  4. [C#] Empecher la fermeture d'un formulaire
    Par seito dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/04/2006, 16h33
  5. Conditions pour remplissage d'un Formulaire
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 15/12/2005, 15h36

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