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 :

Comment vérifier de façon générique que des contrôles obligatoires sont saisis [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut Comment vérifier de façon générique que des contrôles obligatoires sont saisis
    Bonjour à tous,

    Voici mon problème :

    1 - J'ai réalisé plusieurs formulaires de saisie, chacun alimenté par une requête plus ou moins complexe (une vue) basée sur une table différente mais ramenant des informations liées dans d'autres tables.

    2 - Lors de la validation de la saisie d'un enregistrement dans un quelconque de ces formulaires, je souhaite vérifier par code VBA que les contrôles, dont la source est un champ déclaré obligatoire dans la table sur laquelle est basée la requête d'alimentation du formulaire concerné, sont bien renseignés et donc non null.

    3 - Je souhaite effectuer cette vérification de façon générique tel que :

    Pour chaque contrôle du formulaire
    si contrôle = obligatoire alors
    si contrôle = renseigné alors
    OK on passe au contrôle suivant
    sinon
    Message d'alerte et sortie boucle Pour (en fait on interdit en conséquence la sortie du formulaire jusqu'à ce que le contrôle en question soit saisi)
    fin si
    fin si
    on passe au contrôle suivant
    fin pour

    DONC : comment réaliser le test "contrôle = obligatoire" ?

    Si qq'un dispose de la solution car là je tourne en rond et manifestement je ne sais pas faire ou bien je ne vois pas comment faire .

    D'avance MERCI de votre aide
    Cordialement
    oracle7556

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Bonjour,

    Le nom du champ te permet-il de déterminer s'il doit intervenir ?

    Ex les contrôles de ce type commencent tous par xxxx
    Autre exemple : leur nom = celui de la source
    Autre exemple : tous les contrôles de tels types (zone de texte, zone de liste..)

    En d'autres mots y a-t-il, une logique qui permet de dire que ce contrôle doit être complété ?

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Essaie ceci, associé par exemple au clic d'un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ctl As Control
    For Each ctl In Me.Controls
       If IsNull(ctl) Then MsgBox ctl.Name & " n'est pas valide"
    Next ctl

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut ClaudeLELOUP et oracle7556,

    mettre la propriété du champ 'null interdit' à 'Oui' ne pourrait pas te suffire ?

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut
    Bonjour ClaudeLELOUP

    1 - Merci de votre réponse rapide.

    2 -
    En d'autres mots y a-t-il, une logique qui permet de dire que ce contrôle doit être complété ?
    Malheureusement NON.
    Mes champs sont nommés tels que :
    XXX_NUM : avec XXX = trigramme de la table, ce sont des champs de clés ou de liens avec une autre table
    XXX_Y_ZZZZZZZZ : avec Y = code du type du champ (A ALPHANUM, L LONG, E ENTIER, T TEXTE, ....) et avec ZZZZZZZZ = libellé libre
    En aucun cas je n'ai prévu de signe distinctif pour indiquer que le champ est obligatoire ou non (saisie = not null).

    3 - Votre exemple de code correspond à une partie du pseudo code que j'ai indiqué dans mon premier post.
    Désolé mais il a malheureusement le défaut de signaler TOUS les champs non saisis sans exception et ce n'est pas le but recherché car d'une part tous les champs ne sont pas obligatoires en saisie et d'autre part cela générerait trop de messages d'alerte qui alourdiraient la validation du formulaire.
    Il n'est donc pas suffisant à mon besoin.

    Cordialement
    oracle7556

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut
    Bonjour vodiem

    mettre la propriété du champ 'null interdit' à 'Oui' ne pourrait pas te suffire ?
    C'est déjà en place au niveau des tables. il me faut maintenant récupérer facilement cette info pour la tester dans ma fonction (voir premier post)

    Cordialement
    oracle7556

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Si la suggestion de Vodiem (que le salue!) ne te suffit pas, tu pourrais te servir de la propriété "Remarque" (Tag) des contrôles concernés pour déclencher le processus de manière sélective.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    si c'est mis au niveau des tables c'est normalement suffisant puisque l'enregistrement ne pourra passer la validation.

    mais bon, une solution à ton pb serait d'utiliser la propriété remarque du control.
    et dans ta boucle vérifier que la propriété 'tag' a la valeur que tu auras mis ex: 'obligatoire' (ou non null)


    ps: ClaudeLELOUP tu m'as devancé ;p

  9. #9
    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
    peut-être en utilisant l'attribut Required du champ pour savoir s'il est requis :

    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
     
    Dim loCtl As Access.Control
    Dim lRequired As Boolean
    ' Pour chaque contrôle
    For Each loCtl In Me.Controls
        ' Recherche si le contrôle a un champ comme source
        '    et si le champ est requis
        lRequired = False
        On Error Resume Next
        lRequired = Me.Recordset.Fields(loCtl.ControlSource).Required
        On Error GoTo 0
        ' Si champs requis
        If lRequired Then
            ' Si contrôle vide
            If Nz(loCtl.Value, "") = "" Then
                ' Avertissement
                MsgBox loCtl.Name & " obligatoire!"
                ' Un seul avertissement => on sort
                Exit For
            End If
        End If
    Next
    (si besoin, rebrancher la gestion d'erreurs à la place du On Error Goto 0)

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    pour vodiem : Ok Vodiem mais Arkham46, c'est encore autre chose !

    pour Arkham46 :

    pour oracle7556 : merci d'être venu !

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut
    Bonjour Arkham46

    1 - Énorme MERCI : c'est exactement ce que je voulais.
    Je garde précieusement le truc pour exploiter une propriété d'un champ source d'un contrôle de formulaire. C'est justement sur ce point que je butais.
    Au final, je n'ai qu'à compléter votre exemple de code pour adapter le traitement selon le type du champ obligatoire (Numérique en plus de alphanumérique) et ce sera parfait.

    2 - Un grand MERCI aussi à vous deux ClaudeLELOUP et vodiem d'avoir bien voulu consacrer un peu de votre temps pour m'aider.

    3 - Je considère le post comme résolu.

    Merci encore de votre aide à tous.
    Cordialement
    oracle7556

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/08/2011, 14h31
  2. Réponses: 1
    Dernier message: 26/09/2010, 19h28
  3. Réponses: 7
    Dernier message: 04/09/2009, 21h48
  4. Réponses: 4
    Dernier message: 11/09/2008, 19h55
  5. comment imposer de ne rentrer que des numérique dans un Edit?
    Par UnSofteuxAmateur dans le forum Delphi
    Réponses: 4
    Dernier message: 23/10/2006, 14h23

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