{"id":55001273,"date":"2020-12-01T00:00:00","date_gmt":"2021-01-27T22:06:55","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1273"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"accdb_laeuft_accde_aber_nicht","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/","title":{"rendered":".accdb l&auml;uft, .accde aber nicht"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1273_001.png\" alt=\"Fehlermeldung in einer frisch erstellten .accde-Datenbank\" width=\"649,559\" height=\"112,2809\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Fehlermeldung in einer frisch erstellten .accde-Datenbank<\/span><\/b><\/p>\n<p><b>Haben Sie das schon einmal erlebt Sie haben Ihre Anwendung fertig programmiert und alles l&auml;uft einwandfrei. Sie m&uuml;ssen nur noch die Kompilierung in eine .accde-Datenbank vornehmen, damit der Kunde keinen Zugriff auf den Quellcode hat. Auch das gelingt ohne Probleme. Kaum starten Sie die .accde-Datenbank, geht jedoch pl&ouml;tzlich nichts mehr: Es funktionieren einfach keine Ereignisprozeduren mehr, und falls vorhanden, meckert auch das Ribbon, dass es seine Callback-Funktionen nicht mehr ausf&uuml;hren kann. Was ist hier geschehen und wie l&ouml;sen wir das Problem Das zeigen wir in diesem Artikel.<\/b><\/p>\n<p>Manchmal liefert Access Ph&auml;nomene, die man sich einfach nicht erkl&auml;ren kann. In meiner neuesten Anwendung, die das Ribbon nutzt, erscheint zum Beispiel nach der Umwandlung in eine <b>.accde<\/b>-Datenbank die Meldung aus Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1273_001.png\" alt=\"Fehlermeldung in einer frisch erstellten .accde-Datenbank\" width=\"649,559\" height=\"112,2809\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Fehlermeldung in einer frisch erstellten .accde-Datenbank<\/span><\/b><\/p>\n<p>Was genau passiert hier Das konnten wir nicht exakt herausfinden. Uns war an dieser Stelle wichtig, &uuml;berhaupt eine L&ouml;sung zu finden.<\/p>\n<p>Und die gab es: Offensichtlich entstehen diese Probleme mit <b>.accde<\/b>-Datenbanken, wenn sich in irgendeinem Klassenmodul eines Formulars oder Berichts noch eine leere Ereignisprozedur befindet, die beispielsweise wie folgt aussieht &#8211; also so, wie direkt nach der Erstellung:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Leider ist es nicht so einfach, das Problem so nachzustellen &#8211; es tritt n&auml;mlich nicht immer so auf. Offensichtlich gibt es noch andere Faktoren, die das Problem &#8222;aktivieren&#8220;. Wir k&ouml;nnen daher keine Beispieldatenbank anbieten, die dieses Problem aufzeigt. Dennoch ist es f&uuml;r Sie vermutlich hilfreich, den Inhalt dieses Artikels im Hinterkopf zu behalten &#8230; wer wei&szlig;, ob und wann Sie einmal dieses Ph&auml;nomen in einer Ihrer Datenbankanwendungen vorfinden.<\/p>\n<p><b>Probleml&ouml;sung<\/b><\/p>\n<p>Die L&ouml;sung ist ganz einfach: Sie brauchen lediglich die leeren Ereignisprozeduren aus Ihrer Anwendung zu entfernen. Es reicht auch aus, wenn Sie eine beliebige Zeile in die Prozedur einf&uuml;gen &#8211; und wenn es eine Kommentarzeile ist.<\/p>\n<p>Das h&ouml;rt sich allerdings leichter an, als es ist, denn Sie m&uuml;ssen ja zun&auml;chst einmal herausfinden, ob sich &uuml;berhaupt eine leere Ereignisprozedur in der Anwendung befindet und falls ja, wo diese liegt.<\/p>\n<p>Dazu haben wir eine Prozedur programmiert, die alle Prozedurnamen samt Modul ausgibt, die weder Code noch Kommentare enthalten.<\/p>\n<p>Damit die Prozedur funktioniert, ben&ouml;tigen wir einen Verweis auf die Bibliothek <b>Microsoft Visual Basic for Applications Extensibility 5.3 Object Library <\/b>(siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1273_001.png\" alt=\"Verweis auf die Bibliothek Microsoft Visual Basic for Applications Extensibility 5.3 Object Library\" width=\"499,6607\" height=\"393,9009\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Verweis auf die Bibliothek Microsoft Visual Basic for Applications Extensibility 5.3 Object Library<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p>Die Prozedur deklariert zun&auml;chst alle notwendigen Variablen, von denen einige aus der soeben per Verweis hinzugef&uuml;gten Bibliothek stammen. Diese f&uuml;hren wir gleich bei der Erl&auml;uterung der Funktion der Prozedur ein. Die Prozedur finden Sie in Listing 1.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>LeereProzedurenFinden()\r\n     <span style=\"color:blue;\">Dim <\/span>objVBE<span style=\"color:blue;\"> As <\/span>VBIDE.VBE\r\n     <span style=\"color:blue;\">Dim <\/span>objVBProject<span style=\"color:blue;\"> As <\/span>VBIDE.VBProject\r\n     <span style=\"color:blue;\">Dim <\/span>objVBComponent<span style=\"color:blue;\"> As <\/span>VBIDE.VBComponent\r\n     <span style=\"color:blue;\">Dim <\/span>objCodemodule<span style=\"color:blue;\"> As <\/span>VBIDE.CodeModule\r\n     <span style=\"color:blue;\">Dim <\/span>intLine<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intProcKind<span style=\"color:blue;\"> As <\/span>vbext_ProcKind\r\n     <span style=\"color:blue;\">Dim <\/span>strProc<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intBodyLine<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intStartline<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intCountLines<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intEndline<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolNichtLeer<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strLine<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objVBE = VBE\r\n     <span style=\"color:blue;\">Set<\/span> objVBProject = objVBE.ActiveVBProject\r\n     For Each objVBComponent In objVBProject.VBComponents\r\n         strProc = \"\"\r\n         <span style=\"color:blue;\">Set<\/span> objCodemodule = objVBComponent.CodeModule\r\n         For intLine = 1 To objCodemodule.CountOfLines\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> strProc = objCodemodule.ProcOfLine(intLine, intProcKind)<span style=\"color:blue;\"> Then<\/span>\r\n                 bolNichtLeer = <span style=\"color:blue;\">False<\/span>\r\n                 strProc = objCodemodule.ProcOfLine(intLine, intProcKind)\r\n                 intBodyLine = objCodemodule.ProcBodyLine(strProc, intProcKind)\r\n                 intStartline = objCodemodule.ProcStartLine(strProc, intProcKind)\r\n                 intCountLines = objCodemodule.ProcCountLines(strProc, intProcKind)\r\n                 intEndline = intStartline + intCountLines - 1\r\n                 For i = intBodyLine + 1 To intEndline - 1\r\n                     intLine = intLine + 1\r\n                     strLine = objCodemodule.Lines(i, 1)\r\n                     strLine = <span style=\"color:blue;\">Trim<\/span>(strLine)\r\n                     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strLine) = 0 And <span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Left<\/span>(strLine, 1) = \"'\"<span style=\"color:blue;\"> Then<\/span>\r\n                         bolNichtLeer = <span style=\"color:blue;\">True<\/span>\r\n                         <span style=\"color:blue;\">Exit For<\/span>\r\n                     <span style=\"color:blue;\">End If<\/span>\r\n                 <span style=\"color:blue;\">Next<\/span> i\r\n                 <span style=\"color:blue;\">If <\/span>bolNichtLeer = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n                     <span style=\"color:blue;\">Debug.Print<\/span> \"***** \" & strProc & \", Modul '\" & objVBComponent.Name & \"' ist LEER!\"\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Next<\/span> intLine\r\n     <span style=\"color:blue;\">Next<\/span> objVBComponent\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Ermitteln leerer Prozeduren in einer Anwendung<\/span><\/b><\/p>\n<p>Die Prozedur referenziert das Objektmodell des VBA-Editors mit der Objektvariablen <b>objVBE<\/b>. &Uuml;ber dessen Eigenschaft <b>ActiveVBProject <\/b>holt sie sich einen Verweis auf das aktive VBA-Projekt und referenziert es mit <b>objVBProject<\/b>. Dieses wiederum stellt mit der Auflistung <b>VBComponents <\/b>den Zugriff auf alle VB-Komponenten bereit, die wir in der folgenden <b>For Each<\/b>-Schleife durchlaufen. Hier setzt die Prozedur die Variable <b>strProc<\/b>, die den Namen der Prozedur speichern soll, auf eine leere Zeichenkette, und durchl&auml;uft dann alle Codezeilen des &uuml;ber die Eigenschaft <b>CodeModule <\/b>referenzierten Moduls. Dies geschieht in einer <b>For&#8230;Next<\/b>-Schleife mit den Zahlenwerten von <b>1 <\/b>bis zur mit <b>CountOfLines <\/b>ermittelten Anzahl der Codezeilen.<\/p>\n<p>Hier pr&uuml;fen wir eingangs immer, ob wir es mit einer neuen Prozedur zu tun haben oder ob die neue Zeile eine weitere Zeile der vorherigen Prozedur ist. Dazu speichern wir den Prozedurnamen in <b>strProc <\/b>und vergleichen diesen mit dem mit <b>ProcOfLine <\/b>ermittelten Prozedurnamen.<\/p>\n<p>Handelt es sich um eine neue Prozedur, ermittelt die Routine verschiedene Zeilennummern der Prozedur &#8211; die Startzeile, die Anzahl der Zeilen und die Endzeile.<\/p>\n<p>F&uuml;r die Zeilen von der Startzeile bis zur Endzeile durchl&auml;uft die Prozedur eine weitere <b>For&#8230;Next<\/b>-Schleife. Darin liest sie die Zeilen innerhalb der ersten und der letzten Zeile (zum Beispiel <b>Public Sub &#8230; <\/b>und <b>End Sub<\/b>) in die Variable <b>strLine <\/b>ein. Darin pr&uuml;ft sie auch, ob der Inhalt der enthaltenen Zeilen leer ist oder dieser eine Kommentarzeile enth&auml;lt. Ist nicht der Fall, wird die Variable <b>bolNichtLeer <\/b>auf <b>True <\/b>eingestellt und die innere <b>For&#8230;Next<\/b>-Schleife verlassen. Weist <b>bolNichtLeer <\/b>danach den Wert <b>False <\/b>auf, gibt die Routine im Direktfenster eine Anweisung beispielsweise wie folgt aus:<\/p>\n<pre>***** Form_Load, Modul 'mdlTools' ist LEER!<\/pre>\n<p>Damit entdecken Sie alle leeren Prozeduren innerhalb der Anwendung. Sie brauchen diese nur noch zu entfernen oder mit mindestens einer Kommentarzeile zu f&uuml;llen, um Probleme bei der Funktion einer <b>.accde<\/b>-Datenbank durch diese Prozedur zu verhindern.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>LeereProzedurenFinden.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/EF12DCAF-A722-4ECC-9307-2B1388259A46\/aiu_1273.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haben Sie das schon einmal erlebt Sie haben Ihre Anwendung fertig programmiert und alles l&auml;uft einwandfrei. Sie m&uuml;ssen nur noch die Kompilierung in eine .accde-Datenbank vornehmen, damit der Kunde keinen Zugriff auf den Quellcode hat. Auch das gelingt ohne Probleme. Kaum starten Sie die .accde-Datenbank, geht jedoch pl&ouml;tzlich nichts mehr: Es funktionieren einfach keine Ereignisprozeduren mehr, und falls vorhanden, meckert auch das Ribbon, dass es seine Callback-Funktionen nicht mehr ausf&uuml;hren kann. Was ist hier geschehen und wie l&ouml;sen wir das Problem Das zeigen wir in diesem Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662020,66062020,44000025],"tags":[],"class_list":["post-55001273","post","type-post","status-publish","format-standard","hentry","category-662020","category-66062020","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>.accdb l&auml;uft, .accde aber nicht - 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\/accdb_laeuft_accde_aber_nicht\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\".accdb l&auml;uft, .accde aber nicht\" \/>\n<meta property=\"og:description\" content=\"Haben Sie das schon einmal erlebt Sie haben Ihre Anwendung fertig programmiert und alles l&auml;uft einwandfrei. Sie m&uuml;ssen nur noch die Kompilierung in eine .accde-Datenbank vornehmen, damit der Kunde keinen Zugriff auf den Quellcode hat. Auch das gelingt ohne Probleme. Kaum starten Sie die .accde-Datenbank, geht jedoch pl&ouml;tzlich nichts mehr: Es funktionieren einfach keine Ereignisprozeduren mehr, und falls vorhanden, meckert auch das Ribbon, dass es seine Callback-Funktionen nicht mehr ausf&uuml;hren kann. Was ist hier geschehen und wie l&ouml;sen wir das Problem Das zeigen wir in diesem Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-27T22:06:55+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862\" \/>\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=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\".accdb l&auml;uft, .accde aber nicht\",\"datePublished\":\"2021-01-27T22:06:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/\"},\"wordCount\":797,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/05debc9829054db4bd96c1f05171a862\",\"articleSection\":[\"2020\",\"6\\\/2020\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/\",\"name\":\".accdb l&auml;uft, .accde aber nicht - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/05debc9829054db4bd96c1f05171a862\",\"datePublished\":\"2021-01-27T22:06:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/05debc9829054db4bd96c1f05171a862\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/05debc9829054db4bd96c1f05171a862\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/accdb_laeuft_accde_aber_nicht\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\".accdb l&auml;uft, .accde aber nicht\"}]},{\"@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":".accdb l&auml;uft, .accde aber nicht - 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\/accdb_laeuft_accde_aber_nicht\/","og_locale":"de_DE","og_type":"article","og_title":".accdb l&auml;uft, .accde aber nicht","og_description":"Haben Sie das schon einmal erlebt Sie haben Ihre Anwendung fertig programmiert und alles l&auml;uft einwandfrei. Sie m&uuml;ssen nur noch die Kompilierung in eine .accde-Datenbank vornehmen, damit der Kunde keinen Zugriff auf den Quellcode hat. Auch das gelingt ohne Probleme. Kaum starten Sie die .accde-Datenbank, geht jedoch pl&ouml;tzlich nichts mehr: Es funktionieren einfach keine Ereignisprozeduren mehr, und falls vorhanden, meckert auch das Ribbon, dass es seine Callback-Funktionen nicht mehr ausf&uuml;hren kann. Was ist hier geschehen und wie l&ouml;sen wir das Problem Das zeigen wir in diesem Artikel.","og_url":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-01-27T22:06:55+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":".accdb l&auml;uft, .accde aber nicht","datePublished":"2021-01-27T22:06:55+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/"},"wordCount":797,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862","articleSection":["2020","6\/2020","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/","url":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/","name":".accdb l&auml;uft, .accde aber nicht - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862","datePublished":"2021-01-27T22:06:55+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/05debc9829054db4bd96c1f05171a862"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/accdb_laeuft_accde_aber_nicht\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":".accdb l&auml;uft, .accde aber nicht"}]},{"@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\/55001273","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=55001273"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001273\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}