OVH Cloud OVH Cloud

Valeur par défaut

5 réponses
Avatar
Abraracourcix
Bonjour,

Dans un formulaire, je veux afficher par défaut le prix "catalogue" d'un
produit.
J'utilise pour cela une procédure "sur perte de focus" sur le champ
précédent "Produit" contenant
/// Me!Prix = Me!ProduitPrix

Le problème est que, si je repasse "malencontreusement" sur mon champ
"Produit", je relance ma procédure, et perds donc la valeur déjà validée.
Comment éviter ça ?
J'ai essayé
/// If Me!Prix = "" Then Me!Prix = Me!ProduitPrix
mais ça ne fonctionne pas.

Merci d'avance pour votre aide.

PG

5 réponses

Avatar
Raymond [mvp]
Bonjour.

essaie de tester la valeur Null:
If IsNull(Me!Prix) Then Me!Prix = Me!ProduitPrix
si le champ est Null et seulement Null le prix est chargé.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Abraracourcix" a écrit dans le
message de news:%
Bonjour,

Dans un formulaire, je veux afficher par défaut le prix "catalogue" d'un
produit.
J'utilise pour cela une procédure "sur perte de focus" sur le champ
précédent "Produit" contenant
/// Me!Prix = Me!ProduitPrix

Le problème est que, si je repasse "malencontreusement" sur mon champ
"Produit", je relance ma procédure, et perds donc la valeur déjà validée.
Comment éviter ça ?
J'ai essayé
/// If Me!Prix = "" Then Me!Prix = Me!ProduitPrix
mais ça ne fonctionne pas.

Merci d'avance pour votre aide.

PG




Avatar
Abraracourcix
Merci Raymond,

Ta réponse est la bonne.

Je vais abuser (j'ai honte) :
Un désagrément d'affichage : le champ "prix" de la ligne marquée d'une "*"
contient le message "#Nom?"
Peut-on éviter cela ?

Merci encore.

Raymond [mvp] wrote:
Bonjour.

essaie de tester la valeur Null:
If IsNull(Me!Prix) Then Me!Prix = Me!ProduitPrix
si le champ est Null et seulement Null le prix est chargé.

"Abraracourcix" a écrit dans le
message de news:%
Bonjour,

Dans un formulaire, je veux afficher par défaut le prix "catalogue"
d'un produit.
J'utilise pour cela une procédure "sur perte de focus" sur le champ
précédent "Produit" contenant
/// Me!Prix = Me!ProduitPrix

Le problème est que, si je repasse "malencontreusement" sur mon champ
"Produit", je relance ma procédure, et perds donc la valeur déjà
validée. Comment éviter ça ?
J'ai essayé
/// If Me!Prix = "" Then Me!Prix = Me!ProduitPrix
mais ça ne fonctionne pas.

Merci d'avance pour votre aide.

PG




Avatar
Raymond [mvp]
l'* est prévu pour protéger la somme ?
si oui, tu as plusieurs solutions:
par le format : exemple : *#0,00?
par la source : ="*" & [prix]*[qté] & "?"
la solution par le format étant la plus "normale"
etc etc.....;
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Abraracourcix" a écrit dans le
message de news:
Merci Raymond,

Ta réponse est la bonne.

Je vais abuser (j'ai honte) :
Un désagrément d'affichage : le champ "prix" de la ligne marquée d'une "*"
contient le message "#Nom?"
Peut-on éviter cela ?


Avatar
Abraracourcix
Je n'ai pas été assez précis.
Mon sous-formulaire est un tableau.
La dernière ligne est marquée d'un *. Elle est entièrement vide hormis ce
message.
Je pense que cela vient de la procédure : cette ligne est vide par nature,
et le code attend une information en provenance d'une valeur inexistante
dans la table de référence.

En fait, ce n'est pas vital, seulement "vilain"
Merci encore


Raymond [mvp] wrote:
l'* est prévu pour protéger la somme ?
si oui, tu as plusieurs solutions:
par le format : exemple : *#0,00?
par la source : ="*" & [prix]*[qté] & "?"
la solution par le format étant la plus "normale"
etc etc.....;

"Abraracourcix" a écrit dans le
message de news:
Merci Raymond,

Ta réponse est la bonne.

Je vais abuser (j'ai honte) :
Un désagrément d'affichage : le champ "prix" de la ligne marquée
d'une "*" contient le message "#Nom?"
Peut-on éviter cela ?




Avatar
Raymond [mvp]
Bonjour.

cette * placée à gauche de l'enregistrement, est sur la ligne de saisie d'un
nouvel enregistrement. soit tu interdis de saisir une nouvelle donnée et
cette ligne ne s'affichera pas soit tu places une valeur par défaut valide
dans la colonne en erreur.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Abraracourcix" a écrit dans le
message de news:
Je n'ai pas été assez précis.
Mon sous-formulaire est un tableau.
La dernière ligne est marquée d'un *. Elle est entièrement vide hormis ce
message.
Je pense que cela vient de la procédure : cette ligne est vide par nature,
et le code attend une information en provenance d'une valeur inexistante
dans la table de référence.

En fait, ce n'est pas vital, seulement "vilain"
Merci encore