{"id":55000274,"date":"2005-04-01T00:00:00","date_gmt":"2020-05-06T15:17:58","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=274"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AccessFAQ_Rund_um_Formulare","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/","title":{"rendered":"Access-FAQ: Rund um Formulare"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Karl Donaubauer, Wien<\/b><\/p>\n<p><b>In der Access-FAQ von Karl Donaubauer (www.donkarl.com) finden Sie die meistgestellten Fragen und Anworten zum Thema Microsoft Access. In dieser Beitragsreihe stellt Karl Donaubauer die wichtigsten Eintr&auml;ge im Detail vor und zeigt Ihnen entsprechende L&ouml;sungen anhand praxisnaher Beispiele. Im siebten Teil lernen Sie die L&ouml;sungen zu den meistgenannten Problemen der Teilnehmer der deutschsprachigen Access-Newsgroups im Zusammenhang mit Formularen und Unterformularen kennen.<\/b><\/p>\n<p>In vielen Situationen ist es notwendig zu wissen, ob ein bestimmtes Formular ge&ouml;ffnet ist, zum Beispiel damit ein Requery-Befehl oder ein anderer Bezug auf das Formular nicht zu einem Fehler f&uuml;hren kann. Es gibt etliche Methoden, um den Zustand eines Formulars zu pr&uuml;fen. Eine ist das Durchlaufen der Forms-Auflistung, in der ja immer nur alle aktuell ge&ouml;ffneten Formulare stehen:<\/p>\n<pre>Dim frm As Form\r\nFor Each frm In Application.Forms\r\n    If frm.Name = \"FormularName\" Then\r\n        ''Aktionen durchf&uuml;hren\r\n    End If\r\nNext frm<\/pre>\n<p>Der einzige kleine Nachteil dieser Methode, die in allen Access-Versionen funktioniert, ist eine in der Praxis kaum jemals merkbare Verz&ouml;gerung, weil alle ge&ouml;ffneten Formulare durchlaufen werden m&uuml;ssen. <\/p>\n<p>Eine andere Variante ist die Verwendung der Funktion SysCmd, die bis Access 2.0 noch undokumentiert war und seit Access 95 offiziell zur Verf&uuml;gung steht. Am besten verwenden Sie dazu die folgende kleine Funktion in einem Standardmodul:<\/p>\n<pre>Public Function fctIsFormOpen( _    StrFrmName As String) As Boolean\r\n    fctIsFormOpen =        (SysCmd(acSysCmdGetObjectState, _        acForm, StrFrmName) &gt; 0)\r\nEnd Function<\/pre>\n<h3>Hinweis<\/h3>\n<p>Auf der Begleit-CD finden Sie Beispiel-Datenbanken im Format von Access 97 und Access 2000 mit den Quellcodes und Beispielen aus diesem Artikel. <\/p>\n<p>Die Funktion liefert True oder False zur&uuml;ck, je nachdem, ob das Formular ge&ouml;ffnet ist oder nicht. Der typische Aufruf dieser Funktion sieht dann so aus:<\/p>\n<pre>If fctIsFormOpen(\"NameDesFormulares\") Then ...<\/pre>\n<p>Ab Access 2000 hat Microsoft endlich eine M&ouml;glichkeit zur Pr&uuml;fung in die Access-Bibliothek eingebaut. Es handelt sich um die Eigenschaft IsLoaded. Damit k&ouml;nnen Sie f&uuml;r alle Access-Objekte, also auch f&uuml;r Tabellen, Abfragen und so weiter, pr&uuml;fen, ob sie aktuell ge&ouml;ffnet sind. F&uuml;r ein Formular sieht das so aus (in einer Zeile):<\/p>\n<p><IMG height=\"366\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic001.png\" width=\"431\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Zwei Instanzen desselben Formulars<\/span><\/b><\/p>\n<pre>Dim myCopy As Form\r\nPrivate Sub btnNeueInstanz_Click()\r\n    Dim rs As DAO.Recordset\r\n    Set myCopy = New Form_frmInstanzen\r\n    Set rs = myCopy.RecordsetClone\r\n    With myCopy\r\n        .Visible = True\r\n        .Caption = .Caption & \" - Kopie\"\r\n        DoCmd.MoveSize 2000, 2000\r\n        If Not IsNull(Me!cboAuswahl) Then\r\n            rs.FindFirst \"ArtikelId = \" & Me!cboAuswahl\r\n            If Not rs.NoMatch Then\r\n              .Bookmark = rs.Bookmark\r\n            End If\r\n        End If\r\n    End With\r\n    Set rs = Nothing\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>CurrentProject.AllForms(\"FormularName\").IsLoaded<\/pre>\n<p>Im Gegensatz zur oben angef&uuml;hrten Pr&uuml;fung mit der selbst erstellten Funktion liefert die Eigenschaft IsLoaded drei m&ouml;gliche Ergebnisse. True, wenn das Objekt ge&ouml;ffnet ist, False, wenn es nicht ge&ouml;ffnet ist, und als dritte Variante den Laufzeitfehler 2467, wenn ein nicht vorhandener Objektname verwendet wurde. Den Fehler k&ouml;nnen Sie nat&uuml;rlich abfangen, aber das bedeutet immerhin etwas Mehrarbeit.<\/p>\n<p>Ab der Version 95 bietet Access die M&ouml;glichkeit, mehrere Instanzen desselben Formulars zu &ouml;ffnen. Das typische Anwendungsbeispiel ist das Anzeigen mehrerer Datens&auml;tze neben- oder &uuml;bereinander (siehe Bild 1).<\/p>\n<p>In der Beispiel-Datenbank zu diesem Artikel finden Sie das Formular frmInstanzen, das den n&ouml;tigen Code und die praktische Anwendung demonstriert (s. Quellcode 1).<\/p>\n<p>Im Kombinationsfeld des Beispielformulars k&ouml;nnen Sie einen anderen Artikel ausw&auml;hlen, der dann beim Klicken der Befehlsschaltfl&auml;che in einer neuen Formularinstanz angezeigt wird.<\/p>\n<p>Von &#8222;Instanzen&#8220; spricht man in diesem Zusammenhang schon deshalb, weil es sich um eine neue Instanz der Klasse des Formulars handelt. Das ist eine der vielen Gelegenheiten, bei denen man Access beziehungsweise VBA die Objektorientierung ansieht.<\/p>\n<p>Die wesentlichen Teile des Codes sind dementsprechend objektorientiert. Zuerst erfolgt die Deklaration eines Formular-Objekts im Deklarationsbereich des Formular-Klassenmoduls mit<\/p>\n<pre>Declare Function GetSystemMetrics Lib \"user32\" (ByVal nIndex As Long) As Long\r\nConst SM_CXSCREEN = 0\r\nConst SM_CYSCREEN = 1\r\nPublic Function fctAufloesung()\r\n    fctAufloesung = \"Pixel horizontal: \" & GetSystemMetrics(SM_CXSCREEN) _\r\n        & \"  vertikal: \" & GetSystemMetrics(SM_CYSCREEN)\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Dim myCopy As Form<\/pre>\n<p>Hier k&ouml;nnte man auch den Namen des speziellen Formulars verwenden, also<\/p>\n<pre>Dim myCopy As Form_frmInstanzen<\/pre>\n<p>Im Ereigniscode Beim Klicken der Schaltfl&auml;che wird dann die Klasse instanziiert mit<\/p>\n<pre>Set myCopy = New Form_frmInstanzen<\/pre>\n<p>Die neue Formularinstanz ist vorl&auml;ufig noch nicht sichtbar. Das geschieht erst mit der Codezeile<\/p>\n<pre>.Visible = True<\/pre>\n<p>Der restliche Code sorgt daf&uuml;r, dass die neue Instanz nicht genau &uuml;ber der ersten ge&ouml;ffnet wird und dass ein anderer Datensatz angezeigt wird, sofern im Kombinationsfeld einer ausgew&auml;hlt wurde.<\/p>\n<p>Wenn Sie in der neuen Instanz wieder auf die Schaltfl&auml;che klicken, wird die n&auml;chste Instanz erzeugt. Sie liegt jedoch genau &uuml;ber der aufrufenden. Deshalb m&uuml;ssen Sie das Fenster etwas verschieben, um den neuesten Klon zu sehen.<\/p>\n<p>Eine alte Schw&auml;che von Access ist, dass sich seine Formulare nicht von selbst dynamisch an die Gr&ouml;&szlig;e des Bildschirmes anpassen. Die meisten Entwickler gehen daher den Weg, eine Standardaufl&ouml;sung f&uuml;r ihre Anwendung vorzusehen, beziehungsweise beim Anwender vorzuschreiben. Dennoch geschieht es in der Praxis oft, dass ein Anwender mit einer anderen Aufl&ouml;sung arbeitet und dann die Formulare entweder zu gro&szlig; oder zu klein erscheinen.<\/p>\n<p>M&ouml;chten Sie Ihre Anwendung an verschiedene Aufl&ouml;sungen anpassen, so ist der erste Schritt das Ermitteln der aktuellen Bildschirmaufl&ouml;sung. Mithilfe der API-Funktion GetSystemMetrics ist das keine gro&szlig;e Sache (s. Quellcode 2).<\/p>\n<p>Die kleine Beispielfunktion fctAufloesung in Quellcode 2 zeigt auch gleich beispielhaft den Aufruf der API-Funktion. GetSystemMetrics(SM_CXSCREEN) liefert die Breite des Bildschirmes in Pixeln, GetSystemMetrics(SM_CYSCREEN) liefert die H&ouml;he.<\/p>\n<p>Der schwierigere Teil der Arbeit ist die Gr&ouml;&szlig;enanpassung der Formulare. Falls sie eine unbedingte Vorgabe ist und Sie nicht viel Zeit oder M&uuml;he investieren m&ouml;chten, gibt es einen einfachen Workaround, um zumindest zwei oder drei Standardaufl&ouml;sungen zu bedienen: Fertigen Sie f&uuml;r jede zu unterst&uuml;tzende Aufl&ouml;sung eine angepasste Kopie der Formulare an.<\/p>\n<p>Ermitteln Sie beim Programmstart die Werte f&uuml;r die Breite und H&ouml;he des Bildschirms und schreiben Sie sie in eine Variable. In der Anwendung rufen Sie dann die jeweils passende Kopie der Formulare auf. Ein Nachteil dieser Methode ist nat&uuml;rlich, dass bei Entwurfs&auml;nderungen auch die Kopien gepflegt werden m&uuml;ssen.<\/p>\n<pre>Type Rect\r\n    x1 As Long\r\n    y1 As Long\r\n    x2 As Long\r\n    y2 As Long\r\nEnd Type\r\nDeclare Function GetWindowRect Lib \"user32\" (ByVal hWnd As Long, lpRect As Rect) _    As Long\r\nDeclare Function IsZoomed Lib \"user32\" (ByVal hWnd As Long) As Long\r\nDeclare Function ShowWindow Lib \"user32\" (ByVal hWnd As Long, _    ByVal nCmdShow As Long) As Long\r\nDeclare Function MoveWindow Lib \"user32\" (ByVal hWnd As Long, ByVal X As Long, _    ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _    ByVal bRepaint As Long) As Long\r\nDeclare Function GetParent Lib \"user32\" (ByVal hWnd As Long) As Long\r\nDeclare Function GetClientRect Lib \"user32\" (ByVal hWnd As Long, _    lpRect As Rect) As Long\r\nPublic Const SW_MAXIMIZE = 3\r\nPublic Const SW_SHOWNORMAL = 1\r\nSub MaximizeRestoredForm(F As Form)\r\n    Dim MDIRect As Rect\r\n    If IsZoomed(F.hWnd) &lt;&gt; 0 Then\r\n        ShowWindow F.hWnd, SW_SHOWNORMAL\r\n    End If\r\n    GetClientRect GetParent(F.hWnd), MDIRect\r\n    MoveWindow F.hWnd, 0, 0, MDIRect.x2 - MDIRect.x1, MDIRect.y2 - MDIRect.y1, True\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Die wirklich dynamische Anpassung der Formulare an die Bildschirmaufl&ouml;sung ist hingegen ein technisch sehr aufw&auml;ndiges Unterfangen und erfordert viel Programmcode. Es m&uuml;ssen ja alle Steuerelemente, Beschriftungen, Schriftgr&ouml;&szlig;en, grafischen Elemente und so weiter an die jeweilige Aufl&ouml;sung angepasst werden.<\/p>\n<p>Der Code hierf&uuml;r w&uuml;rde den Rahmen dieses Artikels sprengen. Es gibt entsprechenden Code in B&uuml;chern und auf Webseiten, sowohl gratis als auch k&auml;uflich, die sich &uuml;ber eine Websuche finden lassen. Sogar bei kommerziellen Tools kommt es aber in manchen Details bei den Proportionen oder Schriftgr&ouml;&szlig;en zu Problemen.<\/p>\n<p>Der Code, um ein Formular zu maximieren, wiederherzustellen oder zu minimieren ist einfach und weithin bekannt:<\/p>\n<pre>DoCmd.Maximize\r\nDoCmd.Restore\r\nDoCmd.Minimize<\/pre>\n<p><!--30percent--><\/p>\n<p>Dieser Code, vor allem jener zum Maximieren, steht in sehr vielen Lade- oder &ouml;ffnen-Ereignissen von Access-Anwendungen.<\/p>\n<p>Nun sind Formulare so genannte Kind-Fenster des Access-Hauptfensters. Das hat zur Folge, dass, wenn Sie ein Formular maximieren, wiederherstellen oder minimieren, diese Einstellung auch f&uuml;r alle anderen Formulare gilt, genauso wie bei Dokumenten in Word oder Arbeitsmappen in Excel.<\/p>\n<p><IMG height=\"407\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Maximiertes und nicht maximiertes Formular<\/span><\/b><\/p>\n<p>Bei Access-Anwendungen ist das oft unerw&uuml;nscht, insbesondere das Maximieren aller Fenster. Es gibt jedoch keine eingebaute M&ouml;glichkeit, um Formular-Fenster individuell zu maximieren. Hier hilft nur API-Code, wie er etwa von Microsoft im Knowledgebase-Artikel 210299 angeboten wird (s. Quellcode 3).<\/p>\n<p>Ich habe den Code des Knowledgebase-Artikels in ein paar wenigen Punkten ver&auml;ndert. Die Hinweise dazu kamen vom englischen Programmierer Terry Kreft.<\/p>\n<p>Sie finden Quellcode 3 auch im Modul basMaxRestoredForm der Beispiel-Datenbank zu diesem Artikel. Ebenfalls enthalten ist das Formular frmMaxRestored, das den praktischen Einsatz zeigt (siehe Bild 2).<\/p>\n<p>Im Ereignis Beim Laden dieses Formulars wird die Prozedur aus Quellcode 3 aufgerufen, um das Formular an die Gr&ouml;&szlig;e des Access-Fensters anzupassen. Der Aufruf lautet:<\/p>\n<pre>MaximizeRestoredForm Me<\/pre>\n<p>Das Formular sieht damit genauso aus, als sei es maximiert.<\/p>\n<p>Der gro&szlig;e Unterschied und Vorteil ist jedoch, dass weitere Formulare &uuml;ber diesem Formular ge&ouml;ffnet werden k&ouml;nnen, ohne maximiert zu sein.<\/p>\n<p>Falls Sie Access 97 verwenden, hat diese Methode noch einen positiven Effekt. Access 97 hat einen Bug, der daf&uuml;r sorgt, dass die Schlie&szlig;en-Schaltfl&auml;che eines Formulars im maximierten Zustand erscheint und aktiv ist, auch wenn die Eigenschaft Schlie&szlig;en Schaltfl&auml;che auf Nein eingestellt wurde. Diesen Fehler k&ouml;nnen Sie mit der vorgestellten Methode umgehen.<\/p>\n<p>Folgendes Verhalten von Access hat schon f&uuml;r so manche Verwunderung und Schrecksekunde gesorgt:<\/p>\n<p>Sie entwerfen ein Formular mit verschiedenen Steuerelementen nur im Detailbereich. Wenn Sie das Formular in der Formularansicht &ouml;ffnen, ist es jedoch v&ouml;llig leer.<\/p>\n<p>Kein einziges der zuvor erstellten Steuerelemente ist mehr sichtbar, egal um welchen Steuerelementtyp es sich handelt oder ob gebunden oder nicht. Es pr&auml;sentiert sich nur der leere Detailbereich. Wechseln Sie in die Entwurfsansicht, so sind alle Steuerelemente wieder zu sehen.<\/p>\n<p>Dieses Verhalten ist &#8222;by Design&#8220;. Die Ursache liegt darin, dass die zugrunde liegende Tabelle oder Abfrage keine Datens&auml;tze liefert und die Einstellungen in der Abfrage oder im Formular noch dazu verhindern, dass neue Datens&auml;tze angelegt werden k&ouml;nnen &#8211; zum Beispiel, wenn die Eigenschaft Anf&uuml;gen zulassen des Formulars auf Nein steht.<\/p>\n<p><IMG height=\"194\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Die Steuerelemente sind nur in der Entwursansicht vorhanden.<\/span><\/b><\/p>\n<p><IMG height=\"305\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Dialogfenster der bedingten Formatierung<\/span><\/b><\/p>\n<p>Die L&ouml;sung des Problems ist einfach: Sorgen Sie daf&uuml;r, dass die Datenquelle Datens&auml;tze liefert oder dass das Anlegen neuer Datens&auml;tze erlaubt ist.<\/p>\n<p>Wenn das nicht m&ouml;glich oder erw&uuml;nscht ist, so k&ouml;nnen Sie sich zumindest damit behelfen, dass Sie eine Schaltfl&auml;che zum Schlie&szlig;en oder ein anderes Steuerelement in den Formularkopf oder -fu&szlig; platzieren. Steuerelemente in diesen Bereichen werden auf jeden Fall angezeigt.<\/p>\n<p>In der Beispieldatenbank zu diesem Artikel finden Sie die beiden Formulare frmOhneSteuerelemente1 und frmOhneSteuerelemente2 die das Verhalten demonstrieren (siehe Bild 3).<\/p>\n<p>Bis einschlie&szlig;lich Access 97 war es nur sehr begrenzt und zum Teil mit Workarounds m&ouml;glich, unterschiedliche Formatierungen in den Datens&auml;tzen eines Endlosformulares zu erhalten. Standardm&auml;&szlig;ig wirkt sich die Formatierungseinstellung eines Steuerelements auf alle Datens&auml;tze aus.<\/p>\n<p>Erst seit der Einf&uuml;hrung der Bedingten Formatierung mit Access 2000 wurde dieses Unterfangen wesentlich erleichtert und die M&ouml;glichkeiten erweitert.<\/p>\n<p>Die Bedingte Formatierung ist relativ einfach zu handhaben. In der Entwurfsansicht des Formulars muss mindestens ein Steuerelement markiert sein &#8211; es k&ouml;nnen auch mehrere sein, die dann identisch formatiert werden.<\/p>\n<p>Mit der Auswahl des Men&uuml;punkts Format\/Bedingte Formatierung &ouml;ffnet sich das Dialogfenster aus Bild 4.<\/p>\n<p>Diese Abbildung zeigt auch gleich eine der Schw&auml;chen der Bedingten Formatierung. Die Schaltfl&auml;che &#8222;Hinzuf&uuml;gen&#8220; ist deaktiviert, weil bereits drei Bedingungen ausgew&auml;hlt wurden.<\/p>\n<p>Es sind also nur drei Bedingungen und damit drei unterschiedliche Formatierungen m&ouml;glich.<\/p>\n<p>Das Einstellen der Bedingungen und Formatierungen im Dialog erkl&auml;rt sich weitgehend von selbst. Ich gehe daher im Folgenden nur auf ein paar Spezialf&auml;lle ein.<\/p>\n<p>Die Bedingte Formatierung ist nur darauf ausgerichtet, einzelne Steuerelemente mit einer besonderen Formatierung zu versehen.<\/p>\n<p>Was aber, wenn Sie einen ganzen Datensatz durch Einf&auml;rben seines Hintergrundes hervorheben m&ouml;chten, sofern er eine bestimmte Bedingung erf&uuml;llt<\/p>\n<p>Hier hilft folgender Workaround:<\/p>\n<li>Erzeugen Sie ein neues, ungebundenes Textfeld, das so gro&szlig; ist wie der komplette Detailbereich des Formulars.<\/li>\n<li>Stellen Sie die Eigenschaften Aktiviert auf Nein und Gesperrt auf Ja.<\/li>\n<p><IMG height=\"363\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Bedingte Formatierung des Detailbereichs<\/span><\/b><\/p>\n<p><IMG height=\"236\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Bedingte Formatierung mit zwei Bedingungen<\/span><\/b><\/p>\n<p><IMG height=\"167\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Dummy-Bedingung, die sp&auml;ter per Code ge&auml;ndert wird<\/span><\/b><\/p>\n<li>W&auml;hlen Sie den Men&uuml;punkt Format\/In den Hintergrund, damit das Textfeld hinter allen anderen Steuerelementen des Detailbereichs liegt.<\/li>\n<li>W&auml;hlen Sie den Men&uuml;punkt For-mat\/Bedingte Formatierung und stellen Sie die Bedingung und die gew&uuml;nschte Forma-tierung f&uuml;r das Textfeld ein. (<\/li>\n<p>Bild 5 zeigt das Formular frmBedingteFormatierung1 in der Beispiel-Datenbank. Die zwei eingestellten Bedingungen lauten Ausdruck ist [Preis]&gt;1000 und Ausdruck ist [Preis]&lt;100.<\/p>\n<p>Im ersten Fall ist die Hintergrundfarbe des Textfeldes auf Rot eingestellt, im zweiten Fall auf Gr&uuml;n. Wichtig ist noch, dass im Dialogfeld die Optionsschaltfl&auml;che f&uuml;r Aktiviert, ganz rechts bei den Formatierungen, auf Nein gestellt wird, das hei&szlig;t nicht vertieft dargestellt ist (siehe Bild 6)..<\/p>\n<p>Ansonsten w&uuml;rde das Textfeld in den Datens&auml;tzen, in denen die Bedingung erf&uuml;llt ist, wieder aktiviert und der Fokus k&ouml;nnte in das Textfeld gelangen. Dadurch wird im Dialogfenster zwar die Formatierungs-Vorschau ausgegraut, das Ergebnis sieht aber dennoch farblich wie beabsichtigt aus, denn das Textfeld bleibt weiterhin gesperrt.<\/p>\n<p>Die Bedingte Formatierung ist auch per VBA programmierbar und zwar mithilfe der Eigenschaft beziehungsweise Auflistung FormatConditions. F&uuml;r manche Zwecke ist dieser Zugriff per VBA auch unbedingt notwendig. Wenn Sie zum Beispiel den aktuellen Datensatz rot hinterlegen m&ouml;chten, k&ouml;nnen Sie zwar wiederum das ungebundene Textfeld aus dem vorhergehenden Beispiel verwenden, f&uuml;r die eigentliche Steuerung muss aber Code verwendet werden.<\/p>\n<p><IMG height=\"184\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Einf&auml;rben des aktuellen Datensatzes<\/span><\/b><\/p>\n<p>Im Beispielformular frmBedingteFormatierung2 hei&szlig;t das Textfeld txtHintergrund. Stellen Sie zuerst eine Bedingung und die gew&uuml;nschte Formatierung f&uuml;r txtHintergrund ein (siehe Bild 7). Als Bedingung ist eingestellt:<\/p>\n<pre>Ausdruck ist [ArtikelId]=4711<\/pre>\n<p>ArtikelId ist das Prim&auml;rschl&uuml;sselfeld in der Datenherkunft tblArtikel. Es kennzeichnet also eindeutig den Datensatz. Die Zahl 4711 wurde hier absichtlich schnoddrig gew&auml;hlt, denn es ist eigentlich egal, was in der Bedingung steht. Sie wird ohnehin per VBA ge&auml;ndert. Wichtiger ist, dass Sie die Formatierung wie gew&uuml;nscht einstellen und nicht vergessen, die Optionsschaltfl&auml;che f&uuml;r Aktiviert wieder auf den Wert Nein zu stellen.<\/p>\n<p>Um zu erreichen, dass der aktuelle Datensatz entsprechend der Formatierung eingef&auml;rbt wird, muss per VBA bei jedem Datensatzwechsel die aktuelle ArtikelId in die Bedingung geschrieben werden. Das geschieht mit der folgenden Codezeile im Ereigniscode Beim Anzeigen des Formulars (in einer Zeile):<\/p>\n<pre>Me!txtHintergrund.FormatConditions(0).Modify acExpression, acEqual, \"ArtikelId = \" & Me!ArtikelId<\/pre>\n<p>Details &uuml;ber die verwendeten Parameter und weitere M&ouml;glichkeiten zur Programmierung der Bedingten Formatierung gibt es in der Online-Hilfe zu FormatConditions. Bild 8 zeigt das Ergebnis der Bem&uuml;hungen. Wie gew&uuml;nscht wird der jeweils aktuelle Datensatz rot hervorgehoben.<\/p>\n<p>Die Syntax f&uuml;r den Bezug auf ein Steuerelement oder eine Eigenschaft in einem Unterformular f&uuml;hrt sehr oft zu Problemen. Eine der Ursachen ist die Vielfalt der m&ouml;glichen Bez&uuml;ge und Schreibweisen. Ich beschr&auml;nke mich hier auf einfache Syntaxvarianten, die mit etwas &uuml;bung leicht anzuwenden sind. Der richtige Bezug auf ein Steuerelement in einem Unterformular lautet (in einer Zeile):<\/p>\n<pre>Forms![Hauptformular]![Unterformular-Steuerelement]![Steuerelement im Unterformular]<\/pre>\n<p>Der h&auml;ufigste Fehler in diesem Zusammenhang besteht darin, dass die Eigenschaften Name und Herkunftsobjekt eines Unterformulars verwechselt werden. Die beiden k&ouml;nnen, m&uuml;ssen aber nicht identisch sein.<\/p>\n<p>F&uuml;r den Bezug ben&ouml;tigt man immer nur den Namen des Unterformular-Steuerelements im Hauptformular, also des Steuerelements, in dem sich das Unterformular befindet. Das Herkunftsobjekt hingegen ist f&uuml;r den Bezug uninteressant.<\/p>\n<p>M&ouml;chten Sie in einem Ausdruck im Hauptformular auf ein Steuerelement im Unterformular verweisen, sollte der Bezug so aussehen:<\/p>\n<pre>[Unterformular-Steuerelement]![Steuerelement im Unterformular]<\/pre>\n<p>M&ouml;chten Sie im Code des Hauptformulars auf ein Steuerelement in einem Unterformular verweisen, ist es besser, das Schl&uuml;sselwort Me davor zu setzen:<\/p>\n<pre>Me![Unterformular-Steuerelement]![Steuerelement im Unterformular]<\/pre>\n<p>Ist im ersten Unterformular ein weiteres Unterformular eingebettet, auf das Bezug genommen werden soll, so bilden Sie einfach die Hierarchie der Unterformulare in der Syntax nach:<\/p>\n<pre>Me![Unterformular1-Steuerelement]![Unterformular2-Steuerelement]![Steuerelement im Unterformular2]<\/pre>\n<p>Die eckigen Klammern k&ouml;nnen im Code nat&uuml;rlich entfallen, sofern die Objektnamen keine Leer- oder Sonderzeichen enthalten, worauf Sie stets achten sollten.<\/p>\n<p>Schwierigkeiten bereitet oft der Umgang mit den beiden Methoden SetFocus und GoToRecord im Zusammenhang mit Unterformularen. M&ouml;chten Sie den Fokus auf ein bestimmtes Steuerelement im Unterformular setzen, so ist ein zweistufiges Vorgehen notwendig, damit das zuverl&auml;ssig klappt. Setzen Sie zuerst den Fokus auf das Unterformular-Steuerelement im Hauptformular und danach erst auf das Steuerelement im Unterformular:<\/p>\n<pre>Me![Unterformular-Steuerelement].SetFocus\r\nMe![Unterformular-Steuerelement]![Steuerelement im Unterformular].SetFocus<\/pre>\n<p>Analog funktioniert das Wechseln des aktuellen Datensatzes im Unterformular mit der Methode GotoRecord.<\/p>\n<pre>Me![Unterformular-Steuerelement].SetFocus\r\nDoCmd.GoToRecord , , acNext<\/pre>\n<p>Wichtig ist, dass die beiden Parameter nach GoToRecord leer gelassen werden. Sie dienen zur Angabe des Objekttyps und des Objektnamens und f&uuml;hren bei einem Unterformular unweigerlich zu Fehlermeldungen, weil es keinen passenden Objekttyp f&uuml;r ein Unterformular gibt und das Herkunftsobjekt des Unterformulars nicht wirklich ge&ouml;ffnet ist.<\/p>\n<p>M&ouml;chten Sie sich hingegen auf eine Eigenschaft des Herkunftsobjektes beziehen, also des Formulars, das als Unterformular dient, dann m&uuml;ssen Sie dessen Form-Eigenschaft ansprechen. Angenommen Sie haben VBA-Code im Hauptformular, der die Eigenschaft Daten Eingeben (in VBA: DataEntry) des Unterformulars auf Ja setzen soll. Der richtige Befehl dazu lautet:<\/p>\n<pre>Me![Unterformular-Steuerelement].Form.DataEntry = True<\/pre>\n<p>Eine praktische Sache f&uuml;r viele Zwecke ist das dynamische Wechseln des Unterformulars per Code. Sie k&ouml;nnen damit im selben Unterformular-Steuerelement verschiedene Unterformulare anzeigen.<\/p>\n<p>Im Beispielformular frmUnterFormularWechseln (siehe Bild 9) werden etwa wechselweise Unterformulare f&uuml;r Ansprechpartner und Artikel angezeigt.<\/p>\n<p><IMG height=\"317\" src=\"..\/fileadmin\/_temp_\/{CC065C0F-E5AE-4B3C-A7D5-31913520FAE2}\/pic009.png\" width=\"417\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Wechselnde Unterformulare<\/span><\/b><\/p>\n<p>Der Wechsel erfolgt bei Klick auf die beiden entsprechenden Schaltfl&auml;chen. Der f&uuml;r das Wechseln des dargestellten Unterformulars n&ouml;tige Code ist sehr kurz, in der Regel gen&uuml;gt eine Zeile nach dem Muster:<\/p>\n<pre>Me![Unterformular-Steuerelement].SourceObject = \"AnderesUnterformular\"<\/pre>\n<p>Es wird also nur das Herkunftsobjekt (in VBA: SourceObject) des Unterformular-Steuerelements ge&auml;ndert. <\/p>\n<p>Wenn Sie Haupt- und Unterformular &uuml;ber bestimmte Felder verkn&uuml;pfen m&ouml;chten, so k&ouml;nnen Sie diese Einstellungen unmittelbar nach dem Zuweisen des Herkunftsobjekts vornehmen:<\/p>\n<pre>Me!UFoElement.LinkChildFields = \"Feld_im_Unterformular\"\r\nMe!UFoElement.LinkMasterFields = \"Feld_im_HauptFormular\"<\/pre>\n<p>Ansonsten stellt Access automatisch die Eigenschaften Verkn&uuml;pfen von und Verkn&uuml;pfen nach des Unterformulars auf den Feldnamen eines Prim&auml;rschl&uuml;sselfeldes, sofern es im Haupt- und im Unterformular Felder mit gleichem Namen findet. Das ist meistens ein Vorteil, weil man sich nicht um die korrekte Verkn&uuml;pfung k&uuml;mmern muss. Es kann aber zum Nachteil werden, wenn man eben nicht &uuml;ber diese gleich benannten Felder verkn&uuml;pfen m&ouml;chte.<\/p>\n<p>In diesem Fall muss man die beiden Eigenschaften zuerst auf einen Leerstring einstellen und dann mit den gew&uuml;nschten Verkn&uuml;pfungsfeldern versorgen (Beispiel siehe Beispieldatenbank).<\/p>\n<pre>Me!UFoElement.SourceObject = _    \"AnderesUnterformular\"\r\nMe!UFoElement.LinkChildFields = \"\"\r\nMe!UFoElement.LinkMasterFields = \"\"\r\nMe!UFoElement.LinkChildFields = _    \"Feld_im_Unterformular\"\r\nMe!UFoElement.LinkMasterFields = _    \"Feld_im_Hauptformular\"<\/pre>\n<p>Eine &auml;hnliche Funktionalit&auml;t wie mit Unterformularen k&ouml;nnen Sie auch mit zwei separaten Formularen erzielen. Nur m&uuml;ssen Sie die Angleichung des jeweils aktuellen Datensatzes selbst programmieren.<\/p>\n<p>Der h&auml;ufigste Anwendungsfall: In einem Auswahlformular befinden sich alle Datens&auml;tze. Bei Auswahl eines Datensatzes sollen in einem anderen Formular die Details zu diesem Datensatz erscheinen.<\/p>\n<p>Die einfachste Variante ist, dass (zum Beispiel beim Klicken einer Befehlsschaltfl&auml;che) ein Detailformular zu dem ausgew&auml;hlten Datensatz ge&ouml;ffnet wird. In der Beispieldatenbank finden Sie dazu die beiden Formulare frmArtikelAuswahl und frmArtikelDetails. Im Formular frmArtikelAuswahl steht hinter der ersten Schaltfl&auml;che folgender Code, der das Formular frmArtikelDetails mit der gew&uuml;nschten Where-Klausel &ouml;ffnet:<\/p>\n<pre>DoCmd.OpenForm \"frmArtikelDetails\", , , \"ArtikelId = \" & Me!ArtikelId<\/pre>\n<p>Nun gibt es aber F&auml;lle, in denen das Detailformular nicht nur mit einem einzelnen Datensatz ge&ouml;ffnet werden soll, sondern mit allen Datens&auml;tzen, aber mit dem ausgew&auml;hlten als aktuellem. Dadurch k&ouml;nnen Sie im Detailformular beliebig navigieren. Quellcode 4 steht hinter der zweiten Schaltfl&auml;che im frmArtikelAuswahl.<\/p>\n<pre>If fctIsFormOpen(\"frmArtikelDetails\") = _  False Then\r\n  DoCmd.OpenForm \"frmArtikelDetails\"\r\nEnd If\r\nDim rs As DAO.Recordset\r\nSet rs = _  Forms!frmArtikelDetails.RecordsetClone\r\nrs.FindFirst \"ArtikelId = \" _  & Me!ArtikelId\r\nIf Not rs.NoMatch Then\r\n  Forms!frmArtikelDetails.Bookmark = rs.Bookmark\r\nEnd If\r\nSet rs = Nothing<\/pre>\n<p>Zuerst wird &#8211; wie im ersten Thema dieses Artikels erl&auml;utert &#8211; gepr&uuml;ft, ob das Detailformular bereits ge&ouml;ffnet ist, und ansonsten ge&ouml;ffnet. Dann wird ein DAO-Recordset mit dem RecordsetClone des Detailformulars belegt.<\/p>\n<p>Mit der Methode FindFirst wird im Recordset die passende Artikelid gesucht. Anschlie&szlig;end wird die Bookmark-Eigenschaft des Detailformulars mit der seines RecordsetClones synchronisiert. Dadurch wechselt das Formular zum entsprechenden Datensatz.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Sie k&ouml;nnen die Schaltfl&auml;che auch einsparen: Wenn Sie diesen Code im Ereignis Beim Anzeigen des Auswahlformulars verwenden, dann wird die Synchronisation sofort beim Datensatzwechsel durchgef&uuml;hrt. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Access-FAQ von Karl Donaubauer (www.donkarl.com) finden Sie die meistgestellten Fragen und Anworten zum Thema Microsoft Access. In dieser Beitragsreihe stellt Karl Donaubauer die wichtigsten Eintr&auml;ge im Detail vor und zeigt Ihnen entsprechende L&ouml;sungen anhand praxisnaher Beispiele. Im siebten Teil lernen Sie die L&ouml;sungen zu den meistgenannten Problemen der Teilnehmer der deutschsprachigen Access-Newsgroups im Zusammenhang mit Formularen und Unterformularen kennen.<\/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":[66022005,662005,44000023,44000004],"tags":[],"class_list":["post-55000274","post","type-post","status-publish","format-standard","hentry","category-66022005","category-662005","category-Mit_Formularen_arbeiten","category-Tipps_und_Tricks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Access-FAQ: Rund um Formulare - 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\/AccessFAQ_Rund_um_Formulare\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access-FAQ: Rund um Formulare\" \/>\n<meta property=\"og:description\" content=\"In der Access-FAQ von Karl Donaubauer (www.donkarl.com) finden Sie die meistgestellten Fragen und Anworten zum Thema Microsoft Access. In dieser Beitragsreihe stellt Karl Donaubauer die wichtigsten Eintr&auml;ge im Detail vor und zeigt Ihnen entsprechende L&ouml;sungen anhand praxisnaher Beispiele. Im siebten Teil lernen Sie die L&ouml;sungen zu den meistgenannten Problemen der Teilnehmer der deutschsprachigen Access-Newsgroups im Zusammenhang mit Formularen und Unterformularen kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:58+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318\" \/>\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=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access-FAQ: Rund um Formulare\",\"datePublished\":\"2020-05-06T15:17:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/\"},\"wordCount\":3236,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/8f6badb9294c4b69acb0a9ac37da5318\",\"articleSection\":[\"2\\\/2005\",\"2005\",\"Mit Formularen arbeiten\",\"Tipps und Tricks\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/\",\"name\":\"Access-FAQ: Rund um Formulare - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/8f6badb9294c4b69acb0a9ac37da5318\",\"datePublished\":\"2020-05-06T15:17:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/8f6badb9294c4b69acb0a9ac37da5318\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/8f6badb9294c4b69acb0a9ac37da5318\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ_Rund_um_Formulare\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access-FAQ: Rund um Formulare\"}]},{\"@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":"Access-FAQ: Rund um Formulare - 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\/AccessFAQ_Rund_um_Formulare\/","og_locale":"de_DE","og_type":"article","og_title":"Access-FAQ: Rund um Formulare","og_description":"In der Access-FAQ von Karl Donaubauer (www.donkarl.com) finden Sie die meistgestellten Fragen und Anworten zum Thema Microsoft Access. In dieser Beitragsreihe stellt Karl Donaubauer die wichtigsten Eintr&auml;ge im Detail vor und zeigt Ihnen entsprechende L&ouml;sungen anhand praxisnaher Beispiele. Im siebten Teil lernen Sie die L&ouml;sungen zu den meistgenannten Problemen der Teilnehmer der deutschsprachigen Access-Newsgroups im Zusammenhang mit Formularen und Unterformularen kennen.","og_url":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:58+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access-FAQ: Rund um Formulare","datePublished":"2020-05-06T15:17:58+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/"},"wordCount":3236,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318","articleSection":["2\/2005","2005","Mit Formularen arbeiten","Tipps und Tricks"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/","url":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/","name":"Access-FAQ: Rund um Formulare - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318","datePublished":"2020-05-06T15:17:58+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/8f6badb9294c4b69acb0a9ac37da5318"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ_Rund_um_Formulare\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access-FAQ: Rund um Formulare"}]},{"@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\/55000274","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=55000274"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000274\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}