{"id":55000317,"date":"2006-02-01T00:00:00","date_gmt":"2020-05-06T15:18:12","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=317"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Domaenenfunktionen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/","title":{"rendered":"Dom&auml;nenfunktionen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Roland Grothe, Hanau; Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Erstellen Sie ein Add-In zum Messen und Vergleichen der Performance von Funktionen.<\/p>\n<h3>Techniken<\/h3>\n<p>Dom&auml;nenfunktionen<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 97 und h&ouml;her<\/p>\n<h3>Beispieldateien<\/h3>\n<p><a href=''fileadmin\/files\/acc0106gl01.zip''>Domaenenfunktionen97.mdb (Access 97)Domaenenfunktionen00.mdb (Access 2000 und h&ouml;her)<\/a><\/p>\n<h3><\/h3>\n<p><b>Dieser Beitrag stellt Ihnen eine Gruppe von Funktionen vor, die einen recht einfachen Zugriff auf Daten in beliebigen Tabellen oder Abfragen einer Access-Datenbank erm&ouml;glichen. Mit diesen so genannten Dom&auml;nenfunktionen ist es m&ouml;glich, Tabellendaten in Form von Funktionsergebnissen zum Beispiel als Feldinhalte oder als Kriterien in Abfragen zur Verf&uuml;gung zu stellen.  Anhand einiger Praxisbeispiele erfahren Sie, in welchen F&auml;llen der Einsatz von Dom&auml;nenfunktionen sinnvoll ist und wann es besser ist, auf andere Alternativen zur Datenermittlung zur&uuml;ckzugreifen.<\/b><\/p>\n<p>Dom&auml;nenfunktionen lassen sich am einfachsten als &#8222;in eine Funktion gepackte SQL-Abfragen&#8220; definieren. Mit Dom&auml;nenfunktionen lassen sich fast alle Abfragen ersetzen, die allerdings eine Bedingung zwingend erf&uuml;llen m&uuml;ssen: Sie d&uuml;rfen lediglich einen einzigen Wert zur&uuml;ckliefern. Die Bezeichnung dieses Funktionstyps erkl&auml;rt sich aus dem Begriff Dom&auml;ne (engl.: Domain), eine in Datenbank-Kreisen &uuml;bliche Bezeichnung f&uuml;r eine Datensatzgruppe. Die insgesamt zw&ouml;lf von Access zur Verf&uuml;gung gestellten Dom&auml;nenfunktionen erm&ouml;glichen den schnellen und unkomplizierten Zugriff auf Informationen aus einer Tabelle oder einer gespeicherten Abfrage.<\/p>\n<p>Sie lassen sich sehr flexibel einsetzen und stellen oft die einzige M&ouml;glichkeit dar, das Ergebnis einer Funktionsabfrage in einem Formular- oder Berichtsfeld darzustellen, ohne aufw&auml;ndigen VBA-Code schreiben zu m&uuml;ssen. Sie sind auch immer dann hilfreich, wenn ein solches Ergebnis zu weiteren Berechnungen ben&ouml;tigt wird, da Sie direkt in dem jeweiligen Ausdruck anstelle eines konkreten Wertes verwendet werden.<\/p>\n<p>Tab. 1 zeigt alle Dom&auml;nenfunktionen in Deutsch und Englisch inklusive Beschreibung. Sie k&ouml;nnen in der deutschen Version von Access fast &uuml;berall sowohl die deutschen als auch die englischen Funktionsbezeichnungen verwenden. Access wandelt diese automatisch in die deutsche Bezeichnung um. Dies gilt allerdings nicht f&uuml;r VBA-Code. Dort verwendete Funktionen m&uuml;ssen mit der englischen Bezeichnung eingegeben werden. In VBA werden die Funktionsparameter statt mit dem Semikolon mit einem Komma voneinander getrennt.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Funktion (engl. Bez.)<\/b><\/p>\n<\/td>\n<td>\n<p><b>Beschreibung<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomAnzahl (DCount)<\/p>\n<\/td>\n<td>\n<p>Anzahl der Datens&auml;tze aus der Tabellen- bzw. Abfrage-Dom&auml;ne, bei denen der Inhalt des in Ausdruck definierten Feldes bzw. das Ergebnis dieses Ausdrucks nicht Null ist. Ber&uuml;cksichtigt werden nur Datens&auml;tze, die dem in Kriterium festgelegten Kriterium entsprechen (die Syntaxbeschreibung gilt f&uuml;r alle Dom&auml;nenfunktionen).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomSumme (DSum)<\/p>\n<\/td>\n<td>\n<p>Summe der Feldinhalte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomErsterWert (DFirst)<\/p>\n<\/td>\n<td>\n<p>Feldinhalt des ersten Datensatzes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomLetzterWert (DLast)<\/p>\n<\/td>\n<td>\n<p>Feldinhalt des letzten Datensatzes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomMittelwert (DAvg)<\/p>\n<\/td>\n<td>\n<p>Durchschnittswert des Feldinhaltes. Nullwerte werden ignoriert<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomVarianz (DVar)<\/p>\n<\/td>\n<td>\n<p>Varianz eines Feldes, bezogen auf eine Stichprobe<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomVarianzG (DVarP)<\/p>\n<\/td>\n<td>\n<p>Varianz eines Feldes, bezogen auf die Gesamtmenge<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomStdAbw (DStDev)<\/p>\n<\/td>\n<td>\n<p>Standardabweichung eines Feldes, bezogen auf eine Stichprobe<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomStdAbwG (DStDevP)<\/p>\n<\/td>\n<td>\n<p>Standardabweichung eines Feldes, bezogen auf die Gesamtmenge<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomMin (DMin)<\/p>\n<\/td>\n<td>\n<p>minimaler Wert eines Feldes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomMax (DMax)<\/p>\n<\/td>\n<td>\n<p>maximaler Wert eines Feldes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>DomWert (DLookup)<\/p>\n<\/td>\n<td>\n<p>Feldinhalt des ersten Datensatzes<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Dom&auml;nenfunktionen von Access<\/b><\/p>\n<p>Der Aufruf einer Dom&auml;nenfunktion erfolgt immer in dieser Form:<\/p>\n<pre>Funktion(Ausdruck;Dom&auml;ne[;Kriterium])<\/pre>\n<p>Alle drei Parameter werden in Form einer Zeichenkette &uuml;bergeben, wobei die ersten beiden zwingend notwendig sind. Der Parameter Kriterium ist optional und kann weggelassen werden, wenn er nicht ben&ouml;tigt wird. Im Prinzip finden Sie in den Parametern die Hauptkomponenten einer SQL-Abfrage wieder, wobei lediglich die entsprechenden Schl&uuml;sselw&ouml;rter weggelassen werden. F&uuml;gen Sie diese (in Gedanken) wieder hinzu, erhalten Sie den SQL-Befehl:<\/p>\n<pre>SELECT Ausdruck FROM Dom&auml;ne WHERE Kriterium<\/pre>\n<p>Tats&auml;chlich baut Access aus den Parametern einen der jeweiligen Dom&auml;nenfunktion angepassten SQL-Befehl zusammen. Daher m&uuml;ssen Sie bei der Verwendung von Dom&auml;nenfunktionen alle Bedingungen und Einschr&auml;nkungen beachten, die auch f&uuml;r &#8222;normale&#8220; SQL-Befehle gelten.<\/p>\n<p>Dies gilt vor allem f&uuml;r die vom SQL-Interpreter vorgeschriebenen amerikanischen Formatierungen, auf die der Beitrag sp&auml;ter noch eingehen wird. F&uuml;r die folgenden Beschreibungen der einzelnen Parameter verwenden Sie als Beispiel die Dom&auml;nenfunktion DomWert(), die einen einzelnen Wert aus einer Tabelle oder Abfrage ermittelt und die Funktion DomAnzahl(), welche die Anzahl der Datens&auml;tze zur&uuml;ckgibt, die einen Eintrag in einem bestimmten Feld enthalten. <\/p>\n<h2>Der Parameter &#8222;Ausdruck&#8220;<\/h2>\n<p>Bei diesem Parameter handelt es sich normalerweise um den Namen des Feldes, das die ben&ouml;tigte Information enth&auml;lt. Der Feldname wird als Zeichenkette &uuml;bergeben, daher m&uuml;ssen Sie ihn in Anf&uuml;hrungszeichen setzen. Um etwa das Bestelldatum  des ersten Datensatzes der Tabelle Bestellungen zu ermitteln, verwenden Sie folgenden Ausdruck:<\/p>\n<pre>DomWert(\"[Bestelldatum]\";\"[Bestellungen]\")<\/pre>\n<p>Unter VBA w&uuml;rde dieser Ausdruck so aussehen (in einer Zeile):<\/p>\n<pre>Dlookup(\"[Bestelldatum]\",\"[Bestellungen]\")<\/pre>\n<p>Sie k&ouml;nnen das Ergebnis dieses Ausdrucks im Direktfenster durch Voranstellen der Anweisung Debug.Print oder dessen Abk&uuml;rzung, dem Fragezeichen (), ausgeben lassen (siehe Bild 1).<\/p>\n<p><IMG height=\"175\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic001.png\" width=\"453\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Testen einer Dom&auml;nenfunktion im Direktfenster<\/span><\/b><\/p>\n<p>Statt eines einzelnen Feldnamens kann aber auch ein komplexerer Ausdruck &uuml;bergeben werden, der Informationen aus mehreren Feldern zusammenfasst oder Berechnungen durchf&uuml;hrt. In diesem Fall setzen Sie den gesamten Ausdruck in doppelte Anf&uuml;hrungszeichen. Der folgende Ausdruck ermittelt beispielsweise die Zeit zwischen der Bestellung und der Lieferung des ersten Datensatzes der Tabelle Bestellungen:<\/p>\n<pre>DomWert(\"[Lieferdatum] - [Bestelldatum]\"; \"[Bestellungen]\")<\/pre>\n<p>Die VBA-Variante lautet:<\/p>\n<pre>Dlookup(\"[Lieferdatum] - [Bestelldatum]\", \"[Bestellungen]\")<\/pre>\n<p>Befinden sich innerhalb des Ausdrucks doppelte Anf&uuml;hrungszeichen, ersetzen Sie diese durch einfache Anf&uuml;hrungszeichen, die vom SQL-Interpreter als Begrenzungszeichen anerkannt werden.<\/p>\n<p>Der folgende Ausdruck ermittelt die Firmenbezeichnung aus dem ersten Datensatz der Tabelle Kunden und stellt den Ansprechpartner anschlie&szlig;end in Klammern dar:<\/p>\n<pre>DomWert(\"[Firma] & '' ('' & [Kontaktperson] & '')''\";\"[Kunden]\")<\/pre>\n<p>beziehungsweise<\/p>\n<pre>Dlookup(\"[Firma] & '' ('' & [Kontaktperson] & '')''\",\"[Kunden]\")<\/pre>\n<p>Anstelle eines einfachen Anf&uuml;hrungszeichens k&ouml;nnen Sie auch zwei doppelte Anf&uuml;hrungszeichen verwenden, allerdings wird ein solcher Ausdruck sehr schnell un&uuml;bersichtlich:<\/p>\n<pre>DomWert(\"[Firma] & \"\" (\"\" & [Kontaktperson] & \"\")\"\"\";\"[Kunden]\")<\/pre>\n<p>Die Zeichenkette kann der Dom&auml;nenfunktion auch als Bezeichner, als Ergebnis einer Funktion oder (in VBA) als Variable &uuml;bergeben werden.<\/p>\n<p>In diesem Fall lassen Sie die Anf&uuml;hrungszeichen weg. Es muss jedoch sichergestellt sein, dass die &uuml;bergebene Zeichenkette die bereits angesprochenen formalen Bedingungen erf&uuml;llt, ansonsten erhalten Sie den Ausdruck #Fehler als Ergebnis. <\/p>\n<h2>Der Parameter &#8222;Dom&auml;ne&#8220;<\/h2>\n<p>Wie auch der Parameter Ausdruck ist der Parameter Dom&auml;ne nicht optional und daher unbedingt einzugeben. Als g&uuml;ltige Werte wird der Name jeder Tabelle oder gespeicherten Abfrage der aktuellen Datenbank in Form einer Zeichenkette akzeptiert. Auch f&uuml;r diesen Parameter gelten die gleichen Regeln bez&uuml;glich der Anf&uuml;hrungszeichen und eckigen Klammern wie beim Parameter Ausdruck. Wird als Dom&auml;ne der Name einer Abfrage verwendet, kann es sich hierbei nur um eine gespeicherte Abfrage handeln. Es ist nicht m&ouml;glich, diesen Parameter wie im Ausdruck<\/p>\n<pre>DomWert(\"[Bestelldatum]\";\"SELECT * FROM [Bestellungen]\")<\/pre>\n<p><!--30percent--><\/p>\n<p>direkt in Form eines SQL-Befehls zu &uuml;bergeben.<\/p>\n<p>Aus Gr&uuml;nden der Ausf&uuml;hrungsgeschwindigkeit sollten Sie versuchen, die ben&ouml;tigte Information m&ouml;glichst direkt aus der Tabelle zu beziehen. Im optimalen Fall verf&uuml;gt die Tabelle &uuml;ber einen Index auf das gesuchte Feld.<\/p>\n<h2>Der Parameter &#8222;Kriterium&#8220;<\/h2>\n<p>Alle bisherigen Beispiele lieferten die gesuchte Information entweder aus einem Feld des ersten Datensatzes (DomWert())  oder ber&uuml;cksichtigten bei der Berechnung alle Datens&auml;tze (DomAnzahl()) der im Parameter Dom&auml;ne genannten Tabelle oder Abfrage.<\/p>\n<p>Dies liegt daran, dass Sie den Parameter Kriterium bei diesen Beispielen einfach weggelassen haben. Mit diesem Parameter ist es m&ouml;glich, auf einen anderen als den ersten Datensatz zuzugreifen oder lediglich eine begrenzte Auswahl von Datens&auml;tzen zu ber&uuml;cksichtigen.<\/p>\n<p>Die Syntax des Parameters Kriterium entspricht exakt der WHERE-Klausel einer SQL-Abfrage, bei der das Schl&uuml;sselwort WHERE fehlt. Wie die anderen Parameter wird auch dieser als Zeichenkette &uuml;bergeben und ist in doppelte Anf&uuml;hrungszeichen zu setzen. Um beispielsweise das Bestelldatum der Bestellung Nr. 10268 zu ermitteln, verwenden Sie den Ausdruck<\/p>\n<pre>DomWert(\"[Bestelldatum]\";\"[Bestellungen]\";\"[Bestell-Nr]=10268\")<\/pre>\n<p>Da es sich beim Kriterium Bestell-Nr um einen ganzzahligen Wert handelt, sind bei diesem Beispiel keine Besonderheiten zu beachten. Komplizierter wird es, wenn als Kriterien Zeichenketten, Datumsinformationen oder Flie&szlig;kommazahlen herangezogen werden, da diese erst einmal in ein f&uuml;r den SQL-Interpreter verst&auml;ndliches amerikanisches Format umgesetzt werden m&uuml;ssen. Handelt es sich beim verwendeten Kriterium um eine Zeichenkette, muss diese durch einfache Anf&uuml;hrungszeichen (Hochkommas) begrenzt werden. Alternativ ist auch hier die  Verwendung von zwei doppelten anstelle eines einfachen Anf&uuml;hrungszeichens m&ouml;glich, allerdings werden besonders umfangreiche Kriterienklauseln damit praktisch unlesbar.<\/p>\n<p>Der folgende Ausdruck ermittelt die Anzahl der Bestellungen von Alfreds Futterkiste:<\/p>\n<pre>DomAnzahl(\"[Bestell-Nr]\";\"[Bestellungen]\";\"[Kunden-Code]=''ALFKI''\")<\/pre>\n<p>In der Tabelle Bestellungen gibt es zwei Datens&auml;tze mit Versandkosten von 1,63 EUR. Um diese Aussage zu &uuml;berpr&uuml;fen, bietet sich der folgende Ausdruck an:<\/p>\n<pre>Debug.Print Dcount(\"[Bestell-Nr]\", \"Bestellungen\", \"Frachtkosten = 1,63\")<\/pre>\n<p>Dieser funktioniert allerdings so nicht, sondern liefert eine Fehlermeldung (siehe Bild 2).<\/p>\n<p><IMG height=\"133\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic002.png\" width=\"389\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Fehler bei Verwendung der falschen Syntax<\/span><\/b><\/p>\n<p>Auch hier liegt der Fehler in der Formatierung des Kriterienwertes, die nicht den amerikanischen Gepflogenheiten entspricht, weil als Dezimalzeichen das bei uns &uuml;bliche Komma anstelle des Punktes verwendet wird. &auml;ndern Sie den Ausdruck wie folgt, funktioniert dieser einwandfrei:<\/p>\n<p> Dcount(&#8222;[Bestell-Nr]&#8220;, &#8222;Bestellungen&#8220;, &#8222;Frachtkosten = 1.63&#8220;)<\/p>\n<p>Noch komplizierter wird es bei Datumswerten, da diese sowohl in Nummernzeichen eingeschlossen als auch im amerikanischen Format MM\/DD\/YYYY eingegeben werden m&uuml;ssen. Der Ausdruck zur Ermittlung der Anzahl an Bestellungen am 14.11.2005 sieht demnach so aus:<\/p>\n<pre>DomAnzahl(\"[Bestell-Nr]\";\"[Bestellungen]\";\"[Bestelldatum]=#11\/14\/2005#\")<\/pre>\n<p>Da Sie wohl in den seltensten F&auml;llen das Kriterium fest in die Funktion einbauen werden, m&uuml;ssen Sie es aus statischem Text und Feldinhalten mittels Textoperatoren und Formatfunktionen so zusammenbauen, dass es den geforderten Konventionen entspricht. Um das Kriterium des letzten Beispiels beispielsweise aus einem Formularfeld txtDatum zu holen, m&uuml;sste der Ausdruck so aussehen:<\/p>\n<pre>DomAnzahl(\"[Bestell-Nr]\";\"[Bestellungen]\";\"[Bestelldatum]= \" & Format([txtDatum];\"\\#mm\/tt\/jjjj\\#\"))<\/pre>\n<p>Die WHERE-Klausel, die an den SQL-Interpreter &uuml;bergeben wird, ist in beiden F&auml;llen v&ouml;llig identisch. Der Unterschied liegt lediglich darin, dass die Klausel im ersten Beispiel als statischer Text direkt in der Funktion steht und im zweiten Beispiel vor der Bearbeitung durch die Funktion erst einmal aus statischem Text und einem Feldinhalt des Formulars zusammengebaut wird.<\/p>\n<p>Eine Alternative zur umst&auml;ndlichen Formatumwandlung ist der direkte Zugriff des SQL-Interpreters auf den Feldinhalt eines Formulars. Im Ausdruck<\/p>\n<pre>DomAnzahl(\"[Bestell-Nr]\";\"[Bestellungen]\";\"[Bestelldatum]=Forms!frmBeispiel!txtDatum\")<\/pre>\n<p>besteht das gesamte Kriterium aus statischem Text, der direkt an den SQL-Interpreter &uuml;bergeben wird. Dieser holt sich die ben&ouml;tigte Information direkt aus dem Feld txtDatum und wandelt dessen Inhalt in das von ihm ben&ouml;tigte Format um. Beachten Sie jedoch, dass Sie hierbei immer den kompletten Bezeichnerpfad mit Formularnamen verwenden m&uuml;ssen.<\/p>\n<p>Obwohl alle Dom&auml;nenfunktionen die gleichen Parameter verwenden, weicht die Interpretation des Kriteriums bei diesen f&uuml;nf Funktionen etwas ab. Sie ermitteln ihr Ergebnis n&auml;mlich immer nur aus den Informationen eines einzigen Datensatzes, w&auml;hrend die anderen Dom&auml;nenfunktionen ihr Ergebnis aus allen Datens&auml;tzen berechnen, die das Kriterium erf&uuml;llen.<\/p>\n<h2>DomWert und DomErsterWert<\/h2>\n<li>Kein Datensatz entspricht den Kriterien. In diesem Fall liefern alle Funktionen den Wert Null zur&uuml;ck.<\/li>\n<li>Ein einziger Datensatz entspricht den Kriterien. Dies ist meist dann der Fall, wenn als Kriterium das Prim&auml;rschl&uuml;sselfeld verwendet wird. In diesem Fall liefern alle f&uuml;nf Funktionen die gew&uuml;nschte Information aus diesem Datensatz zur&uuml;ck. <\/li>\n<li>Mehrere Datens&auml;tze entsprechen den Kriterien. In diesem Fall liefern die Funktionen DomWert() und DomErsterWert() die gew&uuml;nschte Information aus dem ersten gefundenen Datensatz, die Funktion DomLetzterWert() aus dem letzten gefundenen Datensatz. Die Funktionen DomMax() und DomMin() liefern den Wert des Datensatzes, in dem die gew&uuml;nschte Information den gr&ouml;&szlig;ten beziehungsweise kleinsten Wert hat.<\/li>\n<p><b>Quellcode 1: Das Speichern des Prim&auml;rschl&uuml;sselwertes muss unbedingt in der Ereignisprozedur BeimEntladen() erfolgen, da beim Schlie&szlig;en des Formulars der Datensatzzeiger bereits auf den Anfang des Recordsets zur&uuml;ckgesetzt wurde.<\/b><\/p>\n<pre>Private Sub Form_Unload(Cancel As Integer)\r\n    If Not IsNull(Me![Kunden-Code]) Then\r\n        CurrentDb.Execute \"UPDATE tblEinstellungen SET Wert = ''\" & Me![Kunden-Code] _            & \"'' WHERE Einstellung = ''frmKunden_AktuellerKunde''\"\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2: Beim Laden des Formulars wird der Datensatzzeiger auf den zuletzt bearbeiteten Datensatz positioniert.<\/b><\/p>\n<pre>Private Sub Form_Load()\r\n    Me.RecordsetClone.FindFirst \"[Kunden-Code] = ''\" _        & DLookup(\"Wert\", \"tblEinstellungen\", \"Einstellung = ''frmKunden_AktuellerKunde''\") & \"''\"\r\n    Me.Bookmark = Me.RecordsetClone.Bookmark\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3: Variation der Routine aus Quellcode 2 f&uuml;r Access 2000 und h&ouml;her<\/b><\/p>\n<pre>Private Sub Form_Load()\r\n    Me.Recordset.FindFirst \"[Kunden-Code] = ''\" & DLookup(\"Wert\", \"tblEinstellungen\", _        \"Einstellung = ''frmKunden_AktuellerKunde''\") & \"''\"\r\nEnd Sub<\/pre>\n<p>In jeder Anwendung gibt es Parameter und Einstellungswerte, die dauerhaft gespeichert werden m&uuml;ssen. Daf&uuml;r eignet sich eine Tabelle tblEinstellungen, die Paare aus Name und Wert der Einstellung enth&auml;lt (siehe Bild 3).<\/p>\n<p><IMG height=\"114\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic003.png\" width=\"327\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Tabelle zum Speichern von Einstellungen<\/span><\/b><\/p>\n<p>Mit der Dom&auml;nenfunktion <\/p>\n<pre>DomWert(\"[Wert]\";\"[tblEinstellungen]\";\"[Einstellung] = ''&lt;Einstellungsname&gt;''\")<\/pre>\n<p>greifen Sie jederzeit schnell auf den gerade ben&ouml;tigten Einstellungswert zu.<\/p>\n<p>Das Formular Kunden verwendet diese Technik, um sich beim Entladen des Formulars den aktuellen Datensatz zu merken und den Datensatzzeiger beim n&auml;chsten Aufruf des Formulars wieder auf diesen zu positionieren.<\/p>\n<p>Die Ereignisprozedur BeimEntladen() aktualisiert das Tabellenfeld Wert mit Hilfe der Execute-Methode des aktuellen Datenbankobjekts f&uuml;r den Datensatz mit dem Wert frmKunden_AktuellerKunde im Feld Einstellung (s. Quellcode 1).<\/p>\n<p><IMG height=\"343\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Beim Laden des Formulars frmKunden wird automatisch der zuletzt bearbeitete Datensatz ge&ouml;ffnet.<\/span><\/b><\/p>\n<p>Beim Laden des Formulars liest die Ereignisprozedur BeimLaden() dieses Feld mit der Funktion DomWert() (engl.: DLookup()) wieder aus und positioniert den Datensatzzeiger auf den Datensatz mit dem in den Einstellungen gefundenen Prim&auml;rschl&uuml;sselwert.<\/p>\n<p>In Quellcode 2 und Quellcode 3 finden Sie zwei Varianten dieser Routine. Letztere ist etwas k&uuml;rzer, funktioniert erst ab Access 2000.<\/p>\n<p><IMG height=\"182\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Bei der Berechnung des Anteils am Gesamtumsatz kommt die Dom&auml;nenfunktion DomSumme() zum Einsatz.<\/span><\/b><\/p>\n<p>Achten Sie dabei auf die Verwendung der Anf&uuml;hrungszeichen, um den alphanumerisch gespeicherten Kundencode an die SQL-Befehle zu &uuml;bergeben.<\/p>\n<h2>Die Funktion DomAnzahl()<\/h2>\n<p>Auch diese Funktion unterscheidet sich ein wenig von den &uuml;brigen Dom&auml;nenfunktionen, da nur DomAnzahl() das Zeichen * als Wert f&uuml;r den Parameter Ausdruck akzeptiert. In diesem Fall liefert DomAnzahl() die Anzahl aller Datens&auml;tze zur&uuml;ck, die dem Kriterium entsprechen beziehungsweise bei fehlendem Kriterium die Anzahl aller Datens&auml;tze in der Dom&auml;ne.<\/p>\n<p>&uuml;bergeben Sie als Ausdruck einen Feldnamen, ermittelt DomAnzahl() die Anzahl aller Datens&auml;tze, die das Kriterium erf&uuml;llen und bei denen das genannte Feld keinen Nullwert enth&auml;lt. <\/p>\n<p>Alle diese Funktionen ermitteln die gesuchten Informationen aus allen Datens&auml;tzen, die das im Kriterienausdruck &uuml;bergebene Kriterium erf&uuml;llen bzw. aus allen Datens&auml;tzen der Dom&auml;ne, wenn kein Kriterium angegeben wurde.<\/p>\n<p>Datens&auml;tze, bei denen der gesuchte Ausdruck einen Nullwert zur&uuml;ckliefert, werden ignoriert. Dies ist unter anderem bei der Ermittlung des Mittelwertes wichtig, um Verf&auml;lschungen durch eine hohe Zahl von nicht eingegebenen Datensatzfeldern zu verhindern.<\/p>\n<p>Wie alle Dom&auml;nenfunktionen (au&szlig;er DomAnzahl()) liefern auch diese Funktionen einen Nullwert zur&uuml;ck, wenn kein Datensatz das Kriterium erf&uuml;llt beziehungsweise die Dom&auml;ne keinen Datensatz enth&auml;lt. Da es sich bei den Ergebnissen dieser Dom&auml;nenfunktionen um mathematische Berechnungen handelt, muss der als Ausdruck &uuml;bergebene Parameter einen numerischen Wert ergeben. Andernfalls liefern diese Funktionen den Wert #Fehler als Ergebnis zur&uuml;ck.<\/p>\n<p>Eine weitere Besonderheit ist bei den statistischen Dom&auml;nenfunktionen DomVarianz() und DomStdAbw() zu beachten. Diese ermitteln ihre Ergebnisse aus einer Stichprobe und nicht wie ihre Pendants mit dem G am Ende aus der Gesamtheit der Datens&auml;tze und ben&ouml;tigen daher mindestens zwei Datens&auml;tze in der Ergebnismenge, um ein anderes Resultat als einen Nullwert zu liefern.<\/p>\n<h2>Praxisbeispiel: Prozent vom Gesamtumsatz<\/h2>\n<p>F&uuml;r Unternehmen ist es wichtig zu wissen, welchen Anteil der Umsatz mit einem bestimmten Kunden am Gesamtumsatz ausmacht. In der Abfrage qryProzentualerUmsatz wird mit Hilfe der Funktion DomSumme() der Gesamtumsatz berechnet und der kumulierte Umsatz des einzelnen Kunden durch dieses Ergebnis dividiert (siehe Bild 5). Das Ergebnis dieser Division &#8211; als Prozentzahl formatiert &#8211; liefert bereits die gew&uuml;nschte Information.<\/p>\n<p><IMG height=\"218\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Die DomWert-Funktion in dieser Abfrage muss f&uuml;r jeden Datensatz ausgef&uuml;hrt werden.<\/span><\/b><\/p>\n<h3>Performance-Falle Dom&auml;nenfunktion<\/h3>\n<p>Dom&auml;nenfunktionen sind einfach und flexibel einsetzbar, f&uuml;hren aber oft zu erheblichen Performance-Verlusten. Besonders bei der Verwendung innerhalb einer Abfrage kann es bei un&uuml;berlegtem Einsatz dieser Funktionen zu inakzeptablen Geschwindigkeitseinbu&szlig;en kommen. <\/p>\n<p>Wenn Sie Dom&auml;nenfunktionen einsetzen, m&uuml;ssen Sie sich dar&uuml;ber im Klaren sein, dass jede dieser Funktionen eine eigene Abfrage darstellt, die &uuml;ber die darin festgelegte Dom&auml;ne ausgef&uuml;hrt wird. Je nach der Definition der Abfrage, in der eine Dom&auml;nenfunktion verwendet wird, kann es daher sein, dass die Abfrage der Dom&auml;nenfunktion f&uuml;r jeden Datensatz der eigentlichen Abfrage erneut ausgef&uuml;hrt werden muss. Oft gibt es jedoch andere Alternativen, die in wesentlich k&uuml;rzerer Zeit zum gleichen Ergebnis f&uuml;hren.<\/p>\n<h3>Dom&auml;nenfunktion &#8211; nein danke<\/h3>\n<p>Eine Dom&auml;nenfunktion ist prinzipiell nichts weiter als eine eigene Abfrage, die etwa innerhalb einer &#8222;richtigen&#8220; Abfrage eingesetzt werden kann &#8211; beispielsweise als Wert oder als Kriterium.<\/p>\n<p>B&ouml;se Zungen behaupten, Dom&auml;nenfunktionen innerhalb von Abfragen seien generell schlecht. Das kann man so nicht stehen lassen.<\/p>\n<p>Wenn Sie eine Dom&auml;nenfunktion in einer Abfrage verwenden, um einen von dem jeweiligen Datensatz unabh&auml;ngigen Wert zu ermitteln, wird dieser Wert zwar in jedem Datensatz des Ergebnisses ausgegeben, aber nur einmal ermittelt.<\/p>\n<p>Aber wie wirkt sich der Einsatz einer Dom&auml;nenfunktion aus, wenn diese tats&auml;chlich f&uuml;r jeden Datensatz des Abfrageergebnisses aufgerufen wird Immerhin gibt es in den meisten F&auml;llen eine Variante, bei der Sie die zu ermittelnden Daten inklusive der zugrunde liegenden Tabelle via JOIN in die durchzuf&uuml;hrende Abfrage einbetten. Vorurteilen gem&auml;&szlig; ist die Variante mit JOIN der Variante mit Dom&auml;nenfunktion aus Performance-Gr&uuml;nden vorzuziehen.<\/p>\n<p>Ob dies tats&auml;chlich so ist, l&auml;sst sich ganz einfach mit einem Performance-Test festlegen.<\/p>\n<p>Als Grundlage f&uuml;r den folgenden Test dienen die beiden Abfragen aus Bild 6 und Abb. 7. Das Abfrageergebnis liefert die Verkaufspreise und die Originalpreise f&uuml;r bestellte Artikel, wobei der Originalpreis per DomWert-Funktion ermittelt wird. Da hier immer ein Wert des aktuellen Datensatzes &#8211; in diesem Fall die Artikelnummer &#8211; an die DomWert-Funktion &uuml;bergeben wird, muss die DomWert-Funktion f&uuml;r jeden Datensatz aufgerufen werden.<\/p>\n<p>Die meisten Anwendungsf&auml;lle, die scheinbar den Einsatz einer Dom&auml;nenfunktion erfordern, lassen sich allerdings mit einer alternativen Abfrage l&ouml;sen.<\/p>\n<p>Wenn Sie die Abfrage aus Bild 7 betrachten, sehen Sie, dass die hier gefundene L&ouml;sung sehr intuitiv und auch wesentlich einfacher als die Abfrage mit der Dom&auml;nenfunktion aus dem vorherigen Beispiel ist &#8211; zumindest, wenn man einigerma&szlig;en mit den Grunds&auml;tzen relationaler Datenmodelle vertraut ist. <\/p>\n<p><IMG height=\"413\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic007.png\" width=\"382\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Diese Abfrage liefert das gleiche Ergebnis wie die aus der vorherigen Abbildung, ist aber deutlich schneller.<\/span><\/b><\/p>\n<p>Bleibt die Frage, ob die zweite Variante nun wirklich so viel schneller als die erste Variante ist.<\/p>\n<p>Um dies herauszufinden, k&ouml;nnen Sie das Performance-Tool aus oben genanntem Beitrag hinzuziehen. Wenn Sie dieses bereits als Add-In eingebunden haben, w&auml;hlen Sie bei ge&ouml;ffneter Beispieldatenbank einfach den Eintrag Extras\/Add-Ins\/Performance-Test aus und setzen die Kombinationsfelder auf die in **** abgebildeten Werte. Die zum Testen der Abfragen notwendigen Funktionen finden Sie im Modul mdlPerformancetest der Beispieldatenbank. Der Performance-Test offenbart, dass zumindest f&uuml;r diese Konfiguration mit relativ wenigen Datens&auml;tzen die DLookup-Variante etwa doppelt so schnell wie die INNER JOIN-Variante ist. Das kann unter anderen Voraussetzungen nat&uuml;rlich ganz anders aussehen.<\/p>\n<p>Wenn Sie die Syntax der Dom&auml;nenfunktionen einmal verinnerlicht haben, sind diese ein willkommenes Werkzeug, wenn es um die Abfrage von Werten aus der Datenbank per Einzeiler geht. Unter Umst&auml;nden lassen sich diese Funktionen selbst in Abfragen Gewinn bringend einsetzen, man sollte jedoch immer pr&uuml;fen, ob es nicht eine Variante ohne Dom&auml;nenfunktionen mit besserer Performance gibt. In einer der folgenden Ausgaben von Access im Unternehmen erfahren Sie, wie Sie die Dom&auml;nenfunktionen durch eigene, schnellere Funktionen ersetzen k&ouml;nnen.<\/p>\n<p><IMG height=\"417\" src=\"..\/fileadmin\/_temp_\/{B9A3E25B-8E0E-4DD1-B54A-C599AA7E2C98}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Dom&auml;nenfunktionen k&ouml;nnen eine schnelle Alternative zu Abfragen mit verkn&uuml;pften Tabellen sein.<\/span><\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Beitrag stellt Ihnen eine Gruppe von Funktionen vor, die einen recht einfachen Zugriff auf Daten in beliebigen Tabellen oder Abfragen einer Access-Datenbank erm&ouml;glichen. Mit diesen so genannten Dom&auml;nenfunktionen ist es m&ouml;glich, Tabellendaten in Form von Funktionsergebnissen zum Beispiel als Feldinhalte oder als Kriterien in Abfragen zur Verf&uuml;gung zu stellen.  Anhand einiger Praxis-beispiele erfahren Sie, in welchen F&auml;llen der Einsatz von Dom&auml;nenfunktionen sinnvoll ist und wann es besser ist, auf andere Alternativen zur Datenermittlung zur&uuml;ckzugreifen.<\/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":[66012006,662006,44000025],"tags":[],"class_list":["post-55000317","post","type-post","status-publish","format-standard","hentry","category-66012006","category-662006","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dom&auml;nenfunktionen - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dom&auml;nenfunktionen\" \/>\n<meta property=\"og:description\" content=\"Dieser Beitrag stellt Ihnen eine Gruppe von Funktionen vor, die einen recht einfachen Zugriff auf Daten in beliebigen Tabellen oder Abfragen einer Access-Datenbank erm&ouml;glichen. Mit diesen so genannten Dom&auml;nenfunktionen ist es m&ouml;glich, Tabellendaten in Form von Funktionsergebnissen zum Beispiel als Feldinhalte oder als Kriterien in Abfragen zur Verf&uuml;gung zu stellen. Anhand einiger Praxis-beispiele erfahren Sie, in welchen F&auml;llen der Einsatz von Dom&auml;nenfunktionen sinnvoll ist und wann es besser ist, auf andere Alternativen zur Datenermittlung zur&uuml;ckzugreifen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:18:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Dom&auml;nenfunktionen\",\"datePublished\":\"2020-05-06T15:18:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/\"},\"wordCount\":3300,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/40c3a323adbf44718709eba717b6e022\",\"articleSection\":[\"1\\\/2006\",\"2006\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/\",\"name\":\"Dom&auml;nenfunktionen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/40c3a323adbf44718709eba717b6e022\",\"datePublished\":\"2020-05-06T15:18:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/40c3a323adbf44718709eba717b6e022\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/40c3a323adbf44718709eba717b6e022\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Domaenenfunktionen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dom&auml;nenfunktionen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dom&auml;nenfunktionen - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/","og_locale":"de_DE","og_type":"article","og_title":"Dom&auml;nenfunktionen","og_description":"Dieser Beitrag stellt Ihnen eine Gruppe von Funktionen vor, die einen recht einfachen Zugriff auf Daten in beliebigen Tabellen oder Abfragen einer Access-Datenbank erm&ouml;glichen. Mit diesen so genannten Dom&auml;nenfunktionen ist es m&ouml;glich, Tabellendaten in Form von Funktionsergebnissen zum Beispiel als Feldinhalte oder als Kriterien in Abfragen zur Verf&uuml;gung zu stellen. Anhand einiger Praxis-beispiele erfahren Sie, in welchen F&auml;llen der Einsatz von Dom&auml;nenfunktionen sinnvoll ist und wann es besser ist, auf andere Alternativen zur Datenermittlung zur&uuml;ckzugreifen.","og_url":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:18:12+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Dom&auml;nenfunktionen","datePublished":"2020-05-06T15:18:12+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/"},"wordCount":3300,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022","articleSection":["1\/2006","2006","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/","url":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/","name":"Dom&auml;nenfunktionen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022","datePublished":"2020-05-06T15:18:12+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/40c3a323adbf44718709eba717b6e022"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Domaenenfunktionen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Dom&auml;nenfunktionen"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000317"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000317\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}