{"id":55000340,"date":"2006-04-01T00:00:00","date_gmt":"2020-05-06T15:18:19","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=340"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AccessFAQ","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/","title":{"rendered":"Access-FAQ"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Lernen Sie die L&ouml;sung zu den h&auml;ufigsten VBA-Problemen kennen.<\/p>\n<h3>Techniken<\/h3>\n<p>VBA, Komprimieren, MsgBox, MDE, Diagramme<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 97 und h&ouml;her<\/p>\n<h3>Beispieldateien<\/h3>\n<p><a href=''fileadmin\/files\/acc0206tt01.zip''>FAQ13_A97_FE.mdb, FAQ13_A97_BE.mdb FAQ13_A00_FE.mdb, FAQ13_A00_BE.mdb<\/a><\/p>\n<h3><\/h3>\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 dreizehnten Teil werden L&ouml;sungen f&uuml;r weitere h&auml;ufige Probleme und Bugs bei der VBA-Programmierung vorgestellt.<\/b><\/p>\n<p>In vielen Situationen muss man ermitteln, ob und wie viele Datens&auml;tze eine Tabelle oder Abfrage oder ein Recordset enth&auml;lt. Daf&uuml;r existieren mehrere Ans&auml;tze mit unterschiedlichen Vor- und Nachteilen. Kurz und schnell geschrieben ist die Dom&auml;nenaggregatfunktion DomAnzahl (DCount in VBA): <\/p>\n<pre>DCount(\"*\", \"Tabelle\")<\/pre>\n<p>Dom&auml;nenaggregatfunktionen sind allgemein als langsam verschrieen. Das stimmt auch in manchen F&auml;llen, vor allem bei der Verwendung in Abfragen, weil die JET-Datenbank-Engine solche Zugriffe nicht optimieren kann, keinen Ausf&uuml;hrungsplan verwenden kann und daher alle Datens&auml;tze der Dom&auml;ne ziehen muss. In vielen F&auml;llen lassen sie sich allerdings durchaus brauchbar einsetzen. Testen Sie am besten in der konkreten Anwendung und Umgebung und vor allem mit den zu erwartenden Datenmengen. Ein gro&szlig;er Vorteil der D-Funktionen ist die relativ einfache und kurze Syntax. Ein anderer ist ihre universelle Einsetzbarkeit, sowohl in Steuerelementinhalten wie in Abfragen oder in VBA.<\/p>\n<p>Eine andere M&ouml;glichkeit ist die Verwendung der SQL-Aggregatfunktion Count. Der SQL-String einer Abfrage k&ouml;nnte so aussehen:<\/p>\n<pre>SELECT Count(*) AS [AnzahlDS] FROM Tabelle;<\/pre>\n<p>Diese Methode ist schneller als DCount. Wenn Sie das Ergebnis allerdings au&szlig;erhalb der Abfrage ben&ouml;tigen, m&uuml;ssen Sie es zum Beispiel mit einem DAO-Recordset abrufen.<\/p>\n<p>DAO bietet zum Z&auml;hlen der Datens&auml;tze die Eigenschaft RecordCount. Der Code im Beispielformular frmDSZaehlen sieht so aus:<\/p>\n<pre>Dim db As DAO.Database\r\nDim rs As DAO.Recordset\r\nSet db = CurrentDb\r\nSet rs = db.OpenRecordset(\"SELECT * FROM tblArtikel\", dbOpenDynaset)\r\nIf Not rs.BOF Then\r\n    rs.MoveLast\r\n    Me!txtRecordCountMit = rs.RecordCount\r\nEnd If<\/pre>\n<p>Vor der Verwendung von RecordCount ist es unbedingt notwendig, mit der MoveLast-Methode zum letzten Datensatz des Recordsets zu springen, damit die richtige Anzahl von Datens&auml;tzen ermittelt wird. Der Wechsel zum letzten Datensatz braucht bei gro&szlig;en Recordsets nat&uuml;rlich einige Zeit und sollte deshalb nur durchgef&uuml;hrt werden, wenn Sie wirklich sofort die genaue Datensatzanzahl brauchen. Ohne MoveLast ergibt RecordCount 1, wenn Datens&auml;tze vorhanden sind, und 0, wenn keine vorhanden sind (siehe Bild 1).<\/p>\n<p><IMG height=\"219\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic001.png\" width=\"374\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Varianten zum Z&auml;hlen von Datens&auml;tzen<\/span><\/b><\/p>\n<p>Wenn das Recordset leer ist, erzeugt MoveLast den Laufzeitfehler 3021 &#8222;Kein Aktueller Datensatz&#8220;. Deshalb wird im Beispielcode vor dem MoveLast auf BOF gepr&uuml;ft.<\/p>\n<p>Wenn ein DAO-Recordset ge&ouml;ffnet wird, gibt es zwei m&ouml;gliche Positionen: Falls Datens&auml;tze vorhanden sind, steht der Zeiger zuverl&auml;ssig auf dem ersten Datensatz. Die OpenRecordset-Methode hat n&auml;mlich ein MoveFirst eingebaut. Ein anf&auml;ngliches, ausdr&uuml;ckliches MoveFirst im Code, wie man es oft sieht, ist daher nicht notwendig. Falls hingegen keine Datens&auml;tze vorhanden sind, sind sowohl die Eigenschaften BOF als auch EOF True. Sie k&ouml;nnen also wahlweise das eine oder das andere pr&uuml;fen. Die beliebte Pr&uuml;fung auf beides ist daher wiederum nicht notwendig.<\/p>\n<p>Wenn es nur darum geht, zu erfahren, ob ein Recordset &uuml;berhaupt Datens&auml;tze hat, und andernfalls zum Beispiel das Durchlaufen des Recordsets ganz zu unterlassen, dann reicht:<\/p>\n<pre>If rs.BOF Then Exit Sub<\/pre>\n<p>Die schnellste Suche in DAO ist mit der Seek-Methode m&ouml;glich. Der Grund ist, dass anders als bei FindFirst ein Index verwendet werden kann, der die Suche wesentlich beschleunigt. Je gr&ouml;&szlig;er die Tabelle, desto gr&ouml;&szlig;er der Geschwindigkeitsvorteil. Die Seek-Methode hat jedoch den Nachteil, dass sie nur bei Recordsets vom Typ Table anwendbar ist. Dieser ist wiederum nur f&uuml;r Tabellen verf&uuml;gbar, die sich in der aktuellen Datenbank befinden.<\/p>\n<p>Wenn Sie OpenRecordset auf eine Tabelle in der aktuellen Datenbank anwenden und dabei den Parameter f&uuml;r den Typ nicht angeben, wird automatisch der Typ Table verwendet.<\/p>\n<p>Bei eingebundenen Tabellen hingegen, die der Regelfall in professionell gestalteten Anwendungen sind, ist der Standardtyp Dynaset und der Typ Table nicht verf&uuml;gbar. Wie die Seek-Methode im Normalfall funktioniert, zeigt der Code der ersten Schaltfl&auml;che im Beispielformular frmSeek:<\/p>\n<pre>Dim db As dao.Database\r\nDim rs As dao.Recordset\r\nSet db = CurrentDb\r\nSet rs = db.OpenRecordset(\"tblArtikel\", dbOpenTable)\r\nrs.Index = \"PrimaryKey\"\r\nrs.Seek \"=\", \"13\"\r\nIf Not rs.NoMatch Then\r\n    Me!txtSeekIntern = rs!Bezeichnung\r\nEnd If<\/pre>\n<p>Es wird also ein Recordset vom Typ Table ge&ouml;ffnet, die Index-Eigenschaft des Recordsets auf den Namen eines in der Tabelle vorhandenen Indexes gesetzt und dann bei Seek der Operator und der Vergleichsausdruck angegeben.<\/p>\n<p>Wenn man den gleichen Code f&uuml;r eine eingebundene Tabelle verwendet, erzeugt das den Laufzeitfehler &#8222;3219: unzul&auml;ssige Operation&#8220;, weil hier der Typ Table eben nicht zul&auml;ssig ist. L&auml;sst man die Typangabe dbOpenTable weg, erzeugt der Code wegen des Seek den etwas aussagekr&auml;ftigeren Laufzeitfehler &#8222;3251: Operation wird f&uuml;r diesen Objekttyp nicht unterst&uuml;tzt!&#8220;.<\/p>\n<p>Die L&ouml;sung ist, als Database nicht Currentdb zu verwenden, sondern mit Opendatabase die externe Datenbank f&uuml;r den Zugriff zu &ouml;ffnen und dann wieder ein Recordset vom Typ Table zu verwenden:<\/p>\n<pre>Set db = DBEngine.Workspaces(0). _    OpenDatabase(\"externe DB\")\r\nSet rs = db.OpenRecordset _    (\"externe Tabelle\", dbOpenTable)<\/pre>\n<p>Auch diese Methode wird in der Beispieldatenbank demonstriert.<\/p>\n<p>JET-Datenbanken haben leider die Tendenz, sich auch ohne Datenzuwachs aufzubl&auml;hen. Die Ursachen sind vielf&auml;ltig: Bewusst gel&ouml;schte Datens&auml;tze und Objekte, tempor&auml;re Objekte, die Access zur Verarbeitung braucht, diverse Bugs und Probleme von DAO und schlecht kompilierter Code. Bei den meisten dieser Gr&uuml;nde hilft das Komprimieren der Datenbank. Wenn Sie das Komprimieren automatisch durchf&uuml;hren lassen m&ouml;chten, so haben Sie mit Access 97 schlechte Karten. Das einzig einfache automatisierte Komprimieren ist in Access 97 mit der Sendkeys-Methode m&ouml;glich:<\/p>\n<pre>SendKeys \"%xdk\"<\/pre>\n<p>Mit diesem Code wird die Tastenkombination aufgerufen, die den normalen Men&uuml;punkt zum Komprimieren aufruft: Extras\/Datenbank-Dienstprogramme\/Datenbank komprimieren.<\/p>\n<p>Leider hat Sendkeys den bekannten Bug, dass es gerne, wenn auch nicht immer, die NumLock-Taste deaktiviert. Zudem ist es oft unm&ouml;glich, die Umgebung beim Anwender zu kontrollieren und daher zu wissen, ob der Men&uuml;punkt gerade sichtbar und zug&auml;nglich ist und was eine bestimmte Tastenkombination bei den gerade offenen Programmen und Einstellungen am Arbeitsplatz ausl&ouml;st. Deshalb ist eine grunds&auml;tzliche Skepsis gegen&uuml;ber Sendkeys-Notl&ouml;sungen angebracht.<\/p>\n<p>Eine andere M&ouml;glichkeit in Access 97 ist die Verwendung des TSI SOON (Shut One, Open New) database add-in von Michael Kaplan (http:\/\/www.trigeminal.com\/utility.asp). Dieses Add-In muss nat&uuml;rlich installiert, weitergegeben und aufgerufen werden.<\/p>\n<p>Mit Access 2000 hat Microsoft endlich eine M&ouml;glichkeit zum automatisierten Komprimieren eingebaut. Im Men&uuml;\/Extras\/Optionen\/Allgemein l&auml;sst sich einstellen, dass die Datenbank beim Schlie&szlig;en komprimiert werden soll.<\/p>\n<p>Wenn Sie die Datenbank hingegen w&auml;hrend des laufenden Betriebes komprimieren lassen wollen, so gibt es ebenfalls ab Access 2000 eine wesentlich stabilere und sicherere Methode, um den Men&uuml;punkt f&uuml;r das Komprimieren per VBA aufzurufen, n&auml;mlich &uuml;ber die Standardaktion des entsprechenden Commandbar-Objektes (in einer Zeile):<\/p>\n<pre>CommandBars(\"MenuBar\").Controls(\"Extras\").Controls(\"Datenbank-Dienstprogramme\").Controls(\"Datenbank komprimieren und reparieren...\").accDoDefaultAction<\/pre>\n<p>V&ouml;llig unterschiedlich ist das Vorgehen zum automatisierten Komprimieren einer anderen Datenbank. Meist geht es darum, das Daten-Backend der aktuellen Frontend-mdb zu komprimieren. Die wichtigste Voraussetzung daf&uuml;r ist, dass die andere MDB nicht ge&ouml;ffnet ist. Das hei&szlig;t, Sie m&uuml;ssen daf&uuml;r sorgen, dass beim Komprimieren nicht durch offene Formulare oder andere Datenbankobjekte auf Daten aus eingebundenen Tabellen zugegriffen wird. Ebenso d&uuml;rfen keine Codeobjekte wie etwa Recordsets ge&ouml;ffnet sein, die auf Tabellen der zu komprimierenden Datenbank basieren. Quellcode 1 zeigt den f&uuml;r das Komprimieren n&ouml;tigen Code.<\/p>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 1: Komprimieren einer Datenbank<\/b><\/p>\n<pre>Public Sub procCompactOtherDB(strPath As String)\r\n    On Error GoTo myError\r\n    DoCmd.Hourglass True\r\n    Dim strFile As String\r\n    Dim varDummyPath As Variant\r\n    Dim varDummyFile As Variant\r\n    strFile = Dir(strPath)\r\n    varDummyPath = Left$(strPath, Len(strPath) - Len(strFile))\r\n    varDummyFile = varDummyPath & \"Dummy.mdb\"\r\n    DBEngine.CompactDatabase strPath, varDummyFile\r\n    Kill strPath\r\n    Name varDummyFile As strPath\r\nmyExit:\r\n    DoCmd.Hourglass False\r\n    Exit Sub\r\nmyError:\r\n    Select Case Err.Number\r\n        Case 3005, 3024, 53, 3044, 76\r\n            MsgBox \"Datenbank nicht gefunden.\", vbOKOnly\r\n        Case 3196\r\n            MsgBox \"Datenbank in Benutzung.\", vbOKOnly\r\n        Case Else\r\n            MsgBox \"Ausnahme Nr. \" & Err.Number _                & \". Das hei&szlig;t: \" & Err.Description\r\n    End Select\r\n    Resume myExit\r\nEnd Sub<\/pre>\n<p>Es handelt sich um eine Public Sub, die Sie am besten in ein Standardmodul kopieren. Der Aufruf erfolgt mit:<\/p>\n<pre>procCompactOtherDB \"PfadUndNameDerZuKomprimierenden.mdb\"<\/pre>\n<p>Der Kern des Codes ist die Methode CompactDatabase. Diese Methode ben&ouml;tigt als Parameter Pfad und Name der Quelldatenbank und einen unterschiedlichen Namen f&uuml;r die komprimierte Zieldatenbank.<\/p>\n<p>Das ist an sich fein, denn damit kann man CompactDatabase sehr einfach zum Erzeugen einer anders benannten und noch dazu komprimierten Backup-Kopie verwenden. In der Praxis will man aber meistens, dass das Backend nach dem Komprimieren genauso hei&szlig;t wie vorher. Deshalb wird in Quellcode 1 eine Dummy.mdb im Ordner der Quelldatenbank als Zieldatenbank angegeben. Nach dem Komprimieren wird die unkomprimierte Quelldatenbank mit der Kill-Anweisung gel&ouml;scht und die komprimierte Dummy.mdb erh&auml;lt mithilfe der Name-Anweisung den Namen der urspr&uuml;nglichen Quelldatenbank. In der Fehlerbehandlung werden die h&auml;ufigsten Fehlernummern abgefragt, die in verschiedenen Access-Versionen bei diesen Vorg&auml;ngen auftreten k&ouml;nnen.<\/p>\n<p>Ein gro&szlig;es Problem von Access war und ist die Sicherheit im Sinne des Schutzes der Daten und Anwendung vor neugierigen Blicken. Ich werde im Laufe des Artikels noch einmal auf diese Problematik eingehen. Einer der vielen kleinen Tricks, die gerne verwendet werden, um zumindest unbedarfte Anwender vom Einsehen der Datenbankobjekte abzuhalten, ist das Ausblenden des Datenbankfensters.<\/p>\n<p>Das Ausblenden und Einblenden des Datenbankfensters k&ouml;nnen Sie auch sehr einfach per Code regeln. Zum Einblenden brauchen Sie nur mit der Methode SelectObject ein Objekt im Datenbankfenster aufzurufen. Da der Objektname der Methode optional ist, m&uuml;ssen Sie nicht einmal ein Objekt angeben, sondern es reicht der Objekttyp:<\/p>\n<pre>DoCmd.SelectObject acTable, , True<\/pre>\n<p>Wichtig ist hingegen, dass der dritte Parameter auf True steht, damit das Phantomobjekt auch wirklich im Datenbankfenster ausgew&auml;hlt wird.<\/p>\n<p>Zum Ausblenden wird genau die gleiche Zeile verwendet, gefolgt vom RunCommand-Befehl, der dem Men&uuml;punkt Fenster\/Ausblenden entspricht:<\/p>\n<pre>DoCmd.SelectObject acTable, , True\r\nRunCommand acCmdWindowHide<\/pre>\n<p><b>Quellcode 2: Formatieren von Meldungsfenstern<\/b><\/p>\n<pre>Function FormattedMsgBox(Prompt As String, Optional Buttons As VbMsgBoxStyle = vbOKOnly, _    Optional Title As String = vbNullString, Optional HelpFile As Variant, _    Optional Context As Variant) As VbMsgBoxResult\r\n    If IsMissing(HelpFile) Or IsMissing(Context) Then\r\n        FormattedMsgBox = Eval(\"MsgBox(\"\"\" & Prompt & \"\"\", \" & Buttons & \", \"\"\" & Title & \"\"\")\")\r\n    Else\r\n        FormattedMsgBox = Eval(\"MsgBox(\"\"\" & Prompt & \"\"\", \" & Buttons & \", \"\"\" _            & Title & \"\"\", \"\"\" & HelpFile & \"\"\", \" & Context & \")\")\r\n    End If\r\nEnd Function<\/pre>\n<p>In Access 97 gibt es die M&ouml;glichkeit, in der MsgBox-Funktion das @-Zeichen zu verwenden, um verschieden formatierte Abschnitte im Meldungsfenster zu erzeugen. Der Teil vor dem ersten @ wird dabei fett formatiert und es wird ein Zeilenumbruch angeh&auml;ngt. An den Teil vor dem zweiten @ wird nur mehr ein Zeilenumbruch angef&uuml;gt. In Bild 2 sehen Sie das Ergebnis des folgenden Aufrufs in Access 97:<\/p>\n<pre>MsgBox \"&uuml;berschrift!@Text der ersten Zeile.@Text der zweiten Zeile.\", vbOKOnly + vbInformation, \"Formatierte MsgBox\"<\/pre>\n<p><IMG height=\"173\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic002.png\" width=\"286\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Formatierte MsgBox in Access 97<\/span><\/b><\/p>\n<p><IMG height=\"119\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic003.png\" width=\"377\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:   Die Formatierung versagt in neueren Access-Versionen.<\/span><\/b><\/p>\n<p>Bild 3 zeigt das Ergebnis des gleichen Codes in einer h&ouml;heren Access-Version. Mit der Vereinheitlichung von VBA ab Office 2000 hat auch Access-VBA die allgemeine VBA-MsgBox-Funktion erhalten und dadurch die Access-spezifische Funktionalit&auml;t des @-Zeichens verloren. Genauer gesagt ist der Visual Basic Editor (VBE) schuld, der nicht mehr auf die Meldungs-Funktion von Access zugreift, sondern auf die von VBA.<\/p>\n<p>Ich pers&ouml;nlich finde das nicht schade, denn ich halte das @ wegen seiner E-Mail-Aufgaben f&uuml;r ungeeignet. Es kam auch immer wieder zu &#8222;Unf&auml;llen&#8220; wegen dieser h&auml;ufigsten Funktion des Zeichens. Programmierer, die die besondere Funktionalit&auml;t in Access 97 nicht kannten, haben sich gewundert, warum ihre MsgBox formatiert wurde, wenn zwei E-Mail-Adressen im Text enthalten waren. Noch h&auml;ufiger kam die Frage, wie man denn nun eine E-Mail-Adresse im Text einer mit @ formatierten Messagebox verwenden k&ouml;nne. Das geht in Access 97 schlicht nicht. Als jedoch die Formatier-Funktionalit&auml;t mit Access 2000 verloren ging, merkte man an den vielen Nachfragen in den diversen Foren erst, wie popul&auml;r diese Funktionalit&auml;t von Access 97 war und ist.<\/p>\n<p>Wie so oft war es Michael Kaplan, ein Mitentwickler von Access, der als Erster einen Workaround f&uuml;r dieses Problem publizierte. Er besteht darin, mithilfe der Eval-Funktion doch wieder auf die Access-Variante eines Meldungsfensters zuzugreifen. Die Access-Variante hat n&auml;mlich auch in Access 2003 noch die Formatier-M&ouml;glichkeit. Das sieht man schon daran, dass in einem Makro bei Verwendung der Aktion Meldung das @ nach wie vor greift. Quellcode 2 zeigt Michaels Code.<\/p>\n<p>Das Sch&ouml;ne daran ist, dass Sie diese Funktion nur in ein Standardmodul kopieren m&uuml;ssen und dann genauso verwenden k&ouml;nnen wie die normale MsgBox-Funktion von VBA. Es gibt keinen Unterschied bei den Parametern, lediglich der Funktionsname lautet eben FormattedMsgBox.<\/p>\n<p><IMG height=\"325\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  MDE erstellen ausgegraut<\/span><\/b><\/p>\n<p><IMG height=\"87\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Access 2003 kann keine MDE erstellen.<\/span><\/b><\/p>\n<p>Die sicherste Methode, um als Access-Entwickler seinen Code zu sch&uuml;tzen, ist die Auslieferung der Datenbank als MDE-Datei. Eine MDE enth&auml;lt keinen Textcode mehr, sondern nur so genannten P-Code, auch Zwischencode genannt. Das ist ein vorkompilierter Code, der nicht mehr als Text lesbar ist. Aus einer MDE kann man zwar seit jeher mit einigen Tricks und Code wieder alle Objekte in eine neue MDB kopieren, es war bis vor kurzem aber nicht m&ouml;glich, auch den Quellcode wieder lesbar herzustellen. Seit einigen Monaten bietet eine amerikanische Firma genau dieses Reengineering gegen Bezahlung an und hat auch in ersten Tests bewiesen, dass sie den Quellcode praktisch komplett wiederherstellen kann. Eine MDE bietet also keinen absoluten Schutz mehr, ist aber immer noch eine sehr sichere Sache, solange das Know-how bei dieser einen Firma bleibt.<\/p>\n<p>Bei der Erstellung einer MDE kommt es oft zu Problemen. Die einfachste und h&auml;ufigste Variante ist, dass der Men&uuml;punkt Extras (  Datenbank-Dienstprogramm\/MDE erstellen ausgegraut und damit nicht anw&auml;hlbar ist. (siehe Bild 4)<\/p>\n<p>Das tritt in Access XP auf, wenn die Datenbank sich im Format von Access 2000 befindet. Eine MDE kann n&auml;mlich immer nur mit der Version erstellt werden, in deren Format sie sich befindet. Die Datenbank muss also entweder mit Access 2000 in eine MDE umgewandelt werden oder sie muss in das Format von Access XP konvertiert werden und kann dann mit Access XP in eine MDE umgewandelt werden. In Access 2003 hat Microsoft den Men&uuml;punkt nicht mehr ausgegraut, sondern es erscheint im Falle einer Access 2000-Datenbank eine aussagekr&auml;ftige Fehlermeldung (siehe Bild 5).<\/p>\n<p>Bei dieser Gelegenheit noch eine Warnung: Das Datenbankformat von Access XP und Access 2003 ist an sich das gleiche. Das gilt aber nur f&uuml;r MDBs, nicht f&uuml;r MDEs, weil die Formate des vorkompilierten Codes wegen kleiner &auml;nderungen in Access 2003 leicht unterschiedlich sind.<\/p>\n<p>Das bedeutet, dass eine mit Access 2003 erstellte MDE mit Access XP kaum jemals l&auml;uft, besonders nicht, wenn viel Code in der Datenbank enthalten ist. Sie sollten eine MDE daher grunds&auml;tzlich immer mit der niedrigsten Access-Version erstellen, mit der sie eingesetzt werden soll. Die Aufw&auml;rtskompatibilit&auml;t ist ab Access 2000 n&auml;mlich gegeben. Das hei&szlig;t, Access XP kann MDEs von Access 2000 lesen und Access 2003 kann MDEs von Access XP und 2000 lesen. MDEs von Access 95 und 97 hingegen k&ouml;nnen nur mit der Version gelesen werden, in der sie erstellt wurden.<\/p>\n<p>Die h&auml;ufigsten Fehlermeldungen beim Versuch, eine MDE zu erstellen, sind &#8222;Kompilierungsfehler in verborgenem Modul: &lt;Modulname&gt;&#8220; und &#8222;Microsoft Access konnte keine MDE-Datenbank erstellen&#8220;.<\/p>\n<p>In den meisten F&auml;llen l&auml;sst sich der Verursacher durch eine einfache Kompilierung finden. Sie m&uuml;ssen also nur irgendein Modul in der MDB &ouml;ffnen und im Editor den Men&uuml;punkt Testen\/Alle Module kompilieren (in Access 97) oder Debuggen (  Kompilieren von &lt;Projektname&gt; (in der VBE) w&auml;hlen. Beim Kompilieren wird dann mindestens eine fehlerhafte Codestelle angezeigt. Nach ihrer Korrektur und nochmaligem Kompilieren sollte sich die MDE erstellen lassen.<\/p>\n<p>Es gibt aber auch hartn&auml;ckigere F&auml;lle von MDE-Verweigerung. Manchmal, besonders wenn kein Modulname in der Fehlermeldung genannt wird, hilft nur das Dekompilieren der MDB.<\/p>\n<p>Dazu m&uuml;ssen Sie eine Verkn&uuml;pfung erzeugen, in der der Pfad zur Datei MSAccess.exe steht, dann die Befehlszeilenoption decompile und dann der Pfad zur MDB. Ein Beispiel f&uuml;r den Text in der Eigenschaft Ziel der Verkn&uuml;pfung:<\/p>\n<p>&#8222;c:\\Programme\\Office\\msaccess.exe&#8220; \/decompile &#8222;c:\\Datenbanken\\Meine.mdb&#8220;<\/p>\n<p>Da der Schalter decompile bisweilen Probleme verursacht, erzeugen Sie vorher besser eine Sicherheitskopie der MDB. Danach sollten Sie, so wie immer vor dem MDE-Erstellen, die Verweise kontrollieren, die MDB komprimieren, den kompletten Code kompilieren lassen und dann die MDE-Erstellung erneut versuchen. <\/p>\n<p>In manchen F&auml;llen hilft es auch, die MDE einfach in einem unterschiedlichen Ordner erstellen zu lassen. Dazu w&auml;hlen Sie im Dialogfenster der MDE-Erstellung einen anderen Ordner als den, in dem sich die Quell-MDB befindet.<\/p>\n<p>Eine Frage, die seltsamerweise recht oft in Foren gestellt wird, ist, wie man eine MDE per Code erstellen kann. Ich nehme an, in den meisten F&auml;llen basteln die Fragesteller an Tools, Assistenten oder sonstigen Automatismen, denn im Normalfall erstellt man eine MDE schlicht &uuml;ber den vorhin behandelten Men&uuml;punkt. Jedenfalls gibt es in Access ein paar undokumentierte SysCmd-Befehle, darunter auch einen schon recht bew&auml;hrten, der die Umwandlung einer MDB in eine MDE durchf&uuml;hrt. Er kann das nur mit einer anderen MDB, nicht mit der aktuellen. In Access 97 reicht dazu folgende Codezeile:<\/p>\n<pre>SysCmd 603, \"QuellMDB\", \"ZielMDE\"<\/pre>\n<p>Mit QuellMDB ist dabei Pfad und Name der Datei gemeint, ebenso bei der ZielMDE. In Access 97 klappt damit die Umwandlung bis auf Ausnahmef&auml;lle. Nur selten muss man den Umweg &uuml;ber eine weitere Access-Instanz gehen, wie er ab Access 2000 hingegen immer notwendig ist:<\/p>\n<pre>Dim appAcc As Access.Application\r\nSet appAcc = CreateObject(\"Access.Application\")\r\nappAcc.SysCmd 603 , _    \"QuellMDB\", \"ZielMDE\"\r\nSet appAcc = Nothing<\/pre>\n<p>Es gibt auch eine M&ouml;glichkeit, die aktuelle MDB in eine MDE umzuwandeln. Diese besteht in der Verwendung des schon weiter oben beim Komprimieren angef&uuml;hrten Tools TSI SOON, kostenlos erh&auml;ltlich bei http:\/\/www.trigeminal.com\/utility.asp.<\/p>\n<p>Zum Abschluss der FAQ-Serie m&ouml;chte ich noch auf das Microsoft Graph eingehen, das in jeder Version von Access dabei ist und dem Erstellen von Diagrammen dient. Das Programm hat einen schlechten Ruf, den es meiner Meinung nach nicht wirklich verdient. Es ist sehr flexibel, wenn es auch nicht immer so gut und einfach zu verwenden und zu programmieren ist, wie die Diagramm-Funktionalit&auml;t von Excel. Das Hauptproblem von Graph ist die unzureichende Dokumentation. Diesbez&uuml;glich wurde es von Microsoft immer stiefm&uuml;tterlich behandelt. Zudem hat es zwei, drei hartn&auml;ckige Bugs, die Sie kennen sollten.<\/p>\n<p>Die h&auml;ufigsten Fragen zu Diagrammen sind in der schon angef&uuml;hrten mangelnden Dokumentation begr&uuml;ndet und drehen sich darum, wie man einzelne Teile von Diagrammen per Code steuern kann. Das Prinzip der Programmierung eines Diagramms in Access ist dabei relativ einfach (in einer Zeile):<\/p>\n<p><IMG height=\"262\" src=\"..\/fileadmin\/_temp_\/{9FF0B025-D4C1-4FB2-AEB3-F4173803E3D1}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Beispielformular zur Diagramm-Programmierung<\/span><\/b><\/p>\n<pre>Me!MeinDiagrammSteuerelement.ObjektOderEigenschaft = Gew&uuml;nschteEinstellung<\/pre>\n<p>So l&auml;sst sich zum Beispiel die Legende eines Diagramms folgenderma&szlig;en ausschalten:<\/p>\n<pre>Me!DiagrammSteuerelement.HasLegend = False<\/pre>\n<p>&auml;ndern des Titels eines Diagramms:<\/p>\n<pre>Me!DiagrammSteuerelement.ChartTitle.Text = \"Neuer Titel\" <\/pre>\n<p>&auml;ndern des Maximalwertes der y-Achse auf 100:<\/p>\n<pre>Me!DiagrammSteuerelement.Axes(2).MaximumScale = 100<\/pre>\n<p>Bild 6 zeigt das Beispielformular frmDiagramm.<\/p>\n<p>Die Schwierigkeit bei der Programmierung besteht vor allem darin, die entsprechenden Objekte und Eigenschaften zu kennen. Dabei hilft fast immer ein einfacher Trick: Da die Programmierung von Diagrammen in Excel fast identisch ist, k&ouml;nnen Sie ein Diagramm mit Excel erstellen und den Makrorekorder von Excel mitlaufen lassen, w&auml;hrend Sie die gew&uuml;nschten &auml;nderungen vornehmen. Den VBA-Code, den der Makrorekorder erzeugt, k&ouml;nnen Sie fast 1:1 in Access &uuml;bernehmen. Excel-VBA macht allerdings heftig Gebrauch von maskierten Konstanten nach dem Muster &#8222;xlEigenschaft&#8220;. Diese Konstanten k&ouml;nnen Sie nur in Access &uuml;bernehmen, wenn Sie einen Verweis auf die Excel-Objekt-Bibliothek setzen. Einfacher ist es meistens, in Excel das Direktfenster zu &ouml;ffnen und sich mit <\/p>\n<pre> xlEigenschaft<\/pre>\n<p>den eigentlichen Zahlenwert der Konstanten anzeigen zu lassen. Diesen unmaskierten Zahlenwert k&ouml;nnen Sie dann direkt und ohne zus&auml;tzlichen Verweis in Access verwenden.<\/p>\n<p>Noch kurz zu den h&auml;ufigsten Bugs und Problemen von Diagrammen:<\/p>\n<p>Auf ein gro&szlig;es Problem werden Sie vielleicht schon sto&szlig;en, wenn Sie versuchen, das Beispielformular frmDiagramm aus Bild 6 zu &ouml;ffnen. Es ist n&auml;mlich mit der Version 11 von Graph erstellt, die mit Access 2003 geliefert wird. Wenn Sie auf Ihrem Rechner eine &auml;ltere Version von Graph haben, werden Sie vermutlich eine Fehlermeldung erhalten, die besagt, dass der OLE-Server nicht registriert sei. Das r&uuml;hrt daher, dass jede Access-Version eine eigene Graph-Version mitbringt, die bei der Installation &auml;ltere Versionen &uuml;berschreibt, wenn Sie die Office-Pakete nicht sorgf&auml;ltig parallel installieren. Diagramme funktionieren dann auf diesem Rechner auch mit niedrigeren Access-Versionen, nicht aber auf anderen Rechnern mit niedrigerer Graph-Version.<\/p>\n<p>Ein anderes h&auml;ufiges Problem vor allem in Berichten ist, dass im Diagramm nicht immer die zum aktuellen Datensatz passenden Daten angezeigt werden, sondern manchmal Daten eines vorhergehenden Datensatzes.<\/p>\n<p>In diesen F&auml;llen hilft in der Regel eine Aktualisierung im Ereigniscode beim Formatieren des Berichtsbereichs:<\/p>\n<pre>Me!DiagrammSteuerelement.Requery<\/pre>\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 dreizehnten Teil werden L&ouml;sungen f&uuml;r weitere h&auml;ufige Probleme und Bugs bei der VBA-Programmierung vorgestellt.<\/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":[66022006,662006,44000004],"tags":[],"class_list":["post-55000340","post","type-post","status-publish","format-standard","hentry","category-66022006","category-662006","category-Tipps_und_Tricks"],"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>Access-FAQ - 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\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access-FAQ\" \/>\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 dreizehnten Teil werden L&ouml;sungen f&uuml;r weitere h&auml;ufige Probleme und Bugs bei der VBA-Programmierung vorgestellt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AccessFAQ\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:18:19+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243\" \/>\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\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access-FAQ\",\"datePublished\":\"2020-05-06T15:18:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/\"},\"wordCount\":3355,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5420d3cebee94ed28d03cc128f2d4243\",\"articleSection\":[\"2\\\/2006\",\"2006\",\"Tipps und Tricks\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/\",\"name\":\"Access-FAQ - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5420d3cebee94ed28d03cc128f2d4243\",\"datePublished\":\"2020-05-06T15:18:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5420d3cebee94ed28d03cc128f2d4243\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/5420d3cebee94ed28d03cc128f2d4243\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessFAQ\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access-FAQ\"}]},{\"@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 - 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\/","og_locale":"de_DE","og_type":"article","og_title":"Access-FAQ","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 dreizehnten Teil werden L&ouml;sungen f&uuml;r weitere h&auml;ufige Probleme und Bugs bei der VBA-Programmierung vorgestellt.","og_url":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:18:19+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243","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\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access-FAQ","datePublished":"2020-05-06T15:18:19+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/"},"wordCount":3355,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243","articleSection":["2\/2006","2006","Tipps und Tricks"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AccessFAQ\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/","url":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/","name":"Access-FAQ - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243","datePublished":"2020-05-06T15:18:19+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AccessFAQ\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/5420d3cebee94ed28d03cc128f2d4243"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AccessFAQ\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access-FAQ"}]},{"@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\/55000340","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=55000340"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000340\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}