{"id":55000469,"date":"2019-12-01T00:00:00","date_gmt":"2020-03-23T18:49:00","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=469"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Mit_Prozentzahlen_arbeiten","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html","title":{"rendered":"Mit Prozentzahlen arbeiten"},"content":{"rendered":"<p class='introduction'>Wer Access-Datenbanken programmiert, landet fr&uuml;her oder sp&auml;ter auch bei Prozentzahlen. Diese werden etwas f&uuml;r die Angabe des Mehrwertsteuersatzes f&uuml;r Artikel ben&ouml;tigt (eigentlich ist das der Haupteinsatzzweck). Allerdings muss man durchaus beachten, wie Prozentzahlen gespeichert werden und wie Sie die Formatierung in Formularen und Berichten w&auml;hlen, damit Sie diese Zahlen korrekt darstellt und richtig damit rechnen k&ouml;nnen. Dieser Artikel zeigt, was dabei zu beachten ist.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1906_Prozentzahlen.accdb<\/b>.<\/p>\n<h2>Ungenauigkeiten bei Flie&szlig;kommazahlen<\/h2>\n<p>Als Erstes wollen wir schauen, welchen Datentyp wir f&uuml;r die Darstellung von Prozentzahlen nutzen k&ouml;nnen. Grunds&auml;tzlich gibt es Flie&szlig;kommazahlen und Festkommazahlen. Die Datentypen <b>Single <\/b>und <b>Double <\/b>sind beispielsweise Flie&szlig;kommazahlen.<\/p>\n<p>Eine genaue Beschreibung sparen wir uns an dieser Stelle, stattdessen schauen wir uns an, wie diese etwa beim Summieren vieler gleicher Werte verhalten, die nicht ausreichend genau dargestellt werden k&ouml;nnen. Im folgenden Beispiel addieren wir 1.000 Mal den Wert <b>0,1 <\/b>und geben dann das Ergebnis aus:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TestDouble()\r\n    <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>dblSumme<span style=\"color:blue;\"> As Double<\/span>\r\n    For i = 1 To 1000\r\n        dblSumme = dblSumme + 0.1\r\n    <span style=\"color:blue;\">Next<\/span> i\r\n    <span style=\"color:blue;\">Debug.Print<\/span> dblSumme\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Ergebnis lautet nicht <b>100<\/b>, wie man erwarten k&ouml;nnte, sondern <b>99,9999999999986<\/b>.<\/p>\n<p>Wenn wir die gleiche Prozedur mit dem Datentyp <b>Currency <\/b>durchf&uuml;hren, der Festkommazahlen mit vier Nachkommastellen speichert, erhalten wir das korrekte Ergebnis, n&auml;mlich 100:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>TestCurrency()\r\n    <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>curSumme<span style=\"color:blue;\"> As Currency<\/span>\r\n    For i = 1 To 1000\r\n        curSumme = curSumme + 0.1\r\n    <span style=\"color:blue;\">Next<\/span> i\r\n    <span style=\"color:blue;\">Debug.Print<\/span> curSumme\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Beim Rechnen mit Geldbetr&auml;gen und Prozentzahlen sollten hier keine Ungenauigkeiten auftreten, daher w&auml;hlen wir nachfolgend keinen Flie&szlig;komma-Datentyp zum Speichern von Prozentzahlen.<\/p>\n<h2>Datentyp f&uuml;r Prozentzahlen<\/h2>\n<p>Legen wir nun eine Beispieltabelle an, die Artikel speichern soll &#8211; samt Nettopreis und Mehrwertsteuersatz und dem Bruttopreis als berechnetes Feld.<\/p>\n<p>Der Entwurf der Tabelle sieht wie in Bild 1 aus. Das Feld <b>Mehrwertsteuersatz <\/b>haben wir als Feld mit ganzen Zahlen ausgelegt &#8211; mit der Idee, den Prozentsatz als ganze Zahlen einzugeben.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_001.png\" alt=\"Erster Versuch eines Feldes f&uuml;r Prozentzahlen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Erster Versuch eines Feldes f&uuml;r Prozentzahlen<\/p>\n<p>Zur Berechnung des Bruttopreises und gleichzeitig zur &uuml;berpr&uuml;fung, welche Werte sich tats&auml;chlich im Feld <b>Mehrwertsteuersatz <\/b>befinden, geben wir f&uuml;r das Feld <b>Bruttopreis <\/b>die folgende Formel f&uuml;r die Eigenschaft <b>Ausdruck <\/b>ein:<\/p>\n<pre>[Nettopreis]*(1+[Mehrwertsteuersatz]\/100)<\/pre>\n<p>In der Datenblattansicht wird allerdings noch kein Prozentzeichen angezeigt (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_002.png\" alt=\"Die Berechnung gelingt, aber wir sehen kein Prozentzeichen.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Die Berechnung gelingt, aber wir sehen kein Prozentzeichen.<\/p>\n<p>Das &auml;ndern wir zun&auml;chst, indem wir wieder in die Entwurfsansicht wechseln und die Eigenschaft <b>Format <\/b>des Feldes <b>Mehrwertsteuersatz <\/b>auf <b>Prozentzahl <\/b>einstellen. Das f&uuml;hrt zwar dazu, dass nun ein Prozentzeichen angezeigt wird &#8211; aber daf&uuml;r wird der im Feld enthaltene Wert nun auch mit 100 multipliziert (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_003.png\" alt=\"Das Prozentzeichen ist nun da, allerdings wird der Wert mit 100 multipliziert.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Das Prozentzeichen ist nun da, allerdings wird der Wert mit 100 multipliziert.<\/p>\n<p>Und wenn man nun den Wert <b>19 <\/b>eingibt, um einen Mehrwertsteuersatz von 19% festzulegen, wird nach Abschluss der Eingabe der Wert <b>0,00%<\/b> angezeigt. Werte &uuml;ber 50 werden als <b>100% <\/b>angezeigt, Werte unter 50 als <b>0,00%<\/b>. Der Wert <b>1900 <\/b>wird wiederum als <b>1900% <\/b>angezeigt. Wir haben hier ein Integer-Feld gew&auml;hlt zur Eingabe von Prozentzahlen, wobei durch die Formatierung als Prozentzahl die Werte durch 100 dividiert und erst dann gespeichert werden. Die Eingabe von 19 etwa wird dann zu 0,19, was in einem Feld mit ganzen Zahlen durch Abschneiden der Nachkommastellen zu 0 wird.<\/p>\n<p>Also ben&ouml;tigen wir zumindest einen Zahlentyp, der Nachkommastellen enth&auml;lt. Die Flie&szlig;kommazahlen sind in bestimmten Situationen ungenau, also verwenden wir den Datentyp <b>W&auml;hrung<\/b>! Dies ist der einzige ausw&auml;hlbare Datentyp, der Festkommazahlen erlaubt.<\/p>\n<p>Dadurch wird zun&auml;chst auch die Eigenschaft <b>Format <\/b>ge&auml;ndert, und zwar in <b>W&auml;hrung<\/b>. Dies &auml;ndern wir wieder in <b>Prozentzahl<\/b>.<\/p>\n<p>Wenn wir dann wieder in die Datenblattansicht wechseln, werden wieder die gleichen Werte wie zuvor im Feld <b>Mehrwertsteuersatz <\/b>angezeigt &#8211; also beispielsweise <b>1900%<\/b>.<\/p>\n<p>Geben wir allerdings nun den Wert <b>19 <\/b>ein, dann erscheint anschlie&szlig;end der Wert <b>19%<\/b>. Das ist schon mal eine Verbesserung (siehe Bild 4)!<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_004.png\" alt=\"Die Prozente k&ouml;nnen nun direkt eingegeben werden, aber die Berechnungsformel stimmt nicht mehr.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Die Prozente k&ouml;nnen nun direkt eingegeben werden, aber die Berechnungsformel stimmt nicht mehr.<\/p>\n<p>Wenn wir dann allerdings auf das Feld <b>Bruttopreis <\/b>schauen, sehen wir, dass die Formel f&uuml;r direkt eingegebene Mehrwertsteuers&auml;tze offensichtlich nicht mehr stimmt: Statt beim Nettopreis <b>20 &euro; <\/b>und dem Mehrwertsteuersatz <b>19% <\/b>den Bruttopreis <b>23,80 &euro; <\/b>auszugeben, erscheint hier <b>20,038 <\/b>als Ergebnis.<\/p>\n<p>Die Prozentzahl, die wir als <b>19 <\/b>eingegeben haben, wird also offensichtlich intern als <b>0,19 <\/b>gespeichert. Das k&ouml;nnen wir uns auch durch Ermittlung des Zahlenwertes per <b>DLookup<\/b>-Funktion ansehen:<\/p>\n<pre> DLookup(\"Mehrwertsteuersatz\", \"tblArtikel\", \"ID = 2\")\r\n 0,19 <\/pre>\n<p>Nach dieser Best&auml;tigung brauchen wir also nur die Formeln des berechneten Feldes <b>Bruttopreis <\/b>wie folgt anzupassen:<\/p>\n<pre>[Nettopreis]*(1+[Mehrwertsteuersatz])<\/pre>\n<p>Die Anpassung sehen Sie auch in Bild 5.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_005.png\" alt=\"Anpassung der Formel f&uuml;r das berechnete Feld zur Ermittlung der Bruttopreise\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Anpassung der Formel f&uuml;r das berechnete Feld zur Ermittlung der Bruttopreise<\/p>\n<p>Wechseln wir nochmals in die Datenblattansicht, finden wir nach Anpassung der zuvor eingegebenen Mehrwertsteuers&auml;tze auf jeweils ein Hundertstel des vorherigen Wertes die korrekten Werte f&uuml;r Mehrwertsteuersatz und Bruttopreise vor (siehe Bild 6).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_469_006.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_469_006.png\" alt=\"Korrekte Darstellung von Mehrwertsteuersatz und Ergebnis\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 6: Korrekte Darstellung von Mehrwertsteuersatz und Ergebnis<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>1906_Prozentzahlen.accdb<\/p>\n<p><a href=\"..\/Downloads\/Beispiele\/{61FD2318-53F3-4DA5-817E-801F0CE7CF5A}\/Prozentzahlen.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer Access-Datenbanken programmiert, landet fr&uuml;her oder sp&auml;ter auch bei Prozentzahlen. Diese werden etwas f&uuml;r die Angabe des Mehrwertsteuersatzes f&uuml;r Artikel ben&ouml;tigt (eigentlich ist das der Haupteinsatzzweck). Allerdings muss man durchaus beachten, wie Prozentzahlen gespeichert werden und wie Sie die Formatierung in Formularen und Berichten w&auml;hlen, damit Sie diese Zahlen korrekt darstellt und richtig damit rechnen k&ouml;nnen. Dieser Artikel zeigt, was dabei zu beachten ist.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662019,66062019,44000003],"tags":[],"class_list":["post-55000469","post","type-post","status-publish","format-standard","hentry","category-662019","category-66062019","category-Tabellen_entwerfen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mit Prozentzahlen arbeiten - Access [basics]<\/title>\n<meta name=\"description\" content=\"Wer Access-Datenbanken programmiert, landet fr\u00fcher oder sp\u00e4ter auch bei Prozentzahlen. Diese werden etwas f\u00fcr die Angabe des Mehrwertsteuersatzes f\u00fcr Artikel ben\u00f6tigt (eigentlich ist das der Haupteinsatzzweck). Allerdings muss man durchaus beachten, wie Prozentzahlen gespeichert werden und wie Sie die Formatierung in Formularen und Berichten w\u00e4hlen, damit Sie diese Zahlen korrekt darstellt und richtig damit rechnen k\u00f6nnen. Dieser Artikel zeigt, was dabei zu beachten ist.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mit Prozentzahlen arbeiten - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Wer Access-Datenbanken programmiert, landet fr\u00fcher oder sp\u00e4ter auch bei Prozentzahlen. Diese werden etwas f\u00fcr die Angabe des Mehrwertsteuersatzes f\u00fcr Artikel ben\u00f6tigt (eigentlich ist das der Haupteinsatzzweck). Allerdings muss man durchaus beachten, wie Prozentzahlen gespeichert werden und wie Sie die Formatierung in Formularen und Berichten w\u00e4hlen, damit Sie diese Zahlen korrekt darstellt und richtig damit rechnen k\u00f6nnen. Dieser Artikel zeigt, was dabei zu beachten ist.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-23T18:49:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_469_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"4\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_469_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\",\"name\":\"Mit Prozentzahlen arbeiten - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html#primaryimage\"},\"datePublished\":\"2020-03-23T18:49:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Wer Access-Datenbanken programmiert, landet fr\\u00fcher oder sp\\u00e4ter auch bei Prozentzahlen. Diese werden etwas f\\u00fcr die Angabe des Mehrwertsteuersatzes f\\u00fcr Artikel ben\\u00f6tigt (eigentlich ist das der Haupteinsatzzweck). Allerdings muss man durchaus beachten, wie Prozentzahlen gespeichert werden und wie Sie die Formatierung in Formularen und Berichten w\\u00e4hlen, damit Sie diese Zahlen korrekt darstellt und richtig damit rechnen k\\u00f6nnen. Dieser Artikel zeigt, was dabei zu beachten ist.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Mit_Prozentzahlen_arbeiten.html\",\"name\":\"Mit Prozentzahlen arbeiten\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000469"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000469\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}