{"id":55000102,"date":"2003-04-01T00:00:00","date_gmt":"2021-02-10T20:24:09","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=102"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Eigene_Controls_mit_Access_entwickeln","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/","title":{"rendered":"Eigene Controls mit Access entwickeln"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Christoph Spielmann, D&uuml;sseldorf<\/b><\/p>\n<p><b>Zu einer guten Entwicklungsumgebung geh&ouml;rt normalerweise die M&ouml;glichkeit, dass sich die zur Verf&uuml;gung gestellten Bausteine wie Klassen, Objekte und Steuerelemente mit den Bordmitteln beliebig erweitern und erg&auml;nzen lassen. Leider ist Access hier insbesondere im Bereich der Steuerelemente gravierend eingeschr&auml;nkt. Dieser Artikel zeigt Ihnen, wie Sie trotzdem neue Controls mit Access entwickeln und einsetzen k&ouml;nnen.<\/b><\/p>\n<p>Eine besondere Eigenschaft von Steuerelementen ist, dass Sie ein einziges Mal programmiert bzw. definiert werden und dann in unterschiedlichen Formularen beliebig oft eingesetzt werden k&ouml;nnen.<\/p>\n<p>Eine weitere Eigenschaft ist, dass sie universell einsetzbar sind und sich je nach Einsatzgebiet ggf. an die besonderen Bedingungen anpassen lassen. Solche Eigenschaften stellen unter Access im Prinzip alle eingebauten Steuerelemente zur  Verf&uuml;gung, jedoch bietet nur ein Steuerelement die M&ouml;glichkeit zur individuellen Programmierung. Hierbei handelt es sich um das Unterformular-Steuerelement.<\/p>\n<p>Die Besonderheit dieses Steuerelements ist, dass Sie hier ein beliebiges Formular innerhalb eines anderen Formulars anzeigen k&ouml;nnen. Dies funktioniert nat&uuml;rlich auch mehrfach.<\/p>\n<p>So kann beispielsweise ein Unterformular innerhalb eines Formulars auch mehrmals angezeigt werden.<\/p>\n<p>Das Unterformular-Steuerelement sorgt hierbei automatisch daf&uuml;r, dass von dem betreffenden Formular mehrere Instanzen erzeugt werden, die zwar auf der gleichen Formulardefinition basieren, aber ansonsten unabh&auml;ngig sind. Beispielsweise kann der Wert einer privaten Variablen in den unterschiedlichen Instanzen auch unterschiedliche Werte annehmen, obwohl diese Variable nur ein einziges Mal definiert ist.<\/p>\n<p>In diesem Zusammenhang verwendet man h&auml;ufig die beiden Begriffe Klasse und Objekt. Eine Klasse ist eine Schema-Definition, also quasi eine Bauanleitung. Auf der Basis einer Klasse k&ouml;nnen dann mehrere Objekte (oder Objektinstanzen) erzeugt werden.<\/p>\n<p>Bei einem Formular innerhalb des Datenbankfensters von Access handelt es sich immer um eine Klasse. Erst wenn Sie das Formular &ouml;ffnen, wird ein entsprechendes Objekt erzeugt.<\/p>\n<p>Mit Hilfe von VBA-Programmcode ist es sogar m&ouml;glich, mehrere Objektinstanzen eines Formulars zu erzeugen.<\/p>\n<p>Das Formular erscheint in diesem Fall mehrfach auf dem Bildschirm, was zum Beispiel bei der gleichzeitigen Bearbeitung mehrerer Datens&auml;tze Sinn machen k&ouml;nnte.<\/p>\n<p>Einen &auml;hnlichen Effekt erzielen Sie, wenn Sie ein Formular mehrmals als Unterformular in ein Hauptformular einbetten.<\/p>\n<p>Um die Anlage der einzelnen Objektinstanzen k&uuml;mmert sich in diesem Fall Access selbst.<\/p>\n<p><IMG height=\"321\" src=\"..\/fileadmin\/_temp_\/{5718F3D4-8D30-4615-AE5C-4048ABD5A70F}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Die PickList im Einsatz<\/span><\/b><\/p>\n<p><IMG height=\"359\" src=\"..\/fileadmin\/_temp_\/{5718F3D4-8D30-4615-AE5C-4048ABD5A70F}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Aufbau der Tabelle tblAdressen<\/span><\/b><\/p>\n<p><IMG height=\"360\" src=\"..\/fileadmin\/_temp_\/{5718F3D4-8D30-4615-AE5C-4048ABD5A70F}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Das Formular frmTest in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Das hier vorgestellte Beispiel zeigt Ihnen, wie Sie eine so genannte &#8222;Pick-List&#8220; als Steuerelement realisieren. Hierbei handelt es sich um zwei Listenfelder, zwischen denen Sie Eintr&auml;ge durch Doppelklicks von links nach rechts &uuml;bernehmen k&ouml;nnen (siehe Bild 1).<\/p>\n<p>Solche Steuerelemente werden z. B. dann eingesetzt, wenn Sie aus einer Tabelle mehrere Eintr&auml;ge selektieren m&ouml;chten.<\/p>\n<p>Eine wichtige Anforderung an dieses Steuerelement ist, dass es m&ouml;glichst universell und ohne viel Programmieraufwand eingesetzt werden kann.<\/p>\n<p>Dementsprechend greift das Steuerelement nicht direkt auf eine bestimmte Access-Tabelle zu, sondern erwartet die Angabe der Tabelle als Konfigurationsparameter. Einzige Anforderung ist, dass die zugrunde liegende Tabelle ein aktualisierbares Ja\/Nein-Feld enth&auml;lt.<\/p>\n<p>In der Beispieldatenbank Control.mdb finden Sie eine entsprechende Tabelle namens tblAdressen (siehe Bild 2). Das Ja\/Nein-Feld IstAusgew&auml;hlt bestimmt hierbei, ob die Adresse (z. B. f&uuml;r einen Serienbrief) selektiert ist.<\/p>\n<p>Weiterhin enth&auml;lt die Beispieldatenbank das Formular ctlPickList, also das eigentliche Steuerelement sowie das Formular frmTest (siehe Bild 3) als Test-Container f&uuml;r das Steuerelement. Innerhalb des Formulars frmTest befindet sich ein Unterformular-Steuerelement, das ebenfalls den Namen ctlPickList tr&auml;gt.<\/p>\n<pre>Private Sub Form_Load()\r\n    Me.ctlPickList.Form.SetDataSource \"tblAdressen\", _        \"Nachname\", \"AdresseID\", \"IstAusgew&auml;hlt\", \"\"\r\nEnd Sub<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>Public Sub SetDataSource(DataSource As String, _    DisplayField As String, KeyField As String, _    SelectionField As String, Condition As String)\r\n    m_DataSource = DataSource\r\n    m_DisplayField = DisplayField\r\n    m_KeyField = KeyField\r\n    m_SelectionField = SelectionField\r\n    m_Condition = Condition\r\n    RefreshData\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Option Compare Database\r\nOption Explicit\r\nPrivate m_DataSource As String\r\nPrivate m_DisplayField As String\r\nPrivate m_KeyField As String\r\nPrivate m_SelectionField As String\r\nPrivate m_Condition As String<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Hier ist das gleichnamige Formular als Unterformular untergebracht. Damit das Steuerelement nicht als Unterformular erkennbar ist, sind s&auml;mtliche Rahmen und Navigationselemente des Unterformulars ausgeblendet.<\/p>\n<p>Wie bereits angedeutet, ist eine wesentliche Anforderung an das Steuerelement eine einfache Benutzung. Dementsprechend erfolgt die Initialisierung des Steuerelements durch nur eine Programmzeile im Load-Ereignis des Formulars frmTest (s. Quellcode 1).<\/p>\n<p>Die Initialisierung erfolgt mit Hilfe der SetDataSource-Funktion, der lediglich einige Daten zu der Tabelle &uuml;bergeben werden, auf der die PickList basieren soll. Dazu geh&ouml;ren beispielsweise der Tabellenname, der Name des Anzeigefeldes, der Name des Prim&auml;rschl&uuml;sselfeldes sowie der Name des Ja\/Nein-Feldes.<\/p>\n<p>Nach der Initialisierung ist das Steuerelement bereits voll einsatzf&auml;hig.<\/p>\n<p>Die komplette Logik zur Anzeige sowie Aktualisierung der Daten ist in dem Klassenmodul des Formulars ctlPickList untergebracht.<\/p>\n<p>Die Hauptprozedur SetDataSource haben Sie bereits kennen gelernt. Sie dient der Initialisierung des Steuerelements (s. Quellcode 2).<\/p>\n<p>Diese Prozedur macht nichts anderes als die &uuml;bergebenen Parameter an private Variablen des Klassenmoduls zu &uuml;bergeben.<\/p>\n<p>Diese Variablen werden auch als &#8222;Member&#8220;-Variablen der Klasse bezeichnet, weswegen ihnen h&auml;ufig das Pr&auml;fix &#8222;m_&#8220; vorangestellt wird. Die Member-Variablen sind im Kopf des Klassenmoduls deklariert (s. Quellcode 3).<\/p>\n<p>Als letzte Anweisung wird von der SetDataSource-Methode die RefreshData-Methode aufgerufen. Sie ist f&uuml;r die Aktualisierung der linken und der rechten Liste zust&auml;ndig (s. Quellcode 4). In der linken Liste werden nur Eintr&auml;ge aufgelistet, bei denen das Ja\/Nein-Feld den Wert False hat. Alle &uuml;brigen Eintr&auml;ge werden in der rechten Liste aufgef&uuml;hrt.<\/p>\n<pre>Public Sub RefreshData()\r\n    Dim SQLBase As String\r\n    Dim SQLAll As String\r\n    Dim SQLSelected As String\r\n    SQLBase = \"SELECT \" + m_DisplayField + \", _        \" + m_KeyField + \" FROM \" + m_DataSource\r\n    If Len(m_Condition) &gt; 0 Then\r\n        SQLBase = SQLBase + \" WHERE \" + m_Condition\r\n    Else\r\n        SQLBase = SQLBase + \" WHERE True\"\r\n    End If\r\n    SQLAll = SQLBase\r\n    SQLAll = SQLAll + \" AND \" + m_SelectionField _        + \"=False\"\r\n    SQLAll = SQLAll + \" ORDER BY \" + m_DisplayField\r\n    SQLSelected = SQLBase\r\n    SQLSelected = SQLSelected + \" AND \" _        + m_SelectionField + \"=True\"\r\n    SQLSelected = SQLSelected + \" ORDER BY \" _        + m_DisplayField\r\n    Me.lstAll.RowSource = SQLAll\r\n    Me.lstSelected.RowSource = SQLSelected\r\n    Me.lstAll.Requery\r\n    Me.lstSelected.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Private Sub btnSelect_Click()\r\n    Dim ID As Integer\r\n    Dim SQL As String\r\n    If IsNull(Me.lstAll.Value) Then Exit Sub\r\n    Cancel = False\r\n    ID = Me.lstAll.Value\r\n    SQL = \"UPDATE \" + m_DataSource + \" SET \" _        + m_SelectionField + \"=True WHERE \" _        + m_KeyField + \"=\" + CStr(ID)\r\n    On Error Resume Next\r\n    CurrentProject.Connection.Execute SQL\r\n    If Err.Number = 0 Then\r\n        Me.RefreshData\r\n    Else\r\n        Err.Raise vbObjectError + 1, _            \"Datensatz konnte nicht ausgew&auml;hlt werden\"\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Die Prozedur stellt zu diesem Zweck mit Hilfe der Informationen der Member-Variablen zwei SQL-Anweisungen zusammen und weist diese der RowSource-Eigenschaft der betreffenden Listenfelder zu. Abschlie&szlig;end erfolgt noch eine Aktualisierung mittels Requery-Methode.<\/p>\n<p>Um einen Eintrag von der linken in die rechte Liste zu bef&ouml;rdern, klickt der Benutzer die Schaltfl&auml;che &#8222;&gt;&#8220; an, die sich zwischen den beiden Listenfeldern befindet. Diese Schaltfl&auml;che ist mit der Ereignisprozedur aus Quellcode 5 verkn&uuml;pft.<\/p>\n<p>Auf &auml;hnliche Weise wie bereits bei der Aktualisierung der beiden Listenfelder stellt auch diese Prozedur zun&auml;chst eine SQL-Anweisung zusammen. Diesmal handelt es sich allerdings um eine Aktualisierungsabfrage (UPDATE), die den Wert des Ja\/Nein-Feldes auf True setzt.<\/p>\n<p>Da bei der &auml;nderung von Daten mit Fehlern zu rechnen ist (z. B. fehlende Schreibrechte oder Datensatzsperren) wird die Ausf&uuml;hrung der SQL-Anweisung in eine Fehlerbehandlungsroutine gekapselt. Diese hat die folgende Struktur:<\/p>\n<p>Durch die Resume-Next-Anweisung (s. Quellcode 6) werden zun&auml;chst einmal alle Fehler ignoriert. Anschlie&szlig;end wird mit Err.Number gepr&uuml;ft, ob ein Fehler aufgetreten ist. Dieser wird dann ggf. behandelt.<\/p>\n<p>Der Vorteil dieser Struktur ist, dass Fehler immer sofort an der Stelle behandelt werden, an der sie auftreten. Dies ist in vielen F&auml;llen ein deutlicher Vorteil gegen&uuml;ber den Sprungmarken der On-Error-Goto-Anweisung. Zudem entspricht dies dem Try-Catch-Finally-Konstrukt, das z. B. von VB.NET zur Behandlung von Fehlern eingesetzt wird.<\/p>\n<p>Die btnSelect_Click-Ereignisprozedur nutzt dieses Konstrukt, um im Fehlerfall eine Meldung anzuzeigen und im Erfolgsfall die beiden Listenfelder zu aktualisieren.<\/p>\n<h3>Entfernen von Eintr&auml;gen<\/h3>\n<pre>On Error Resume Next\r\n    &lt;Anweisungen&gt;    \r\nIf Err.Number = 0 Then\r\n    &lt;Anweisungen im Nicht-Fehlerfall&gt;\r\nElse\r\n    &lt;Anweisungen im Fehlerfall&gt;\r\nEnd If<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<pre>Private Sub lstAll_DblClick(Cancel As Integer)\r\n    btnSelect_Click\r\nEnd Sub\r\nPrivate Sub lstSelected_DblClick(Cancel As Integer)\r\n    btnUnSelect_Click\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>Zum Entfernen von Eintr&auml;gen aus der rechten Liste ist die Ereignisprozedur des Buttons &#8222;&lt;&#8220; zust&auml;ndig.<\/p>\n<p>Sie hat einen fast identischen Aufbau. Anstatt das Ja\/Nein-Feld auf True zu setzen, wird dieses jedoch auf False gesetzt. Au&szlig;erdem greift sie nicht auf das linke, sondern das rechte Listenfeld zu. Den kompletten Aufbau entnehmen Sie der Beispieldatenbank.<\/p>\n<h3>Auswahl per Doppelklick<\/h3>\n<p>Um das Hinzuf&uuml;gen und Entfernen von Eintr&auml;gen weiter zu vereinfachen, kann der Benutzer anstelle eines Klicks auf die beiden Schaltfl&auml;chen alternativ auch doppelt auf einen Listeneintrag klicken.<\/p>\n<p>Hierzu sind die beiden Doppelklick-Ereignisse der Listenfelder mit den Ereignisprozeduren aus Quellcode 7 verkn&uuml;pft:<\/p>\n<p>Wie Sie sehen, werden lediglich die betreffenden Ereignisprozeduren der beiden Schaltfl&auml;chen aufgerufen.<\/p>\n<p>Die hier vorgestellte Technik zur Entwicklung von Steuerelementen mit Access bietet sich immer dann an, wenn ein identisches Use-Interface-Element mehrmals in einem Formular oder einer Anwendung auftaucht.<\/p>\n<p>Sie sparen dadurch das Kopieren von Programmcode, was Ihre Anwendung &uuml;bersichtlicher und damit pflegeleichter macht.<\/p>\n<p>Leider gibt es auch Nachteile. So k&ouml;nnen mit Hilfe von Unterformularen entwickelte Steuerelemente keine nutzbaren Ereignisse ausl&ouml;sen, was den Einsatzbereich einschr&auml;nkt.<\/p>\n<p>Sollten Sie darauf nicht verzichten k&ouml;nnen, bleibt Ihnen leider nur der Einsatz von Visual Basic &uuml;brig.<\/p>\n<p>Hier k&ouml;nnen Sie Steuerelemente entwickeln, die Sie innerhalb von Access genauso wie die fest eingebauten Steuerelemente verwenden k&ouml;nnen und die sich kaum davon unterscheiden.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Control.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/08DCC0A3-EB2C-4DB9-8611-9B345EF3D152\/aiu_102.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Assistenten sind eigentlich etwas f&uuml;r Anf&auml;nger. Ein Profi macht alles selbst, da er alles hundertprozentig unter Kontrolle haben m&ouml;chte und die Assistenten sowieso immer viel mehr Code und andere Nebenprodukte erzeugen als alles andere. Stop! Bevor weitere Vorurteile gegen Assistenten gesch&uuml;rt werden, stellen Sie sich doch einmal vor, es g&auml;be extrem nervige und vor allem immer wiederkehrende Aufgaben, die Sie am liebsten zum Teufel jagen w&uuml;rden. Das kennen Sie Und kein  Assistent in der N&auml;he Dann bauen Sie sich doch einfach selbst einen!<\/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":[66022003,662003,44000028,44000023],"tags":[],"class_list":["post-55000102","post","type-post","status-publish","format-standard","hentry","category-66022003","category-662003","category-Ergonomie_und_Benutzeroberflaeche","category-Mit_Formularen_arbeiten"],"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>Eigene Controls mit Access entwickeln - 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\/Eigene_Controls_mit_Access_entwickeln\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eigene Controls mit Access entwickeln\" \/>\n<meta property=\"og:description\" content=\"Assistenten sind eigentlich etwas f&uuml;r Anf&auml;nger. Ein Profi macht alles selbst, da er alles hundertprozentig unter Kontrolle haben m&ouml;chte und die Assistenten sowieso immer viel mehr Code und andere Nebenprodukte erzeugen als alles andere. Stop! Bevor weitere Vorurteile gegen Assistenten gesch&uuml;rt werden, stellen Sie sich doch einmal vor, es g&auml;be extrem nervige und vor allem immer wiederkehrende Aufgaben, die Sie am liebsten zum Teufel jagen w&uuml;rden. Das kennen Sie Und kein Assistent in der N&auml;he Dann bauen Sie sich doch einfach selbst einen!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-10T20:24:09+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498\" \/>\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=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Eigene Controls mit Access entwickeln\",\"datePublished\":\"2021-02-10T20:24:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/\"},\"wordCount\":1373,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/fd51a8b0ffad442e895f9d74c53e0498\",\"articleSection\":[\"2\\\/2003\",\"2003\",\"Ergonomie und Benutzeroberfl\u00e4che\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/\",\"name\":\"Eigene Controls mit Access entwickeln - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/fd51a8b0ffad442e895f9d74c53e0498\",\"datePublished\":\"2021-02-10T20:24:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/fd51a8b0ffad442e895f9d74c53e0498\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/fd51a8b0ffad442e895f9d74c53e0498\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Eigene_Controls_mit_Access_entwickeln\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Eigene Controls mit Access entwickeln\"}]},{\"@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":"Eigene Controls mit Access entwickeln - 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\/Eigene_Controls_mit_Access_entwickeln\/","og_locale":"de_DE","og_type":"article","og_title":"Eigene Controls mit Access entwickeln","og_description":"Assistenten sind eigentlich etwas f&uuml;r Anf&auml;nger. Ein Profi macht alles selbst, da er alles hundertprozentig unter Kontrolle haben m&ouml;chte und die Assistenten sowieso immer viel mehr Code und andere Nebenprodukte erzeugen als alles andere. Stop! Bevor weitere Vorurteile gegen Assistenten gesch&uuml;rt werden, stellen Sie sich doch einmal vor, es g&auml;be extrem nervige und vor allem immer wiederkehrende Aufgaben, die Sie am liebsten zum Teufel jagen w&uuml;rden. Das kennen Sie Und kein Assistent in der N&auml;he Dann bauen Sie sich doch einfach selbst einen!","og_url":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-10T20:24:09+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Eigene Controls mit Access entwickeln","datePublished":"2021-02-10T20:24:09+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/"},"wordCount":1373,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498","articleSection":["2\/2003","2003","Ergonomie und Benutzeroberfl\u00e4che","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/","url":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/","name":"Eigene Controls mit Access entwickeln - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498","datePublished":"2021-02-10T20:24:09+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/fd51a8b0ffad442e895f9d74c53e0498"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Eigene_Controls_mit_Access_entwickeln\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Eigene Controls mit Access entwickeln"}]},{"@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\/55000102","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=55000102"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000102\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}