|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
Bonjour,
Après Maj d'une zone de texte, je voudrais afficher un MsgBox si la valeur entrée est déjà présente dans un champs. Est ce que quelqu'un pourrait me dire comment s'y prendre? Merci d'avance |
|
|
00
|
|
|
#2 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Citation:
Peux-tu préciser ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
La zone de texte est dans un formulaire et elle est liée à un champs d'une table.
Une solution serait d'empêcher les doublons pour le champs en question, mais cela ne résout pas le problème d'affichage de la MsgBox. |
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Ok, une solution assez simple consiste à mettre un index unique sur le champ en question dans la table.
Si tu essayes d'entrer un seconde fois la même valeur Access va le refuser et renvoyer une erreur. C'est la solution la plus robuste car le contrôle est fait dans la table et aucun programme ne pourra le contourner. Une fois l'index créé, dans ton formulaire de saisie tu peux utiliser l'événement 'Sur Erreur' (ON Error) pour gérer ce cas et envoyer un jolis message à tes utilisateurs. Une autre solution consiste à mettre du code dans l'événement 'Avant MAJ' (beforeUpdate) du champ de saisie. Dans ce code tu contrôles si la donnée est déjà dans la table et tu annules la saisie si c'est le cas. Cette solution est moins sécuritaire car un autre formulaire pourrait entrer des données en double si aucun contrôle n'a été programmer. Une note à propos des indexs uniques : si la valeur du champ indéxé est 'Null' alors il n'y a pas de contrôle d'unicité. Tu peux donc te retrouver avec plusieurs enregistrements qui contiennent Null dans leur champ indéxé. Si tu as besoin de détails n'hésites pas à demander. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
Merci pour ta réponse.
Par rapport à ce que tu m'as dis, j'ai opté pour l'indexation sans doublon de mon champs. Donc j'ai entré sur l’événement "Sur erreur" du formulaire, le code suivant: Code :
Finalement ça ne marche pas. Est ce qu'il serait possible d'avoir un exemple de code pour contrôler si la donnée est déjà dans la table? je pense qu'il faut coder une requête, mais je sèche un peut. Merci |
||
|
|
00
|
|
|
#6 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Citation:
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Pour répondre à ta 2ième question, oui tu peux utiliser une requête mais tu peux aussi utiliser
DFirst("NomTonChamp","NomTaTable","[TonChamp]=" & TaValeur) si TonChamp est numérique DFirst("NomTonChamp","NomTaTable","[TonChamp]=""" & TaValeur & """") si TonChamp est aplhanum. ou DFirst("NomTonChamp","NomTaTable","[TonChamp]=#" & format(TaValeur,"yyyy-mm-dd" & "#") si TonChamp est une date. si Dfirst te retourne un null alors c'est que la valeur cherchée n'existe pas. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
La macro "Actualiser" est une macro access intégrée qui est placée sur "Après Maj" de la zone de texte. Elle me permet d'enregistrer ma valeur dans ma table. De ce fait, d'activer la recherche de doublon. Le problème est que lorsqu'il y a un doublon, elle ne peut pas terminer et plante.
Il doit surement avoir une autre solution. En ce qui concerne la deuxième partie, je la test tout de suite. Merci de prendre du temps pour répondre à des questions surement pas très compliquées. |
|
|
00
|
|
|
#9 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Ta données est enregistrée dans la source du formualire ou dans une autre table ?
Si tu as fait un formulaire liée à une source, et que ta données va dans cette source à priori tu n'a pas besoin de code pour enregistrer ta données. Access fait cela automatiquement. Essaye simplement en enlevant ta macro. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
Elle est enregistrée dans une autre table. Mais j'ai une dizaine de zones de texte à remplir avant de rentrer mon enregistrement. Donc je me sers de cet évènement pour vérifier s'il n'est pas déjà rentré (ça m'évite de tout renseigner pour rien).
A+ |
|
|
00
|
|
|
#11 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
OK, je vois et en effet un contrôle préalable est préférable mais garde quand même l'index unique cela blinde ta table et évite qu'un développeur contourne tes sécurités en accédant directement à ta table.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Inscription : mai 2011 Messages : 28 ![]() |
Bonjour,
Après quelques tests, le code de l'aide access c'est avéré le plus efficace. Donc pour finir: -Verrouillage du champs avec indexation sans doublons. -Code sur événement "Avant Maj" : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com