1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Questions générale
Sujet n° 334 |
date regle de validation |
le 03/03/2010 : 00:44 par ingal30
visiteur |
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: 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 |
|
|
Réponse n° 1 -------- le 03/03/2010 : 04:40 par 3Stone
Administrateur
|
Bonjour,
Pour cela, il faut : la table T_Patients avec les champs ID_Patient, NomPatient, AdressePatient, DateNaissance, DateDeces, etc. la table T_Diagnostic avec les champs ID_Diagnostic, ID_Patient, DateDiagnostic, etc.
On créera une relation 1 à plusieurs entre ID_Patient (T_Patients) et ID_Patient (T_Diagnostic)
Le formulaire frmPatients aura comme source la table T_Patients. Ce formulaire possèdera un sous-formulaire sfDiagnostic avec comme source la table T_Diagnostic. Cette disposition est quasiment obligatoire pour un fonctionnement parfaitement automatique des relations. Elle permet également d'accéder très simplement au champ des deux tables.
Tous les contrôles par rapport à la date de diagnostic se fera dans la Sub de l'événement "Avant mise à jour" de la ZdT (zone de texte) DateDiagnostic du sous-formulaire.
Le code sera une adaptation de ceci :
Code : Private Sub DateDiagnostic_BeforeUpdate(Cancel As Integer) Dim sMsg As String 'Vérifier date naissance If Me.DateDiagnostic < Me.Parent.DateNaissance Then Cancel = True MsgBox "Corrigez la date du diagnostic." End If 'Vérifier date décès If Me.DateDiagnostic > Me.Parent.DateDeces Then Cancel = True MsgBox "Date impossible!" ElseIf Me.DateDiagnostic = Me.Parent.DateDeces Then sMsg = "Date du diagnostic est égal à la date de décès." _ & vbCrLf & "Accepter cette date malgré tout ?" If MsgBox(sMsg, vbQuestion + vbYesNo, "Vérifiez...") = vbNo Then Cancel = True End If End If End Sub
Cordialement, Pierre(3stone) |
|
|
Réponse n° 4 -------- le 05/03/2010 : 21:16 par ingal30
visiteur |
Merci bcp pour la correction je vais essayer de nouveau.
Question bête que signifie "Parent" dans "Me.parent"?
Désolé mais je suis une débutante en programmation |
|
|
Réponse n° 5 -------- le 06/03/2010 : 13:32 par 3Stone
Administrateur
|
Bonjour,
Le code étant placé sur un événement d'un textbox d'un sous-formulaire, il faut donc pouvoir s'adresser à un textbox du formulaire principal. Code :Me.Parent!LeTextbox
signifie donc simplement : Me = formulaire actuel ou est exécuté le code Parent = le formlaire "parent", le formulaire qui contient l'actuel.
En fait, cela défini le chemin inverse de Me.SousFormulaire.Form qui va du formulaire principal vers le sous-formulaire... Me.Parent va donc du sous-formulaire vers le formulaire principal.
Cordialement, Pierre(3stone) |
|
|
Réponse n° 6 -------- le 06/03/2010 : 15:51 par ingal30
visiteur |
Bonjour merci pour l'explication, je vais verifier si tout fonctionne.
Y a t il la possiblite d'adresser une piece jointe dans les messages?
Merci |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|