Avatar billede visto Professor
12. november 2024 - 17:21 Der er 6 kommentarer og
1 løsning

Tilpasset decimalvisning

Jeg har et indtastningsfelt, hvor det indtastede tal kan være på op til 14 decimaler. Det har jeg sørget for er tilfældet i bagvedliggende forespørgsel og tabel, så celler der bruger tallet fra indtastningsfeltet kan udregne med dette antal decimaler.
Jeg ønsker at visningen i indtastningsfeltet skal være med det samme antal decimaler, som de indtastede, når der indtastes fra 0 til 6 decimaler. Hvis jeg indtaster flere end 6 decimaler, ønsker jeg at der kun skal vises 6 decimaler.
Hvordan gør jeg det?
Avatar billede visto Professor
12. november 2024 - 17:51 #1
Jeg bruger den danske version af Office 2013.
Avatar billede Gustav Ekspert
12. november 2024 - 19:54 #2
Det tror jeg kun du kan med dynamisk formattering - altså ved formularens OnCurrent event at justere tekstboksen Format egenskab.
Det er forholdsvis nemt at finde tallets mantissa og dermed dennes længde og dermed det antal decimaler, der skal vises:
' Returns the mantissa of a decimal number as
' a string to preserve leading zeroes.
'
' Examples:
'  Mantissa(1234.56789)            -> "56789"
'  Mantissa(-1234.56789)          -> "56789"
'  Mantissa(1234.056789)          -> "056789"
'  Mantissa(-1234.056789)          -> "056789"
'  Mantissa(123456789)            -> ""
'  Mantissa(CDec(1) / CDec(11))    -> "0909090909090909090909090909"
'
' 2024-03-23. Gustav Brock, Cactus Data ApS, CPH.
'
Public Function Mantissa( _
    ByVal Number As Variant) _
    As String

    Dim Result      As String
    Dim Fraction    As Variant
   
    If IsNumeric(Number) Then
        Fraction = CDec(Number) - CDec(Fix(Number))
       
        If Fraction <> 0 Then
            ' Strip leading space and dot.
            Result = Mid(Str(Abs(Fraction)), 3)
        End If
    End If
   
    Mantissa = Result
   
End Function
En særlig delikat hændelse er den, hvor tallet er et heltal, og der dermed hverken skal vises decimaler eller decimalkomma.
Avatar billede visto Professor
12. november 2024 - 20:11 #3
Uha - det var en af de efter min smag indviklede løsninger. Min fantasi - som kan være forkert - er at der kunne være en enklere løsning uden brug af VBA. Så jeg afventer, om der kan komme en sådan.
Avatar billede Gustav Ekspert
13. november 2024 - 11:36 #4
Det nærmeste, du kan komme uden det store besvær, er nok at sætte tekstboksen således:

Format: 0,0#####
AntalDecimaler: Automatisk
Tekstjustering: Venstre
Avatar billede visto Professor
13. november 2024 - 11:51 #5
Ja, det virker sådan set. Eneste ulempe, er at ved helt tal (her 1), står 1,0 og ikke blot 1, og hvis jeg bruger format 0,###### vises helt tal som 1,
hvor jeg jo gerne var fri for kommaet.
Men jeg formoder, at det er begrænsningen ved at ty til den enkle løsning?
Avatar billede Gustav Ekspert
13. november 2024 - 12:10 #6
Netop.

En anderledes løsning kunne være at have en tekstboks til indtastning og en anden til visning. Den sidste kunne så have som ControlSource en funktion, der formatterede og returnerede tallet, som du vil have det. Det vil nok være nemmere end at styre formatet på tekstboksen.
Avatar billede visto Professor
13. november 2024 - 12:22 #7
Jeg kan godt leve med den foreslåede løsning.
Tak for din hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester