{"id":55000104,"date":"2012-04-01T00:00:00","date_gmt":"2020-01-24T15:58:06","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=104"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Rechnen_in_Formularen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html","title":{"rendered":"Rechnen in Formularen"},"content":{"rendered":"<p class='introduction'>Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu pr&auml;sentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formular&uuml;bergreifenden Berechnungen durchf&uuml;hren und was Sie dabei beachten m&uuml;ssen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1202_RechnenInFormularen.mdb<\/b>.<\/p>\n<h2>Einfache Formeln in Textfeldern<\/h2>\n<p>Beginnen wir mit einem scheinbar einfachen Beispiel. Im Formular aus Bild 1 finden Sie zwei Textfelder namens <b>txtSummand1 <\/b>und <b>txtSummand2<\/b>, die zur Eingabe zweier Summanden dienen. Das Textfeld <b>txtSumme <\/b>soll die Summe der beiden Werte liefern. Damit dies geschieht, weisen Sie der Eigenschaft Steuerelementinhalt den folgenden Ausdruck zu:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_104_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_104_001.png\" alt=\"Summieren zweier Textfelder\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Summieren zweier Textfelder<\/p>\n<pre>=[txtSummand1]+[txtSummand2]<\/pre>\n<p>Ein Wechsel in die Formularansicht und die Eingabe zweier Zahlen zeigt, dass dies so nicht funktioniert: Der Plus-Operator addiert die Zahlen nicht, sondern fasst diese als Zeichenfolgen auf und f&uuml;hrt die beiden Textketten zusammen (siehe Bild 2). Access geht davon aus, dass ein ungebundenes Textfeld eine Zeichenkette enth&auml;lt und f&uuml;gt diese durch den Plus-Operator zusammen. Wenn Sie sicherstellen wollen, dass Access mit Zahlen arbeitet, k&ouml;nnen Sie den Summanden beispielsweise die <b>Val<\/b>-Funktion voranstellen (die dann mit <b>Wert <\/b>&uuml;bersetzt wird). Der Ausdruck sieht dann etwa so aus:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_104_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_104_002.png\" alt=\"Zeichenverkettung statt Addition\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Zeichenverkettung statt Addition<\/p>\n<pre>=Wert([txtSummand1])+Wert([txtSummand2])<\/pre>\n<p>Allerdings streikt Access dann, wenn die Textfelder beim &ouml;ffnen des Formulars keinen Wert enthalten und liefert als Ergebnis einen Ausdruck wie <b>#Typ!<\/b>.<\/p>\n<h2>Fehler bei leeren Feldern<\/h2>\n<p>In diesem und in anderen F&auml;llen kann die <b>Wert<\/b>-Funktion die enthaltenen <b>Null<\/b>-Werte nicht verarbeiten. Verwenden Sie dann die <b>Nz<\/b>-Funktion, um f&uuml;r gegebenenfalls leere Textfelder den Wert <b>0 <\/b>zu liefern:<\/p>\n<pre>=Wert(Nz([txtSummand1];0))+Wert(Nz([txtSummand2];0))<\/pre>\n<p>Probleme gibt es hier immer noch, wenn Sie Zahlen mit Nachkommastellen angeben. Die <b>Val<\/b>-Funktion erkennt nur den Punkt als Dezimaltrennzeichen. Sollten Sie alternativ das Komma als Dezimaltrennzeichen verwenden wollen, was in der deutschen Systemeinstellung eingestellt sein d&uuml;rfte, k&ouml;nnen Sie alternativ die Funktion <b>CDbl <\/b>verwenden, um den vermeintlichen Text in eine Zahl umzuwandeln. Der Punkt als Trennzeichen wird dann allerdings komplett ignoriert &#8211; aus <b>12.5 <\/b>wird dann <b>125<\/b>.<\/p>\n<h2>Rechnen mit gebundenen Textfeldern<\/h2>\n<p>Viel einfacher wird dies, wenn die Textfelder an Zahlenfelder einer Tabelle gebunden sind. Dies gilt vor allem, weil Access pr&uuml;ft, welchen Datentyp diese Felder haben und automatisch eine Addition statt einer Zeichenverkettung durchf&uuml;hrt. Im Beispiel verwenden wir die Tabelle <b>tblZahlen<\/b>, das zwei Felder namens <b>Zahl1 <\/b>und <b>Zahl2 <\/b>enth&auml;lt. Beide Felder sind als Zahlenfelder mit dem Untertyp <b>Single <\/b>ausgestattet, um Nachkommastellen zu verarbeiten. Hier brauchen Sie keine Konvertierung mehr durchzuf&uuml;hren. Allerdings sollten Sie die <b>Nz<\/b>-Funktion einsetzen, um leere Felder als <b>0 <\/b>zu verarbeiten. Da es sich um gebundene Felder mit dem Datentyp <b>Zahl<\/b> handelt, brauchen Sie den zweiten Parameter der <b>Nz<\/b>-Funktion nicht anzugeben &#8211; dieser verwendet in diesem Fall gleich den Wert <b>0<\/b> (siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_104_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_104_003.png\" alt=\"Beispiel f&uuml;r die Addition gebundener Felder\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Beispiel f&uuml;r die Addition gebundener Felder<\/p>\n<h2>Berechnung in Abfrage auslagern<\/h2>\n<p>Sie k&ouml;nnen die Berechnung auch in eine Abfrage auslagern. Diese wird dann sp&auml;ter als Datenherkunft des Formulars angegeben und liefert das Feld mit dem Berechnungsergebnis gleich mit. Eine Abfrage auf Basis der Tabelle <b>tblZahlen<\/b>, welche die Werte der Felder <b>Zahl1 <\/b>und <b>Zahl2 <\/b>addiert, sieht wie in Bild 4 aus.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_104_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_104_004.png\" alt=\"Addition per Abfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Addition per Abfrage<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000104\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000104?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000104\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"771f142a70\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu pr&auml;sentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formular&uuml;bergreifenden Berechnungen durchf&uuml;hren und was Sie dabei beachten m&uuml;ssen.<\/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":[66022012,662012,44000004],"tags":[],"class_list":["post-55000104","post","type-post","status-publish","format-standard","hentry","category-66022012","category-662012","category-Formulare_fuer_die_Dateneingabe"],"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>Rechnen in Formularen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu pr\u00e4sentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formular\u00fcbergreifenden Berechnungen durchf\u00fchren und was Sie dabei beachten m\u00fcssen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rechnen in Formularen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu pr\u00e4sentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formular\u00fcbergreifenden Berechnungen durchf\u00fchren und was Sie dabei beachten m\u00fcssen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:06+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_104_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=\"8\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\/Rechnen_in_Formularen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_104_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html\",\"name\":\"Rechnen in Formularen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:06+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu pr\\u00e4sentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formular\\u00fcbergreifenden Berechnungen durchf\\u00fchren und was Sie dabei beachten m\\u00fcssen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.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\/Rechnen_in_Formularen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Rechnen_in_Formularen.html\",\"name\":\"Rechnen in Formularen\"}}]},{\"@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\/55000104","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=55000104"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000104\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}