Forum - Questions générale - Sujet n°334

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par 3Stone le 27/03/2010 : 01:04  Sujet n° 334  date regle de validation

le 03/03/2010 : 00:44
par ingal30

Anonyme

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
 sujet clos  Haut

[]   

Réponse n° 1
--------
le 03/03/2010 : 04:40
par 3Stone

Anonyme

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)
  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 2
--------
le 03/03/2010 : 14:52
par ingal30

Anonyme

visiteur

Bonjour merci bcp d'avoir repondu facilement mais que veut dire &quot,et & vbCrLf  je ne comprends pas merci de m'expliquer car j'ai mis le code et ça me met erreur de syntaxe et souligne MsgBox &quot;Date impossible!&quot;

  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 3
--------
le 03/03/2010 : 16:56
par 3Stone

Anonyme

Administrateur

Bonjour,

 
Citation :

ça me met erreur de syntaxe et souligne MsgBox &quot;Date impossible!&quot;

 
J'ai corrigé le code...
C'est un problème de remplacement de caractères html induit pas le système de sécurité du site d

De toute façon, il ne faut pas faire un simple copié/collé du code, mais l'écrire dans l'éditeur du VBA d'Access. Sinon tu risque des erreurs de codage.

Cordialement,
Pierre(3stone)
  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 4
--------
le 05/03/2010 : 21:16
par ingal30

Anonyme

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

  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 5
--------
le 06/03/2010 : 13:32
par 3Stone

Anonyme

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)
  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 6
--------
le 06/03/2010 : 15:51
par ingal30

Anonyme

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

  clos par 3Stone le 27/03/2010 : 01:04  Haut
Réponse n° 7
--------
le 06/03/2010 : 18:38
par 3Stone

Anonyme

Administrateur

Bonjour,
 
Citation :

Y a t il la possiblite d'adresser une piece jointe dans les messages?

 
Non, mais on peut toujours placer un fichier sur un site tel que celui-ci et transmettre le lien wink

Cordialement,
Pierre(3stone)
  clos par 3Stone le 27/03/2010 : 01:04  Haut
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut