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 :

Regle de validation sur des champs dates dans des tables différentes


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Regle de validation sur des champs dates dans des tables différentes
    Bonjour,

    Je voudrais appliquer une regle de validation, mais les champs se trouvent dans 2 tables différents.
    Je suppose que l'on peut le faire avec If...Then...else
    Pouvez-vous m'aider SVP

    Il s'agit de 3 champs dates

    Un champ "date diagnostic" qui se trouve dans une "table diagnostic" et 2 champs "date de naissance" et "date de deces" qui se trouvent dans une "table patient".
    Ces champs sont dans des formulaires différents

    1)"date de naissance" et "date de deces" dans un formulaire "frmPtaient"
    2)date diagnostic dans un formulaire "frmDiagnostic"

    Je voudrais une fois saisie terminée, controler la saisie faite:
    A) le champ "date diagnostic" doit être totalement différent de la "date de naissance" et avoir le message qui le dit(exemple: la date de naissance doit etre différente de la date de diagnostic)et annuler donc la saisie.

    B) La "date de naissance" doit être totalement différente de "date de deces" et avoir même message que A

    C) La "date diagnostic" pouvant être égale à la "date de deces", (on peut faire un diagnostic à quelqu'un et il meurt le même jour), il faudrait juste attirer l'attention pour dire "votre date de diagnostic est identique à votre date de décès, vous confirmez: oui(garde la saisie), non (annule la saisie).

    Merci bcp pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjour et bienvenu,
    pour rechercher un enregistrement dans une table il faut utiliser les "fonctions de domaine".
    en l'occurence :

    RechDom dans un formulaire ou requête via le "Generateur d'expression".

    où DLookup en VBA.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par LE VIEUX Voir le message
    bonjour et bienvenu,
    pour rechercher un enregistrement dans une table il faut utiliser les "fonctions de domaine".
    en l'occurence :

    RechDom dans un formulaire ou requête via le "Generateur d'expression".

    où DLookup en VBA.
    Bonjour,

    Je sui désolée mais je n'ai pas du tout compris votre réponse, je ne veux pas chercher un enregistrement dans une table mais mettre une regle de validation sur d'un champ date qui se trouve dans une table par rapport a un autre champ date qui se trouve dans une autre table.
    Comme je l'ai dit dans mon message c'est pour controler la saisie une fois que ces champs sont renseignés.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir ou bonjour,

    je ne veux pas chercher un enregistrement dans une table mais mettre une regle de validation sur d'un champ date qui se trouve dans une table
    pour faire la comparaison il faut bien aller chercher la valeur de comparaison dans la table d'ou en l'occurence le "DLookup".
    regardes les exemples joints, mais au passage :
    on peut malheureusement mourir le jour de sa naissance !.
    je t'ai mis quand même le code qui va dans le formulaire patient sur l'évènement avant mise à jour du champ date_de_deces.
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Date_de_deces_BeforeUpdate(Cancel As Integer)
    If Me.Date_de_deces = Me.Date_de_naissance Then
    m = MsgBox("Vous ne pouvez pas saisir une date décès le meme jour que la date de naissance", , "ERREUR")
    Cancel = True
    Me.Date_de_deces.Undo
     
    End If
     
    End Sub
    pour les autres validations le code est sur le champ "date_diagnostic" du formulaire fmr_diagnostic :
    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
    Private Sub date_diagnostic_BeforeUpdate(Cancel As Integer)
    If Me.date_diagnostic = DLookup("Date_de_naissance", "tbl_patient", "N° =" & Me.patient) Then
    m = MsgBox("La date diagnostic doit être differente que la date naissance", vbOKOnly, "ERREUR")
    Cancel = True
    Me.date_diagnostic.Undo
    End If
    If Me.date_diagnostic = DLookup("Date_de_deces", "tbl_patient", "N° =" & Me.patient) Then
    mes = MsgBox("votre date de diagnostic est identique à votre date de décès, vous confirmez ?", vbYesNo, "ATTENTION")
    If mes = 6 Then
    Exit Sub
    Else
    Cancel = True
    Me.date_diagnostic.Undo
    End If
     
    End If
     
    End Sub
    pour voir ce que cela donne ci joint petite table contrôle à adapter à tes besoins.
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut regle de validation de champ date dans des tables différentes
    Bonjour,

    Merci bcp le premier code fonctionne très bien mais j'ai un souci pour le deuxième.
    Pouvez-vous me dire à quoi correspond "patient" dans "Me.patient", visiblement cela semble être la clé étrangère de la table diagnostic.
    J'ai un message d'erreur qui me souligne "patient".
    Ma clé étrangère de la table diagnostic pour la reconnaitre de la clé étrangère j'ai mis un signe # devant.
    Je ne sais pas si le problème vient de là. Mais j'ai enlevé le # j'ai le même problème.

    Merci d'avance

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    Dans l’exemple, base jointe, le champ patient de « tbl_diagnostic » et « fmrl_diagnostic » a pour valeur la clé primaire de la table tbl_patient soit « N° » (voir dans la table tbl_diagnostic - champ patient- liste de choix) elle n’apparait pas dans la zone de liste car j’ai laissé cette colonne cachée (recommandé) cela veut dire qu’en cliquant sur DUPONT dans le champ patient on récupère sa clé primaire soit 2 dans la table tbl_patient et c’est cette valeur qui est passée en critère de recherche de DLookup pour identifier exactement le champ recherché dans la table tbl_patient.
    Au passage pour faire vite, j’ai fait une erreur de débutant en laissant « N° » comme nom de clé primaire dans les 2 tables – il faut modifier par ID_Patient et ID_diagnostic.
    Si tu as du mal à adapter, poste le nom des tables et leurs champs exact de ta base ou une base expurgée.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par LE VIEUX Voir le message
    Bonjour,
    Dans l’exemple, base jointe, le champ patient de « tbl_diagnostic » et « fmrl_diagnostic » a pour valeur la clé primaire de la table tbl_patient soit « N° » (voir dans la table tbl_diagnostic - champ patient- liste de choix) elle n’apparait pas dans la zone de liste car j’ai laissé cette colonne cachée (recommandé) cela veut dire qu’en cliquant sur DUPONT dans le champ patient on récupère sa clé primaire soit 2 dans la table tbl_patient et c’est cette valeur qui est passée en critère de recherche de DLookup pour identifier exactement le champ recherché dans la table tbl_patient.
    Au passage pour faire vite, j’ai fait une erreur de débutant en laissant « N° » comme nom de clé primaire dans les 2 tables – il faut modifier par ID_Patient et ID_diagnostic.
    Si tu as du mal à adapter, poste le nom des tables et leurs champs exact de ta base ou une base expurgée.
    Fichiers attachés Fichiers attachés

  8. #8
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 619
    Points : 56 854
    Points
    56 854
    Billets dans le blog
    40
    Par défaut
    bonsoir,

    Citation Envoyé par ingal30 Voir le message
    Je voudrais appliquer une regle de validation, mais les champs se trouvent dans 2 tables différents.
    une possibilité est de passer une (ou plusieurs) contrainte avancée CHECK par jointure en VBA (voir III. Contraintes par jointure).

Discussions similaires

  1. [Débutant] Gérer des champs Dates dans Excel via un Add-in C#
    Par Ender75 dans le forum C#
    Réponses: 3
    Dernier message: 20/11/2014, 16h20
  2. [XL-2007] Pb Macro : Incrementation de date dans des champs spécifique
    Par sly77400 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2014, 09h39
  3. Réponses: 1
    Dernier message: 27/04/2012, 16h41
  4. Insert dans des champs INT avec des doubles quotes
    Par bannik dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/04/2008, 17h44
  5. controle sur un champ date dans un formulaire
    Par fraizas dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/03/2007, 13h17

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