[Excel/Access] Data wordt anders weergegeven dan in database

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Casper92
  • Registratie: December 2016
  • Laatst online: 28-08 14:45
Goedemiddag allen,

Na jaren van meelezen, is het dan nu eindelijk tijd om een eerste forumpost te maken. Jammer genoeg met een vraag, in plaats van een inhoudelijk reactie op nieuws of forumpost. :)

Mijn vraag
Voor een werkproject ben ik bezig met het opzetten van een Access database waarin al onze commerciele informatie moet worden opgeslagen (met de huidige Corona-crisis hebben nul budget voor een deftigere oplossing). De resultaten van in Access opgestelde queries moet geladen worden in een Excel: dit gaat prima voor bijna alle data, behalve de percentages. In de Access tabel wordt een percentage opgeslagen (30%) en zodra deze query wordt opgehaald door PowerQuery in Excel, vertaald deze de percentages naar 'onafgeronde' getallen:

Resultaat
Afbeeldingslocatie: https://i.ibb.co/JHwfqyB/example1.png
Brondata
Afbeeldingslocatie: https://i.ibb.co/T1zc9ms/example2.png

De kolom in kwestie, heeft de volgende datatypes:

Field size: Single
Format: Percent

Heeft iemand dit eerder gezien of met dit bijltje moeten hakken?

Relevante software en hardware die ik gebruik
Office 2016 Pro

