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 :

validation d'un controle dans un formulaire


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut validation d'un controle dans un formulaire
    j'ai crée un formulaire contenant un certains nombre de controles.
    Parmis ces controles il y a un champ texte NUM à renseigner
    je veux executer un petit programme qui verifie si la valeur du contenu du controle NUM existe dans une table appelée T_ass (champ NUM)
    si la valeur NUM existe déjà dans la table je veux afficher un message d'erreur sinon j'ajoute la valeur du controle NUM dans une table nommée intégration.
    Comment faire ?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Il serait intéressant de savoir quand est-ce que tu veux effectuer cette vérification. Si c'est au moment où tu fermes le fomulaire ou bien au moment où tu bascules sur un autre enregistrement.

    Sur le champ lui même, tu exécutes une procédure de vérification sur l'événement BeforeUpdate() soit par exemple:
    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 Function NumExiste(ByVal Num As Long) As Boolean
    Dim RS As Recordset
     
      On Error GoTo Err_Num
      Set RS = CurrentDb.OpenRecordset("SELECT Num FROm T_ass WHERE Num =" & Num, 2)
      With RS
        .OpenRecordset
          If .RecordCount > 0 Then
            NumExiste = True
          End If
        .Close
      End With
    Sortie_Num:
      Set RS = Nothing
      Exit Function
    Err_Num:
      NumExiste = False
      Resume Sortie_Num
    End Function
     
    Private Sub Num_BeforeUpdate(Cancel As Integer)
      If NumExiste(Num) Then
        MsgBox "La valeur NUM " & Trim(str(Num)) & " existe déjà dans la table !", 48, "Contrôle"
        Cancel = True
      End If
    End Sub
    A toi...

    Argy

  3. #3
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Salut, marjo20

    Si tu as un message d'erreur et que tu veux empêcher la saisie d'une valeur existant déjà dans l'autre table, il faut que tu places tes appels dans l'évènement Control_BeforeUpdate() (ou 'Control' est le nom de contrôle du champ texte NUM) : en mettant Cancel = True, tu empêcheras la saisie.

    En gros, quèque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Controle_BeforeUpdate(Cancel As Integer)
        If DLookup([NomChamp], "NomTable", "[NomChamp] = '" & Controle & "'") = Controle Then
            MsgBox "On l'a déjà", vbCritical, NomApplication
            Cancel = true 'on bloque la saisie
        Else
            AjouteValeur(Controle) 'routine qui ajoute un nouvel enregistrement
        EndIf
    End Sub
    Le temps de poster ça, je vois qu'on se croise avec Argyronet. Salut, Argy.
    2 remarques :
    - tu as un .OpenRecordset (le second) inutile (ça crée un clone que tu n'utilises pas !)
    - je préfèrerais un test sur .EOF ? (And .BOF ?) plutôt que sur .RecordCount, qui est moins fiable (faut avoir fait un .moveLast pour être sûr ; c'est vrai, je chipote un peu, mais c'est une meilleure habitude à prendre )

    Sinon,
    - je pense qu'en l'occurence, une fonction de domaine sera plus simple et + efficace, mais le résultat est le même
    - d'accord sur le code de l'évènement...

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour Papy,

    OK, je suggérerai du .EOF la prochaine fois.
    Perso, j'ai abandonné les fonction de domaine (que je suggère quand la personne ne manip pas très bien DAO).

    A+

    Argy

  5. #5
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par argyronet
    Perso, j'ai abandonné les fonction de domaine (que je suggère quand la personne ne manip pas très bien DAO).
    Moi aussi, dans les requêtes ou dans une boucle. Bref, elles ne sont pas super efficaces, mais je les garde dans les cas comme ici :
    - on a juste besoin d'une seule valeur,
    - y a pas plus simple.

    A ciao, bonsoir.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses. Je vais essayer de les appliquer

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/09/2006, 09h36
  2. déplacement des controles dans 1 formulaire ou etat
    Par arseno dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/08/2006, 19h59
  3. [C# Express]Modifier un control dans un formulaire
    Par mickey28 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/07/2006, 14h42
  4. Ajout de controls dans sous formulaire via VB
    Par sunvialley dans le forum IHM
    Réponses: 3
    Dernier message: 07/06/2006, 11h15
  5. taille d'un controle dans un formulaire
    Par kleenex dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2005, 09h41

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