Newsgroup: it.comp.appl.access
Titolo: Spin Button. Il valore maggiore di zero non ritorna a zero quando si utilizza il pulsante riduci valore.

Access 00/XP
Ciao e buona estate,
    quando vado ad utilizzare il pulsante per ridurre il valore, con  il 
controllo associato al codice sotto scritto, in realtà non ritorna zero, 
bensi restituisce un valore che varia sempre, tipo   2,042949E-06 oppure 
1,952052E-07 oppure altro valore simile.
    Sapreste indicarmi il perchè e come risolvere il problema, diversamente 
dovrò digitare il valore manualmente.
    Preciso che la dimensione del campo in tabella è a "Precisione singola".
    Ho la necessità di risolvere tale problema per poter utilizzare la 
seguente formula: 
=IIf([RV]="";"";IIf([VarMagn]<>0;Format([RV]-([VarMagn]);"0,0");Format([RV]-(Maschere!frmFlightLog!VarMagnLog);"0,0")))
Purtroppo se il valore del campo [VarMagn] non ritorna a zero non mi 
permette di utilizzare l'altro valore contenuto nel campo 
"Maschere!frmFlightLog!VarMagnLog".
Grazie, Bruno
----------------------------------
' Su pressione pulsante incrementa valore proprietà (numerica) del controllo 
<CtrName>
Private Function ValIncrementaBis(CtrName As String, ByVal Sup As Long)
  With Me.Controls(CtrName)
        If .Value + 0.2 <= Sup Then
              .Value = .Value + 0.1
                Me.Repaint
        End If
  End With
End Function
' Su pressione pulsante riduce valore proprietà (numerica) del controllo 
<CtrName>
Private Function ValRiduceBis(CtrName As String, ByVal Inf As Long)
  With Me.Controls(CtrName)
        If .Value - 0.1 >= Inf Then
              .Value = .Value - 0.1
                Me.Repaint
        End If
  End With
End Function

 ha scritto nel messaggio
news:46c0bd42$0$17952$4faf...@reader1.news.tin.it...

Bruno ma tu di che precisione e di che tipo di valore hai bisogno...?
Ti chiedo questo in quanto conosco bene quella funzione.... ;-)
e come vedi il parametro passato è di tipo LONG e non SINGLE quindi il campo
dovrebbe essere [Intero Lungo].... hai verificato...?
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 End Function
Ciao Bruno,
il comportamento che riscontri è normale per i tipi di dato approssimati 
come Singola Precisione e Doppia Precisione.
Infatti il valore 2,042949E-06  è prossimo a 0.
Per risolvere fai lavorare il calcolo su un tipo di dato non approssimato.
es.
----
 Private Function ValIncrementaBis(CtrName As String, ByVal Sup As Long)
  With Me.Controls(CtrName)
        If CDec(.Value) + 0.2 <= Sup Then
              .Value = CDec(.Value) + 0.1
                Me.Repaint
        End If
  End With
 End Function
 ' Su pressione pulsante riduce valore proprietà (numerica) del controllo
 <CtrName>
 Private Function ValRiduceBis(CtrName As String, ByVal Inf As Long)
  With Me.Controls(CtrName)
        If CDec(.Value) - 0.1 >= Inf Then
              .Value = CDec(.Value) - 0.1
                Me.Repaint
        End If
  End With
 End Function
----
è sufficiente la conversione di un solo membro dell'espresione in Decimal 
per ottenere il risultato desidarato perchè Decimal ha la precedenza su 
tutti gli altri tipi.
Ciao
--
Giorgio Rancati
[Office Access MVP] 

 ha scritto nel messaggio 
news:f9qfec$gsi$1...@aioe.org...

Ciao Alessandro, il valore che devo ottenere gradi e decimi di grado, 
esempio: 0,7 oppure 1,2.
Hai ragione  per il parametro LONG e non SINGLE, ora vedo cosa riesco a 
fare.
Grazie, Bruno 

 ha scritto nel 
messaggio news:46c0c74d$0$21210$5fc...@news.tiscali.it...

________________________
Grazie Giorgio, ora provo la tua variante.
1000 grazie, Bruno 

 Grazie, Bruno
Mi riferivo che la funzione originale dalla quale hai preso spunto č stata
fatta per
un LONG(Intero Lungo) in tabella, associato al Colore che č appunto un Long,
quindi il problema che hai riscontrato non esisteva.
Quanto ti ha suggerito Giorgio risolve tutto.