Wat ik al gevonden of geprobeerd heb
  • Googled: kom dan met name uit op Excel > Access problematiek
  • Data in Access database geverifieerd op juistheid (waarde in DB is daadwerkelijk 30.000000000000000%
  • Rondgesnuffeld in de PowerQuery instellingen / opties, maar niks gevonden
Alvast bedankt voor jullie hulp! _/-\o_

Groeten,
Casper.

Beste antwoord (via Casper92 op 07-05-2020 14:56)


  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Wanneer ik de uitleg van die link volg, krijg ik het verwachte gedrag.

Dus, in Access is het Discount veld een Decimal, met een Precision van 5 (max 5 getallen totaal voor en na de decimal separator) en een Scale van 4 (max vier getallen na de decimal separator).

Hier kun je dan 0.01% tot en met 999.99% in kwijt.
Afbeeldingslocatie: https://tweakers.net/i/gpI4_yYhgrgMQr0RkkHJcSut4Bc=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/LsXlNFCSKVpeFNbhjpSvCl2I.jpg?f=user_large

[ Voor 25% gewijzigd door Belindo op 07-05-2020 14:24 ]

Coding in the cold; <brrrrr />

Alle reacties


Acties:
  • 0 Henk 'm!

  • Jivebunny
  • Registratie: November 2010
  • Niet online

Jivebunny

Fail to plan. Plan to fail.

Zonder me al te veel erin te verdiepen, is het resultaat een excel werkblad? Kan je dan niet gewoon de cel-eigenschappen van die kolom aanpassen naar percentage en 0 decimalen?

Hier wordt over je probleem geblogt: https://socalsql.com/2015...ting-power-query-columns/

[ Voor 22% gewijzigd door Jivebunny op 07-05-2020 13:52 ]

Pixel 9 Pro XL | NAS: HP Gen8 e3-1265L v2 16GB 12TB unRAID 6.9.2 | D: Ryzen 5600x 16GB 3000mhz RX 6800 XT MB Acer 27" IPS 144hz | Suzuki Swift 1.2 (2013)


Acties:
  • 0 Henk 'm!

  • tritimee
  • Registratie: December 2006
  • Laatst online: 08-10 22:16
wat gebeurd er als je in PowerQuery, de punt in een komma omzet? Ik loop regelmatig tegen rare hardcoded decimale problemen aan.

Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Ik kan het hier reproduceren. Een simpele database met daarin zelf 30% getypt, retourneerd 0.300000012 in Excel (eigenlijk is het 0.300000011920929).

Ik ga nog even voor je zoeken, want ik wil dit ook begrijpen :p

Coding in the cold; <brrrrr />


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Belindo schreef op donderdag 7 mei 2020 @ 13:57:
Ik kan het hier reproduceren. Een simpele database met daarin zelf 30% getypt, retourneerd 0.300000012 in Excel (eigenlijk is het 0.300000011920929).

Ik ga nog even voor je zoeken, want ik wil dit ook begrijpen :p
En een ander getal? 0.60%, 100%, dat soort getallen?

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Dat zal zijn door de manier waarop de getallen zijn opgeslagen. Als 100% accuraat zijn nodig is: maak er tekst van als datatype, of integers en denk zelf het % er bij. 30% is namelijk opgeslagen als (zeg) 0,30000000.. 000000000000 en dat wordt met niet oneindige precisie opgeslagen. Of rond af op half dozijn cijfers na de import.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

KabouterSuper schreef op donderdag 7 mei 2020 @ 13:58:
[...]

En een ander getal? 0.60%, 100%, dat soort getallen?
Geeft ook decimalen in Excel, wel met andere cijfers.

Excel (PowerQuery)Access
0.009999999776482581%
0.01999999955296522%
0.02999999932944773%
0.03999999910593034%
0.05000000074505815%
0.05999999865889556%
0.07000000029802327%
0.07999999821186078%
0.09000000357627879%
0.10000000149011610%
0.20000000298023220%
0.30000001192092930%

[ Voor 10% gewijzigd door Belindo op 07-05-2020 14:04 ]

Coding in the cold; <brrrrr />


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Overigens: https://docs.microsoft.co...e-rounded-up-down-integer

edit:

I win! @Belindo

[ Voor 14% gewijzigd door F_J_K op 07-05-2020 14:13 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Coding in the cold; <brrrrr />


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Wanneer ik de uitleg van die link volg, krijg ik het verwachte gedrag.

Dus, in Access is het Discount veld een Decimal, met een Precision van 5 (max 5 getallen totaal voor en na de decimal separator) en een Scale van 4 (max vier getallen na de decimal separator).

Hier kun je dan 0.01% tot en met 999.99% in kwijt.
Afbeeldingslocatie: https://tweakers.net/i/gpI4_yYhgrgMQr0RkkHJcSut4Bc=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/LsXlNFCSKVpeFNbhjpSvCl2I.jpg?f=user_large

[ Voor 25% gewijzigd door Belindo op 07-05-2020 14:24 ]

Coding in the cold; <brrrrr />


Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Hmm, voortaan sla ik de koffie toch maar niet over :p

Coding in the cold; <brrrrr />


Acties:
  • 0 Henk 'm!

  • Casper92
  • Registratie: December 2016
  • Laatst online: 28-08 14:45
Ik ben helemaal onder de indruk van de snelheid waarmee dit probleem is opgelost - bedankt allemaal! Het blijkt inderdaad dat het antwoord @Belindo en @F_J_K werkt als een trein. Ik heb het meest uitgebreide antwoord neergezet als 'beste antwoord', sorry @F_J_K !

Groeten,
Casper.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Casper92 schreef op donderdag 7 mei 2020 @ 14:57:
Ik heb het meest uitgebreide antwoord neergezet als 'beste antwoord', sorry @F_J_K !
:'( (edit: LOL @Belindo nee hoor, is goed zo. Was als grapje bedoeld)

:P Welkom!

[ Voor 13% gewijzigd door F_J_K op 07-05-2020 16:02 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • +1 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Casper92 schreef op donderdag 7 mei 2020 @ 14:57:
Ik ben helemaal onder de indruk van de snelheid waarmee dit probleem is opgelost - bedankt allemaal! Het blijkt inderdaad dat het antwoord @Belindo en @F_J_K werkt als een trein. Ik heb het meest uitgebreide antwoord neergezet als 'beste antwoord', sorry @F_J_K !

Groeten,
Casper.
Mocht je dit nog kunnen wijzigen, dan vind ik dat @F_J_K de eer (en de karma) mag hebben :) Hij kwam immers met de oplossing, ik slechts met het valideren ervan.

Tevens, je database is als het goed is gewoon de backend, waar normale gebruikers niet in werken? Dan is er niets mis met je discount opslaan als een double, en dit typen als 0.30 voor 30%. Als je dat vaak genoeg doet lees je er vanzelf de juiste percentages in.

Coding in the cold; <brrrrr />

Pagina: 1