{"id":55000607,"date":"2022-08-01T00:00:00","date_gmt":"2022-08-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/607"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Abfragen_basics_Berechnete_Felder","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html","title":{"rendered":"Abfragen [basics]: Berechnete Felder"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/2e8eddeb71414bd98c55c697622a710e\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class='introduction'>Abfragen zeigen in der Regel die Felder der zugrunde liegenden Tabellen in ihren Spalten an. Manchmal liefern diese Felder jedoch nicht genau die gew&uuml;nschten Daten &#8211; beispielsweise, weil wir in einer Spalte einer Abfrage den kompletten Namen eines Kunden in der Form &#8222;Minhorst, Andr&eacute;&#8220; darstellen wollen. Oder wir m&ouml;chten nicht den Inhalt eines Datumsfeldes, sondern nur die dort enthaltene Jahreszahl ausgeben. Ein anderes Beispiel sind echte Berechnungen wie beispielsweise der Preis f&uuml;r eine Bestellposition, der sich aus dem Einzelpreis, der Menge und dem Mehrwertsteuersatz zusammensetzt. Wie Du solche Berechnungen in Abfragen realisieren kannst, zeigt dieser Artikel.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels findest Du in der Datenbank <b>2204_BerechneteFelder.accdb<\/b>.<\/p>\n<h2>Was sind &#8222;Berechnete Felder&#8220;<\/h2>\n<p>&#8222;Berechnete Felder&#8220; ist eigentlich ein irref&uuml;hrender Ausdruck. Zwar ist ein Zweck von berechneten Feldern auch das Anstellen von Berechnungen, wie in der Einleitung am Beispiel von Preisen von Bestellpositionen. Allerdings w&uuml;rden wir es eher als Ausdruck bezeichnen, denn nicht immer enth&auml;lt ein berechnetes Feld auch eine mathematische Berechnung.<\/p>\n<p>Unter den Begriff &#8222;Berechnete Felder in Abfragen&#8220; geh&ouml;ren auch das Zusammenf&uuml;hren der Inhalte mehrerer Felder wie zum Beispiel f&uuml;r die Kombination aus Anrede und Nachname oder auch der Einsatz von VBA-Funktionen, die auf den Inhalt anderer Felder angewendet werden. Schon den Einsatz der Funktion <b>Datum() <\/b>als Wert eines Feldes w&uuml;rden wir als berechnetes Feld bezeichnen, und das Gleiche gilt f&uuml;r Felder, in denen eine VBA-Funktion den Inhalt anderer Felder als Parameter verwendet &#8211; zum Beispiel <b>=Jahr(Bestelldatum)<\/b> zum Ausgeben der Jahreszahl eines Bestelldatums.<\/p>\n<p>Und es wird noch spannender: Wir k&ouml;nnen nicht nur die eingebauten Funktionen von VBA zur Berechnung von Ausdr&uuml;cken in Abfragen nutzen, sondern sogar benutzerdefinierte Funktionen dort einsetzen. Wenn die VBA-Bibliothek also nicht die passende Funktion bietet, bauen wir uns diese einfach selbst zusammen. Wie all dies funktioniert, schauen wir uns in den folgenden Abschnitten an.<\/p>\n<h2>Berechneter Ausdruck auf Basis von Abfragefeldern<\/h2>\n<p>Als erstes Beispiel wollen wir eine tats&auml;chliche mathematische Berechnung durchf&uuml;hren, und zwar zur Ermittlung des Preises einer Position einer Bestellung. Dazu erstellen wir eine neue Abfrage und f&uuml;gen die Tabelle <b>tblBestellpositionen <\/b>zum Abfrageentwurf hinzu.<\/p>\n<p>Dann ziehen wir aus dieser Tabelle die Felder ID, Einzelpreis und Menge in das Entwurfsraster. Schlie&szlig;lich f&uuml;gen wir das gew&uuml;nschte berechnete Feld hinzu, indem wir einfach in der n&auml;chsten leeren Spalte den folgenden Ausdruck eintragen:<\/p>\n<pre>Preis: [Einzelpreis]*[Menge]<\/pre>\n<p>Dann speichern wir die Abfrage unter dem Namen <b>qryEinzelpreisMalMenge<\/b>. Der Abfrageentwurf sieht nun wie in Bild 1 aus.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_607_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_607_001.png\" alt=\"Beispiel f&uuml;r ein berechnetes Feld\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Beispiel f&uuml;r ein berechnetes Feld<\/p>\n<p>Schauen wir uns nun das Ergebnis in der Datenblattansicht an, erhalten wir die korrekt berechneten Werte wie in Bild 2.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_607_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_607_002.png\" alt=\"Das berechnete Feld in der Datenblattansicht\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Das berechnete Feld in der Datenblattansicht<\/p>\n<p>Zur Berechnung herangezogene Felder, wie in diesem Beispiel die Felder <b>Einzelpreis <\/b>und <b>Menge<\/b>, m&uuml;ssen &uuml;brigens nicht zum Entwurfsraster hinzugef&uuml;gt und dementsprechend auch nicht angezeigt werden. F&uuml;r die Berechnung reicht die Angabe des berechneten Feldes allein. Die Felder <b>Einzelpreis <\/b>und <b>Menge <\/b>haben wir nur hinzugef&uuml;gt, damit wir das Ergebnis der Berechnung kontrollieren k&ouml;nnen.<\/p>\n<h2>Berechnung um Mehrwertsteuer erweitern<\/h2>\n<p>In manchen Rechnungen landen die Mehrwertsteuer beziehungsweise der Bruttobetrag erst im Endergebnis mit der Summe aller Positionen einer Bestellung. Wir k&ouml;nnen den Bruttobetrag allerdings auch direkt zu jeder Zeile hinzuf&uuml;gen &#8211; genau wie den Betrag der Mehrwertsteuer. Das haben wir im Beispiel aus Bild 3 erledigt. Dabei haben wir die folgenden berechneten Ausdr&uuml;cke verwendet:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_607_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_607_003.png\" alt=\"Berechnete Felder f&uuml;r Nettopreis, Mehrwertsteuerbetrag und Bruttopreis\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Berechnete Felder f&uuml;r Nettopreis, Mehrwertsteuerbetrag und Bruttopreis<\/p>\n<ul>\n<li><b>Nettopreis: [Einzelpreis]*[Menge]<\/b><\/li>\n<li><b>MwSt: [Einzelpreis]*[Menge]*[Mehrwertsteuersatz]<\/b><\/li>\n<li><b>Bruttopreis: [Einzelpreis]*[Menge]*(1+[Mehrwertsteuersatz])<\/b><\/li>\n<\/ul>\n<p>Das Ergebnis findest Du in Bild 4.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_607_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_607_004.png\" alt=\"Berechnung von Netto- und Bruttopreis sowie des Mehrwertsteuerbetrags\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Berechnung von Netto- und Bruttopreis sowie des Mehrwertsteuerbetrags<\/p>\n<h2>Name f&uuml;r den berechneten Ausdruck<\/h2>\n<p>Normalerweise zeigt ein Abfrageergebnis als Spalten&uuml;berschrift den Namen des Feldes an, der f&uuml;r diese Spalte festgelegt ist. Wenn wir einen berechneten Ausdruck nutzen, kann dieser sich auf mehrere Felder beziehen oder auch auf gar kein Feld der zugrunde liegenden Tabelle. Deshalb gibt man in der Regel einen benutzerdefinierten Feldnamen an. Geschieht das nicht, erledigt Access die Aufgabe und vergibt Namen wie <b>Ausdr1<\/b>, <b>Ausdr2 <\/b>und so weiter.<\/p>\n<p>Der Name des berechneten Feldes wird durch einen Doppelpunkt vom eigentlichen Ausdruck getrennt.<\/p>\n<h2>Berechnete Felder mit dem Inhalt von Textfeldern<\/h2>\n<p>Neben mathematischen Berechnungen verwenden wir berechnete Felder sehr oft zum Verkn&uuml;pfen der Inhalte von Textfeldern. Wenn wir zu irgendeinem Zweck, beispielsweise zur Anzeige in einem Kombinationsfeld, den Vor- und den Nachnamen eines Kunden zusammen anzeigen wollen, k&ouml;nnen wir das in einem naiven, ersten Ansatz wie in Bild 5 erledigen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_607_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_607_005.png\" alt=\"Berechnetes Feld mit Texten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Berechnetes Feld mit Texten<\/p>\n<p>Hier geben wir hinter der Bezeichnung <b>Kunde <\/b>als Name des berechneten Feldes das Feld <b>Vorname <\/b>gefolgt vom Operator <b>&#038; <\/b>und das Feld <b>Nachname <\/b>an. Statt mathematischer Operatoren wie Plus, Minus et cetera k&ouml;nnen wir also auch Textoperatoren wie das Kaufmanns-Und <b>(&#038;<\/b>) verwenden.<\/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\/55000607\/\">\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\/55000607?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\/55000607\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\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>Abfragen zeigen in der Regel die Felder der zugrunde liegenden Tabellen in ihren Spalten an. Manchmal liefern diese Felder jedoch nicht genau die gew&uuml;nschten Daten &#8211; beispielsweise, weil wir in einer Spalte einer Abfrage den kompletten Namen eines Kunden in der Form &#8222;Minhorst, Andr&eacute;&#8220; darstellen wollen. Oder wir m&ouml;chten nicht den Inhalt eines Datumsfeldes, sondern nur die dort enthaltene Jahreszahl ausgeben. Ein anderes Beispiel sind echte Berechnungen wie beispielsweise der Preis f&uuml;r eine Bestellposition, der sich aus dem Einzelpreis, der Menge und dem Mehrwertsteuersatz zusammensetzt. Wie Du solche Berechnungen in Abfragen realisieren kannst, zeigt dieser Artikel.<\/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":[662022,66042022,44000006],"tags":[],"class_list":["post-55000607","post","type-post","status-publish","format-standard","hentry","category-662022","category-66042022","category-Abfragen_fuer_die_Datenauswahl"],"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>Abfragen [basics]: Berechnete Felder - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Abfragen [basics]: Berechnete Felder - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Abfragen zeigen in der Regel die Felder der zugrunde liegenden Tabellen in ihren Spalten an. Manchmal liefern diese Felder jedoch nicht genau die gew&uuml;nschten Daten - beispielsweise, weil wir in einer Spalte einer Abfrage den kompletten Namen eines Kunden in der Form &quot;Minhorst, Andr&eacute;&quot; darstellen wollen. Oder wir m&ouml;chten nicht den Inhalt eines Datumsfeldes, sondern nur die dort enthaltene Jahreszahl ausgeben. Ein anderes Beispiel sind echte Berechnungen wie beispielsweise der Preis f&uuml;r eine Bestellposition, der sich aus dem Einzelpreis, der Menge und dem Mehrwertsteuersatz zusammensetzt. Wie Du solche Berechnungen in Abfragen realisieren kannst, zeigt dieser Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/2e8eddeb71414bd98c55c697622a710e\" \/>\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=\"12\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\/Abfragen_basics_Berechnete_Felder.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/vg07.met.vgwort.de\/na\/2e8eddeb71414bd98c55c697622a710e\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html\",\"name\":\"Abfragen [basics]: Berechnete Felder - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html#primaryimage\"},\"datePublished\":\"2022-08-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.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\/Abfragen_basics_Berechnete_Felder.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Abfragen_basics_Berechnete_Felder.html\",\"name\":\"Abfragen [basics]: Berechnete Felder\"}}]},{\"@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\/55000607","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=55000607"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000607\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}