|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Alain Inscription : janvier 2012 Messages : 39 ![]() |
Bonjour,
Prenons un exemple conceptuel de création d'une application Cahier des charges:
(suivant le modèle: Données ->Intervention Utilisateur ->Traitement ->résultat
Question: Lorsque la source d'une [zone de saisie de texte] est liée à un champ dont le type n'est pas texte, quels sont les moyens d'automatiser la correction d'une saisie générant une erreur de type ? exemple:
(PS:Je travaille sur access depuis 20 ans (inutile de me réinventer l'eau chaude), restez concis , merci) D'avance, merci de m'avoir lu jusqu'ici Alain. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Michel Ingénieur développement logiciels Inscription : mai 2005 Messages : 1 666 ![]() |
Euh ...
et c'est quoi la problématique ?
__________________
"Allways, look at the bright side of life." Monty Python. |
|
|
10
|
|
|
#3 | ||
|
Membre du Club
![]() Alain Inscription : janvier 2012 Messages : 39 ![]() |
Bonjour,
Une (re)présentation s'impose. (cfr http://www.developpez.net/forums/.../presentations/neurotransmetteur-bonjour/ Je suis concepteur/développeur gestionnaire et utilisateur de ma propre application de ma propre entreprise depuis 20 ans. J'ai le meilleur outil d'analyse comportemental des "End-Users" face à l'application : mes yeux (car ce sont mes employés). ![]() J'ai subi UNE seule destruction totale de la db en 20 ans. Mais je n'ai perdu aucune donnée car j'ai une classe M.E.L.A à ma sauce : exporter toute Modification, Effacement, Ajoute dans un fichier texte (effacé à chaque sauvegarde réussie). Access m'a toujours pleinement satisfait SAUF sur un point: EVENEMENT AVANT MISE A JOUR D'UN CONTROLE. ET le but de ce post est de m'enquérir de vos éventuels "trucs et astuces". Pour illustrer le cadre de mon interrogation où même Microsoft s'y perd, je vous affiche une page de l'aide ACCESS et leur exemple qui provoque un beau plantage. Options de Verrouillage général et du formulaire réglés sur AUCUN. Illustration de cette ambiguïté et de la propre confusion de M.S. à ce sujet <<Extrait de l'aide VBA au sujet de OldValue>> La propriété OldValue contient la valeur non modifiée d'un contrôle dépendant et n'est accessible qu'en lecture seule dans tous les modes. Vous ne pouvez accéder à cette propriété qu'à partir d'une macro ou de Visual Basic. Vous pouvez affecter la valeur de la propriété OldValue à une variable en utilisant la syntaxe suivante : OriginalValue = Forms!Customers!AmountPaid.OldValue Microsoft Access utilise la propriété OldValue pour stocker la valeur d'origine d'un contrôle dépendant. Lorsque vous modifiez un contrôle dépendant sur un formulaire, les modifications ne sont enregistrées que lorsque vous passez à un autre enregistrement. La propriété OldValue contient la version non modifiée des données sous-jacentes. Vous pouvez créer votre propre fonction d'annulation en attribuant à un contrôle la valeur de la propriété OldValue. L'exemple suivant vous montre comment annuler les modifications dans un contrôle de type zone de texte sur un formulaire : Exemple L'exemple suivant vérifie que la modification apportée à la valeur d'origine d'un champ est égale ou inférieure à 10 pour cent. Si elle est supérieure à 10 pour cent, la valeur d'origine est restaurée au moyen de la propriété OldValue. Vous pouvez aussi appeler cette procédure à partir de l'événement BeforeUpdate du contrôle qui contient les données à valider. Code :
En réalité, malgré ce que M.S. prétend, ce n'est pas réellement un événement avant mise à jour mais plutôt un événement pendant mise à jour( et donc limité à cancel=True/False ). Merci de vos lumières et de préciser si vous avez trouvé un moyen ou non de modifier les données avant mise à jour.(Voici une formulation plus simple de ma question.) Alain |
||
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 055 ![]() |
Bonsoir à tous,
Il n'y a pas d'ineptie dans le code proposé, tu oublies sûrement un mot important dans la phrase que tu soulignes Citation:
Lors de l'événement BeforeUpdate, il faut juste remplacer la ligne : Code :
Forms!Products!UnitPrice=curOriginalValue
|
|
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Alain Inscription : janvier 2012 Messages : 39 ![]() |
Bonjour,
Tout d'abord merci pour cette réponse. La problématique du code étant Code :
Forms!Products!UnitPrice = curOriginalValue
Citation:
Vous pouvez seulement appeler cette procédure à partir des événements AfterUpdate et postérieus du contrôle qui contient les données à valider (et donc avant la sauvegarde de l'enregistrement) Il est cependant décevant de ne pouvoir utiliser que UNDO (ou cancel) sur un événement BeforeUpdate. Il reste les procédures "keydowm" et la surveillance du survol de la souris vers un autre contrôle pour agir avant que la procédure update ne "cancel pas toute notre créativité" ![]() Point positif à l'actif d' Access c'est une meilleur gestion des saisies : (Par exemple : les anciennes versions n'acceptaient pas la saisie de date sous forme "01-03-2012", provoquant un message d'erreur.) les versions >2000 transforment le "01-03-2012" en 01/03/2012 . Preuve qu'il y a quand même moyen d'agir avant la mise à jour. Alain |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com