Bonjour,
Bien que le sujet ai probablement été traité, pour m'assurer que j'ai bien fait le tour de la question (à priori non), voici un souci de transmission de valeurs numériques d'une Listbox vers une table:
Travaillant sur un formulaire de conception de gamme industrielle...
A partir d'un formulaire de saisie, dans une zone appelée nPers (pour effectif = nombre de personnes), j'entre l'effectif pour une gamme opératoire.
Cette valeur peut-être décimale, 1,2 ... 3,6, etc... (résultat de ratii de SMED).
En validant l'entrée par la voie d'un bouton, une commande DoCmd.RunSQL(syntaxe) modififie la valeur dans une table où cette valeur est formatée en "Réel Simple" à 1 décimale,en utilsant une variable intermédiaire "fnPers" telle que :
La syntaxe est du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim fnPers As Single fnPers = Me!nPers
Or, en lisant la table, la valeur est systématiquement arrondie. il n'y a jamais de décimales en dehors de "00".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cmdSQL = "UPDATE tab_gammeComposants SET " & _ "......." & ",nPers=" & fnPers & " WHERE cle=" & laclef & ";"
Par les diverses transformations que voici...
...rien n'y fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 fnPers = Round(fnPers, 2) fnPers = Replace(fnPers, ",", ".") fnPers = CDec(FormatNumber(fnPers, 1)) fnPers = Replace(CStr(Format(fnPers, "0,0")), ",", ".") fnPers = CDec(fnPers)
La valeur en ListBox est de type String, me semble-t-il, et toute conversion s'avère infructueuse.
Que peut-il manquer dans la chaine de transmission selon vous pour que la valeur de la zone de saisie soit bien digérée par la table ?
(En gamme les décimales sont importantes au plan des coûts.)
Si une piste, merci de m'orienter.
Partager