Avatar billede Louise1985 Mester
07. februar 2017 - 13:18 Der er 6 kommentarer

MAFRUND eller MROUND i Access

Hej

I Excel findes MAFRUND funktionen der afrunder til hele multiplum. Den har jeg brug for at bruge i Access - den findes desværre ikke. Nogle der har en idé til hvordan den kunne løses? Multiplum kan være forskellig fra entry til entry.
Eksempel:
Varenr.    Opt ordrestr  Multiplum
123                10                100
1234                20                50

Her ønsker jeg (ligesom MAFRUND-funktionen gør) at den tager de 100 for Varenummer 123 og de 50 for varenummer 1234.

Pft. mange tak for jeres inputs!

/Louise
Avatar billede terry Ekspert
07. februar 2017 - 13:33 #1
havent tried this but heres a link I just found, sure there will be others

https://www.pcreview.co.uk/threads/access-function-like-excel-mround-function.3778485/

Your questions seems top contain two problems, one a replacement for MROUND and another, how to use values from two records?
Avatar billede Louise1985 Mester
08. februar 2017 - 08:20 #2
Hej Terry
Jeg har faktisk kigget på den tråd før - min udfordring er at jeg skal kunne lave en formel der afrunder til næste hele multiplum og ikke kvartal - men multiplum er forskellig fra varenr til varenr.

Min excelfunktion ser således ud:
=MAFRUND(TAL;MULTIPLUM)

Hvordan kan jeg oversætte det til Access sprog? Enten via SQL eller en formel...

Jeg har fundet dette script, men jeg kan ikke finde ud af om det gør det rigtige:

Function wMRound(pValue As Double, multiple) As Double
    Dim negNumber As Boolean
    If pValue < 0 Then
        pValue = 0 - pValue
        negNumber = True
    End If
    If multiple < 0 Then
        multiple = 0 - multiple
    End If
   
    Select Case pValue / multiple - Int(pValue / multiple)
        Case Is < 0.5
            result = Int(pValue / multiple) * multiple
        Case Is >= 0.5
            result = Int(pValue / multiple) * (multiple) + multiple
    End Select
       
    If negNumber = True Then
        wMRound = 0 - result
    Else
        wMRound = result
    End If
End Function

Har du en ide?
Avatar billede terry Ekspert
08. februar 2017 - 09:35 #3
I'll take a look as soon as I have a bit of free time.

In your original question you said

"Her ønsker jeg (ligesom MAFRUND-funktionen gør) at den tager de 100 for Varenummer 123 og de 50 for varenummer 1234."

which indicates to me that you want to take TAL from one record and MULTIPLUM from another, is that correct?
Avatar billede terry Ekspert
08. februar 2017 - 09:38 #4
Ah, just woken up :-)

Each varenummer has its own MULTIPLUM, its not static.
Avatar billede terry Ekspert
08. februar 2017 - 09:46 #5
You can test the code you found by using the Immediate window (debug)

First create a module  for the code you found. Then in the Immediate window (CTRL+G) enter

?wMRound(TAL,MULTIPLUM )

followed by enter. TAL and MULTIPLUM need to be replaced by test data.

You should now see the result. If it works then you can use wMRound in your queries where you replace TAL and MULTIPLUM with fields in table
Avatar billede terry Ekspert
08. februar 2017 - 16:48 #6
just tested function wMRound a bit and it seems to work fine :-)

If you need help implementing it then drop a comment.
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

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