{"id":55000038,"date":"2001-12-01T00:00:00","date_gmt":"2020-06-17T15:07:09","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=38"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Bildverwaltung_in_Access","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/","title":{"rendered":"Bildverwaltung in Access"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Klaus Giesen, Wuppertal<\/p>\n<p><\/b><\/p>\n<p><b>Mit Microsoft Access k&ouml;nnen nicht nur die &uuml;blichen Daten wie Nachname, Vorname oder Artikelnummern, sondern beispielsweise auch Bilder gespeichert und mit der entsprechenden Funktionalit&auml;t verwaltet werden. Typische Anwendungsbeispiele daf&uuml;r sind beispielsweise Abbildungen zu Artikeln und Produkten oder auch nur ein reines Bildarchiv.<\/b><\/p>\n<p>Access stellt Ihnen verschiedene M&ouml;glichkeiten zur Speicherung von Bildern bzw. Bildinformationen in unterschiedlichen Steuerelementtypen zur Verf&uuml;gung, die sich in verschiedener Hinsicht voneinander unterscheiden.<\/p>\n<p>Access speichert Bilder als so genannte OLE-Objekte in einem entsprechenden Felddatentyp.<\/p>\n<p>Zus&auml;tzlich tauchen in diesem Zusammenhang auch noch Begriffe wie gebunden und ungebunden, sowie Einbetten bzw. Verkn&uuml;pfen auf.<\/p>\n<p>Wir wollen uns an dieser Stelle aber nicht mit langen Erkl&auml;rungen aufhalten, sondern mit einem ganz einfachen Beispiel beginnen. Die wichtigsten Begriffe  zum Verst&auml;ndnis des gesamtem Vorgangs werden Sie dann im Verlauf dieses Beitrags n&auml;her kennen lernen.<\/p>\n<p><b>OLE-Objekt in Datenbank speichern<\/b><\/p>\n<p>Als Voraussetzung zur Speicherung von OLE-Daten muss ein Tabellenfeld auf den Felddatentyp OLE-Objekt eingestellt sein. Nur dann k&ouml;nnen verkn&uuml;pfte oder eingebettete OLE-Objekte auch in einer Tabelle gespeichert werden.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die folgende Methode ist von Access standardm&auml;&szlig;ig zum Speichern von OLE-Objekten vorgesehen. <\/p>\n<p>Auch zum Einf&uuml;gen eines solchen Objekts gibt es mehrere M&ouml;glichkeiten, von denen an dieser Stelle nun eine genauer beschrieben werden soll.<\/p>\n<li>&ouml;ffnen Sie die betreffende Tabelle mit dem OLE-Feld in der Datenblattansicht und klicken Sie in das OLE-Feld.<\/li>\n<li>W&auml;hlen Sie aus dem Men&uuml; Einf&uuml;gen den Befehl Objekt aus. W&auml;hlen Sie aus dem Listenfeld Objekttyp den Eintrag Bitmap-Bild aus und markieren Sie die Option Aus Datei erstellen (siehe Bild 1).<\/li>\n<li>W&auml;hlen Sie in dem darauf folgenden Dialogfenster mit Hilfe der Schaltfl&auml;che Durchsuchen eine Grafikdatei auf Ihrer Festplatte aus (siehe Bild 2). Achten Sie bitte darauf, dass das Kontrollk&auml;stchen Verkn&uuml;pfen nicht aktiviert ist.<\/li>\n<p><IMG height=\"270\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic001.png\" width=\"488\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Auswahl des Objekttyps<\/span><\/b><\/p>\n<p><b><\/b><\/p>\n<p><b> Abb. 2: Objekt aussuchen und einf&uuml;gen<\/b><\/p>\n<p><IMG height=\"270\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic002.png\" width=\"488\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Anzeige des OLE-Servers im Tabellenfeld<\/span><\/b><\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Das Einf&uuml;gen eines OLE-Objekts &uuml;ber dieses Dialogfenster ist aus naheliegenden Gr&uuml;nden f&uuml;r den Anwender sehr flexibel: Er kann dort jeden auf seinem Computer vorhandenen OLE-f&auml;higen Dateityp bequem ausw&auml;hlen. <\/p>\n<li>In dem Tabellenfeld wird daraufhin der OLE-Server des eingef&uuml;gten Objekttyps angezeigt (siehe Bild 3).<\/li>\n<li>&ouml;ffnen Sie das zur Tabelle geh&ouml;rende Formular in der Entwurfsansicht und ziehen Sie aus der Feldliste das Objektfeld ins Formular.<\/li>\n<li>Wechseln Sie in die Formularansicht, um sich das eingef&uuml;gte Bild anzusehen.<\/li>\n<p>Um weitere Bilder in Ihre Datenbank einzuf&uuml;gen, klicken Sie einfach mit der rechten Maustaste auf das Objektfeld und w&auml;hlen Sie aus dem Kontextmen&uuml; den Befehl Objekt aus. Daraufhin wird wieder das Dialogfenster Objekt einf&uuml;gen (siehe Bild 1) angezeigt.<\/p>\n<p>Damit ist dieses einfache Beispiel abgeschlossen und das Bild wird im Formular angezeigt (siehe Bild 4).<\/p>\n<p><b>Einf&uuml;gen von OLE-Objekten per VBA<\/b><\/p>\n<p>Es versteht sich von selbst, dass unter Access das Einf&uuml;gen eines solchen Bildes auch per VBA m&ouml;glich ist &#8211; beispielsweise &uuml;ber eine Schaltfl&auml;che Neu im Formular.<\/p>\n<p>Schon die einzelne Codezeile<\/p>\n<pre>Me!oleBild.Action = acOLEInsertObjDlg<\/pre>\n<p>innerhalb einer Beim Klicken-Ereignisprozedur &ouml;ffnet das bereits bekannte Dialogfenster Objekt einf&uuml;gen.<\/p>\n<p>Allerdings gilt es auch bei dieser einfachen Variante einiges zu beachten. Wenn ein Objekt eingef&uuml;gt wird, wird auch der Programmcode weiter abgearbeitet. Beim Klick auf die Schaltfl&auml;che Abbrechen tritt allerdings ein Laufzeitfehler mit der Fehlernummer 2001 auf.<\/p>\n<p><IMG height=\"155\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic003.png\" width=\"492\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Bilder einf&uuml;gen per Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Eine wiederum einfache L&ouml;sung ist, die Fehlerbehandlung von Access vollst&auml;ndig zu umgehen. Der Programmcode dazu sieht wie folgt aus:<\/p>\n<pre>'' Beim Auftreten eines Laufzeitfehlers\r\n'' wird mit der n&auml;chsten Anweisung \r\n'' fortgefahren\r\nOn Error Resume Next\r\n'' &ouml;ffnet den Dialog Objekt einf&uuml;gen\r\nMe!oleBild.Action = acOLEInsertObjDlg\r\n'' Deaktiviert alle aktivierten\r\n'' Fehlerbehandlungsroutinen\r\nOn Error GoTo 0<\/pre>\n<p>Eine ausf&uuml;hrlichere und auch elegantere L&ouml;sung w&uuml;rde den Laufzeitfehler 2001 explizit abfangen. Weiterhin bietet sich an zu &uuml;berpr&uuml;fen, ob in dem OLE-Feld bereits ein Objekt vorhanden ist.<\/p>\n<p>Daraufhin sollte der Anwender entscheiden k&ouml;nnen, ob dieses Feld &uuml;berschrieben werden soll oder nicht.<\/p>\n<p><b>Begriffserl&auml;uterungen und Hintergrundinformationen<\/b><\/p>\n<p>An dieser Stelle ist es notwendig einige Begriffe zu kl&auml;ren, damit unmissverst&auml;ndlich deutlich wird, was eigentlich geschehen ist und welche Alternativen beim Import von Bildern m&ouml;glich sind.<\/p>\n<h3>Objekttyp<\/h3>\n<p>In dem Listenfeld Objekttyp (Schritt 2) werden die Objekte aller OLE-f&auml;higen Anwendungen auf Ihrem Computersystem angezeigt. Mit Hilfe der OLE-Technik k&ouml;nnen bekanntlich verschiedene Anwendungen innerhalb einer Anwendung miteinander kombiniert werden.<\/p>\n<p>Hierbei ist es jedoch von entscheidender Bedeutung, dass eine Anwendung zur Bearbeitung des OLE-Objektes &#8211; in unserem Beispiel ein entsprechendes Grafikprogramm &#8211; auf dem Computersystem auch ordnungsgem&auml;&szlig; (= lauff&auml;hig) installiert ist. Nur dann kann das Objekt auch bearbeitet werden.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie eine derartige Datenbank weitergeben, m&uuml;ssen Sie auf jeden Fall sicherstellen, dass eine Anwendung zur Bearbeitung des entsprechenden Dateityps auch auf dem betreffenden Computer vorhanden ist. <\/p>\n<h3>Neu erstellen &#8211; aus bestehender Datei erstellen<\/h3>\n<p>Bei unserem Beispiel haben wir in Schritt 2 die Option Aus Datei erstellen ausgew&auml;hlt. Das setzt allerdings das physikalische Vorhandensein der betreffenden Datei auf einem Datentr&auml;ger voraus.<\/p>\n<p>Bei Auswahl der Option Neu erstellen braucht &#8211; wie die Bezeichnung vermuten l&auml;sst &#8211; die Datei nicht auf einem Datentr&auml;ger vorhanden sein. In diesem Fall wird das zugeh&ouml;rige Anwendungsprogramm &#8211; beispielsweise das Programm Microsoft Paint &#8211; gestartet und Sie k&ouml;nnen eine Grafik erstellen.<\/p>\n<p>Anschlie&szlig;end kehren Sie &uuml;ber einen entsprechend angepassten Men&uuml;befehl von Paint zu Access zur&uuml;ck (siehe Bild 5).<\/p>\n<p>Bei dieser Vorgehensweise ist es wichtig im Hinterkopf zu behalten, dass die neu erstellte Grafikdatei &#8211; falls sie nicht ausdr&uuml;cklich gespeichert wird &#8211; nur in der Datenbank und nicht als Datei auf einem Datentr&auml;ger vorhanden ist.<\/p>\n<p><IMG height=\"330\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic004.png\" width=\"337\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Erstellen einer Grafik in Paint<\/span><\/b><\/p>\n<p><IMG height=\"308\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Auf die gleiche Art und Weise kann die in der Datenbank gespeicherte Grafikdatei auch bearbeitet werden. <\/p>\n<h3>Einbetten &#8211; Verkn&uuml;pfen<\/h3>\n<p>Im Schritt 3 wurde das unscheinbare Kontrollk&auml;stchen Verkn&uuml;pfen im mittleren Teil des Dialogfensters nicht aktiviert.<\/p>\n<p>Das aber impliziert automatisch, dass das Grafikobjekt eingebettet ist.<\/p>\n<p>Doch was bedeutet das genau und wo liegen die Unterschiede zwischen diesen beiden Methoden<\/p>\n<p>Zun&auml;chst zum Begriff Einbetten: Einbetten bedeutet vereinfacht ausgedr&uuml;ckt, dass eine Kopie der Herkunftsdatei in der Datenbank gespeichert wird.<\/p>\n<p>Das Original bleibt als solches separat erhalten und kann weiterhin bearbeitet werden. Diese &auml;nderungen werden allerdings vom Objekt, welches in der Datenbank gespeichert ist, nicht &uuml;bernommen. Umgekehrt &#8211; f&uuml;r die Bearbeitung des in der Datenbank gespeicherten Objekts &#8211; gilt das Gleiche.<\/p>\n<p>Der Speicherplatzbedarf der Datenbank ist bei dieser Methode extrem hoch. Neben der Gr&ouml;&szlig;e der importierten Grafikdatei ist daf&uuml;r in erster Linie der so genannte OLE-Overhead verantwortlich, der ein Mehrfaches der Grafikdateigr&ouml;&szlig;e betr&auml;gt. Kurz gesagt: Die Datenbank wird extrem aufgebl&auml;ht.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Je nach Hardwareausstattung Ihres Computers kann die Performance der Datenbank negativ beeinflusst werden. <\/p>\n<p>Dagegen kann sich je nach vorliegendem Fall eine Datensicherung vereinfachen. Bei einem Bildarchiv beispielsweise brauchen so nicht Hunderte von Bilddateien, sondern nur eine Datenbankdatei gesichert werden.<\/p>\n<p>Der Begriff Verkn&uuml;pfen dagegen bedeutet, dass lediglich ein Hinweis auf ein Objekt erstellt wird. Dabei kann es sich entweder um eine bestehende Datei oder um ein mit der Herkunftsanwendung neu erstelltes Objekt handeln.<\/p>\n<p>Alle &auml;nderungen an der verkn&uuml;pften Datei werden automatisch in der Datenbank sichtbar. Dabei ist unerheblich, ob Sie die f&uuml;r die Durchf&uuml;hrung der &auml;nderung verwendete Anwendung direkt von der Datenbank aus oder au&szlig;erhalb von Access &ouml;ffnen. <\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Vor allem in einer Mehrbenutzerumgebung bietet sich diese Methode an, denn so k&ouml;nnen &#8211; falls erforderlich &#8211; mehrere Anwender das Herkunftsobjekt bearbeiten. <\/p>\n<p>Die vorhergehenden Ausf&uuml;hrungen haben Ihnen hoffentlich deutlich gemacht, dass die Entscheidung f&uuml;r eine dieser beiden Methoden quasi von strategischer Bedeutung ist und in erster Linie vom jeweiligen Anwendungs- bzw. Verwendungszweck abh&auml;ngt.<\/p>\n<h3>Gebunden &#8211; Ungebunden<\/h3>\n<p>Bei unserem Beispiel ist von Access ohne gro&szlig;es Nachfragen ein gebundenes OLE-Objekt erstellt worden. Grund daf&uuml;r war, dass unser Ausgangspunkt das OLE-Feld in der Tabelle war. Damit steht auch schon die Definition:<\/p>\n<p>Gebundene OLE-Objekte sind immer an ein entsprechendes Tabellenfeld gebunden. Daraus ergibt sich eben auch, dass die in einem solchen Feld gespeicherten Objekte aus der Datenbank heraus angezeigt und bearbeitet werden k&ouml;nnen.<\/p>\n<p>Ungebundene OLE-Objekte definieren sich gegenteilig zum eben Beschriebenen: Sie werden nicht in einem Tabellenfeld, sondern lediglich in einem Formular oder Bericht gespeichert. Deswegen kann dieses Thema auch relativ schnell abgehandelt werden.<\/p>\n<p>Eine m&ouml;gliche Einf&uuml;gemethode ist der Weg &uuml;ber die Zwischenablage von Windows:<\/p>\n<li>&ouml;ffnen Sie ein Formular in der Entwurfsansicht.<\/li>\n<li>Starten Sie ein Grafikprogramm. &ouml;ffnen Sie eine Grafikdatei, markieren Sie die Datei und kopieren Sie diese in die Zwischenablage.<\/li>\n<li>W&auml;hlen Sie in Access aus dem Men&uuml; Bearbeiten den Befehl Inhalte einf&uuml;gen aus und klicken Sie in dem nachfolgenden Dialogfenster Inhalte einf&uuml;gen auf OK.<\/li>\n<p><IMG height=\"317\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic006.png\" width=\"397\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Ungebundenes OLE-Objekt in einem Formular<\/span><\/b><\/p>\n<p>Ungebundene OLE-Objekte dienen in erster Linie dazu, statische Objekte wie beispielsweise Firmenlogos darzustellen oder auch Sounddateien abzuspielen.<\/p>\n<p>Andererseits eignen sich ungebundene OLE-Felder vorz&uuml;glich dazu, mit externen Daten verbunden zu werden. Ein Beispiel dazu finden Sie in Absatz 3.<\/p>\n<p><b>Ausgew&auml;hlte Eigenschaften von OLE-Objekten<\/b><\/p>\n<p>Die Eigenschaften von gebundenen und ungebundenen OLE-Objekten k&ouml;nnen sich je nach Herkunfts- und Verkn&uuml;pfungsart doch recht deutlich voneinander unterscheiden. Deshalb werden an dieser Stelle nur einige ausgew&auml;hlte Eigenschaften vorgestellt.<\/p>\n<p><IMG height=\"333\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic007.png\" width=\"392\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Das Eigenschaftsfenster<\/span><\/b><\/p>\n<h3>Gr&ouml;&szlig;enanpassung<\/h3>\n<p>&uuml;ber die Eigenschaft Gr&ouml;&szlig;enanpassung wird die Darstellung des OLE-Objekts im Formular beeinflusst. Dabei stehen drei M&ouml;glichkeiten zur Auswahl: Abschneiden, Dehnen und Zoomen.<\/p>\n<p><IMG height=\"330\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic008.png\" width=\"337\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Bildanzeige mit der Gr&ouml;&szlig;enanpassung Dehnen<\/span><\/b><\/p>\n<li>Beim Abschneiden wird das OLE-Objekt in seiner tats&auml;chlichen Gr&ouml;&szlig;e angezeigt. Wenn es gr&ouml;&szlig;er als das Steuerelement ist, werden seine R&auml;nder abgeschnitten.<\/li>\n<li>Beim Dehnen wird die Gr&ouml;&szlig;e des OLE-Objekts so angepasst, dass das Steuerelement ganz ausgef&uuml;llt ist. Dadurch kann es, wie Bild 8 zeigt, zu unsch&ouml;nen Verzerrungen kommen.<\/li>\n<p>Wenn als Wert der Eigenschaft Zoomen ausgew&auml;hlt ist, wird das OLE-Objekt an die Gr&ouml;&szlig;e des Steuerelements angepasst, wobei sein Seitenverh&auml;ltnis bei-behalten wird. Dadurch treten keine Verzerrungen auf.<\/p>\n<h3>Anzeigeart<\/h3>\n<p><!--30percent--><\/p>\n<p>&uuml;ber die Eigenschaft Anzeigeart wird festgelegt, auf welche Weise das OLE-Feld seinen Inhalt anzeigen soll. Die beiden m&ouml;glichen Werte f&uuml;r die Eigenschaften hei&szlig;en Inhalt und Symbol.<\/p>\n<p>Wenn die Eigenschaft den Wert Inhalt hat, werden die Daten des OLE-Objekts angezeigt. Im Fall des Wertes Symbol wird lediglich das Symbol des OLE-Objekts angezeigt (siehe Bild 9).<\/p>\n<p><IMG height=\"330\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic009.png\" width=\"337\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Symbol eines OLE-Objekts im Formular<\/span><\/b><\/p>\n<p><IMG height=\"372\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic010.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Das Formular Bildarchiv<\/span><\/b><\/p>\n<p>Diese Einstellung kann aus mehreren Gr&uuml;nden sinnvoll sein.<\/p>\n<p>Zum einen braucht ein Symbol bedeutend weniger Platz auf dem Formular und der Inhalt kann ja auf Doppelklick angezeigt werden.<\/p>\n<p>Zum anderen kann die grafische Darstellung von OLE-Objekten &#8211; gerade beim Datensatzwechsel &#8211; recht zeitraubend sein.<\/p>\n<p>Falls die grunds&auml;tzlichen Eigenschaften gebundener (hoher Speicherplatzbedarf) und ungebundener (mangelnde Flexibilit&auml;t) OLE-Objekte st&ouml;ren, bietet sich eine interessante Alternative an:<\/p>\n<p>In einer Tabelle werden lediglich Dateinamen und -pfad der Bilder gespeichert. Angezeigt werden die entsprechenden Bilder zur Laufzeit in einem ungebundenen OLE-Objekt. So k&ouml;nnte beispielsweise die L&ouml;sung f&uuml;r ein Bildarchiv realisiert werden.<\/p>\n<p>Access w&auml;re nicht Access, wenn alle diese Funktionalit&auml;ten nicht auch per VBA-Programmierung erledigt werden k&ouml;nnten.<\/p>\n<p>Das folgende Beispiel setzt dies um und beinhaltet unter anderem auch die M&ouml;glichkeit, Bilddateien &uuml;ber ein unter Windows &uuml;bliches Dialogfeld zur Dateiauswahl auszuw&auml;hlen und alle Bilder eines Verzeichnisses in einem Rutsch laden zu k&ouml;nnen.<\/p>\n<p><IMG height=\"284\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic011.png\" width=\"94\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Das Steuerelement Bild in der Toolbox<\/span><\/b><\/p>\n<p><b>Das Steuerelement Bild<\/b><\/p>\n<p>Bestandteil dieser L&ouml;sung ist das Steuerelement Bild. Dieses Steuerelement ist im Grunde genommen ein ungebundenes OLE-Objekt und speziell f&uuml;r die Anzeige von Bildern entwickelt worden. Sein Vorteil gegen&uuml;ber einem Objektfeld ist, dass es wesentlich schneller geladen wird.<\/p>\n<p>Der Verwendung dieses Steuerelementes bietet sich allerdings nur dann an, wenn das Bild nicht aktualisiert werden muss. Anderenfalls ist die Verwendung eines gebundenen OLE-Objekts notwendig.<\/p>\n<p>Bild 10 zeigt die Toolbox mit dem Steuerelement Bild. Die Toolbox wird durch einen Klick auf die gleichnamige Schaltfl&auml;che der Symbolleiste in der Entwurfsansicht von Formularen angezeigt.<\/p>\n<p><IMG height=\"308\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic012.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 12:  Der Dialog Datei &ouml;ffnen<\/span><\/b><\/p>\n<p><IMG height=\"131\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic013.png\" width=\"495\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 13:  Dateiname und -pfad in der Tabelle<\/span><\/b><\/p>\n<p><b>Einzelne Bilddatei aus einem Ordner laden<\/b><\/p>\n<p>Die fertige L&ouml;sung erlaubt zun&auml;chst die Auswahl einer einzelnen Grafikdatei.<\/p>\n<p>Beim Klick auf die Schaltfl&auml;che Datei laden im Formular frmBildArchiv der Beispieldatenbank BilderImport.mdb (siehe Bild 10) wird die folgende Ereignisprozedur aufgerufen:<\/p>\n<pre>Private Sub btnLoad_Click()\r\n    Dim FName$\r\n    FName$ = DateiOeffnen(CurDir$, _    \"Bildladen:\")\r\n    If FName$ = \"\" Then Exit Sub\r\n    Me.[txtFoto] = FName$\r\n    Me.[picFoto].Picture = FName$\r\n    DoEvents\r\nEnd Sub<\/pre>\n<p>Aus Gr&uuml;nden der &uuml;bersichtlichkeit fehlen die Fehlerbehandlungsroutinen. Der Ablauf ist relativ simpel.<\/p>\n<p>Zun&auml;chst wird die Funktion DateiOeffnen() aus dem Modul modWindowsDialoge aufgerufen, das Sie in der Beispieldatenbank BilderImport.mdb finden.<\/p>\n<p>Daraufhin wird der normale Datei &ouml;ffnen-Dialog angezeigt, in dem das aktuelle Verzeichnis voreingestellt ist.<\/p>\n<p>Falls keine Datei ausgew&auml;hlt wird, wird die Routine beendet. Falls doch, wird die Variable FName$ mit Dateiname und Pfad gef&uuml;llt und im Feld txtFoto der Tabelle gespeichert. Dann wird mit dem Variableninhalt die Eigenschaft Picture oder Bild des Bild-Steuerelements gesetzt. Das war es schon. Ein Blick in die Tabelle zeigt, dass dort tats&auml;chlich Dateiname und -pfad gespeichert sind.<\/p>\n<p>Damit die Bilder auch beim &ouml;ffnen des Formulars und beim Datensatzwechsel angezeigt werden, ist noch eine zweite Ereignisprozedur notwendig. Diese wird beim Ereignis Beim Anzeigen oder Current des Formulars ausgef&uuml;hrt (s. Quellcode 1).<\/p>\n<p>Die beiden in diesem Zusammenhang entscheidenden Schritte sind in den beiden folgenden Codezeilen enthalten.<\/p>\n<p>In der Zeile<\/p>\n<pre>PicFName$ = Me.[txtFoto]<\/pre>\n<p>wird eine Variable mit dem Dateipfad gef&uuml;llt, mit dem in der Zeile<\/p>\n<pre>Me.[picFoto].Picture = PicFName$<\/pre>\n<p>die Eigenschaft Picture des Bild-Steuerelements entsprechend eingestellt wird.<\/p>\n<pre>Private Sub Form_Current()\r\n    Dim PicFName$\r\n    On Error Resume Next\r\n    DoCmd.Hourglass True\r\n    If Not IsNull(Me.[txtFoto]) Then\r\n        PicFName$ = Me.[txtFoto]\r\n        If Dir$(PicFName$) &lt;&gt; \"\" Then\r\n            Me.[picFoto].Picture = PicFName$\r\n        Else\r\n            Me.[picFoto].Picture = \"\"\r\n            DoEvents\r\n            Beep\r\n            MsgBox \"Bilddatei nicht gefunden!\"\r\n        End If\r\n    Else\r\n        Me.[picFoto].Picture = \"\"\r\n    End If\r\n    DoCmd.Hourglass False\r\nEnd Sub\r\nSet DB = CurrentDb()\r\n    Set rs = DB.OpenRecordset(\"tabBildArchiv\", _        dbOpenDynaset)\r\n    For i = 1 To MaxTyp\r\n        DoEvents\r\n        X$ = Dir$(P$ + BildTyp(i))\r\n        While X$ &lt;&gt; \"\"\r\n            On Error Resume Next\r\n            rs.AddNew\r\n            rs(\"txtFoto\") = P$ + X$\r\n            If Err &lt;&gt; 0 Then GoTo Skip\r\n            rs(\"txtKategorie\") = \"Neu\"\r\n            rs(\"txtStichwort\") = \"Neues Bild\"\r\n            rs.Update\r\nSkip:\r\n            On Error GoTo 0\r\n            X$ = Dir$()\r\n        Wend\r\n    Next i\r\n    rs.Close<\/pre>\n<p><b>Alle Bilddateien aus einem Ordner einlesen<\/b><\/p>\n<p>Mit dem Formular frmBildArchiv der Beispieldatenbank BilderImport.mdb ist es m&ouml;glich, den Inhalt eines kompletten Ordners mit Grafikdateien quasi auf einen Rutsch einzulesen.<\/p>\n<p>Dazu ist ein Klick auf die Schaltfl&auml;che Verzeichnis einlesen notwendig. Die daraufhin aufgerufene Ereignisprozedur btnDir_Click finden Sie im Klassenmodul FORM_frmBildArchiv der Beispieldatenbank. Sie wird hier in ihren wesentlichen Passagen erl&auml;utert.<\/p>\n<h3>Eingrenzung der Dateitypen<\/h3>\n<p>Durch den notwendigen Deklarationsteil wird festgelegt, dass nur Dateien mit drei bestimmten Dateiendungen eingelesen werden k&ouml;nnen. Dies ist deshalb notwendig, weil der weitere Verlauf der Prozedur keine Auswahlm&ouml;glichkeit von Dateien vorsieht.<\/p>\n<pre>Const MaxTyp = 3\r\nDim DB As Database\r\nDim rs As Recordset\r\nDim SQL$, P$, X$, i%\r\nDim BildTyp(1 To MaxTyp)\r\n    BildTyp(1) = \"*.bmp\"\r\n    BildTyp(2) = \"*.gif\"\r\n    BildTyp(3) = \"*.jpg\"<\/pre>\n<h3>Verzeichnisauswahl<\/h3>\n<p>In der folgenden Zeile ruft die Funktion OpenFolder aus dem Modul modWindowsDialoge der Beispieldatenbank ein Dialogfenster auf:<\/p>\n<pre>P$ = OpenFolder(\"Bilder aus Verzeichnis importieren:\")<\/pre>\n<p>Als Ergebnis wird das Dialogfenster Ordner suchen (siehe Bild 14) angezeigt, in dem der gew&uuml;nschte Ordner ausgew&auml;hlt werden kann.<\/p>\n<p><IMG height=\"358\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic014.png\" width=\"324\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 14:  Das Dialogfenster Ordner suchen<\/span><\/b><\/p>\n<p>Das ist &uuml;brigens die einzige Benutzerschnittstelle dieser Routine.<\/p>\n<p>Durch die Codezeile<\/p>\n<pre>If P$ = \"\" Then Exit Sub<\/pre>\n<p>wird die Prozedur beendet, falls das ausgew&auml;hlte Verzeichnis leer ist.<\/p>\n<h3>Bildpfade einlesen<\/h3>\n<p>Dateiname und -pfad werden nach dem &ouml;ffnen eines Recordsets in einer Schleife eingelesen (s. Quellcode 2).<\/p>\n<p>Zus&auml;tzlich werden die Felder Kategorie und Stichwort mit Defaultwerten gef&uuml;llt. Das Feld Kategorie erh&auml;lt beispielsweise den Eintrag Neu. Dies ist notwendig, weil nach Ablauf dieser Routine nur die neu eingelesenen Bilder der Datenbank im Formular angezeigt werden sollen.<\/p>\n<p>Die dazu notwendige &auml;nderung der Datenherkunft oder Recordsource des Formulars erledigen die beiden folgenden Codezeilen:<\/p>\n<pre>SQL$ = \"select * from [tabBildArchiv] where [txtKategorie]= ''Neu'';\"\r\nMe.RecordSource = SQL$<\/pre>\n<p><b>Datens&auml;tze aus dem Formularheraus l&ouml;schen<\/b><\/p>\n<p>Das L&ouml;schen von Datens&auml;tzen erfolgt komfortabel &uuml;ber Befehlsschaltfl&auml;chen.<\/p>\n<h3>Aktuellen Datensatz l&ouml;schen<\/h3>\n<p>Beim Klick auf die Schaltfl&auml;che Satz l&ouml;schen wird eine Ereignisprozedur mit den folgenden Zeilen aufgerufen:<\/p>\n<pre>Dim Msg$, Taste%, SQL$, Foto_Nr As Long\r\n    If Me.NewRecord Then\r\n        Beep\r\n        Exit Sub\r\n    End If<\/pre>\n<p>Nach der Variablendeklaration wird zun&auml;chst sichergestellt, dass die Prozedur verlassen wird, wenn sich der Datensatzzeiger auf einem neuen, noch gespeicherten Datensatz befindet.<\/p>\n<p>Anschlie&szlig;end erfolgt die obligatorische Sicherheitsabfrage (siehe Bild 15).<\/p>\n<pre>Msg$ = \"Diesen Satz wirklich l&ouml;schen\"\r\n    Beep\r\n    Taste = MsgBox(Msg$, vbYesNo + _        vbQuestion, \"Satz l&ouml;schen\")\r\n    If Taste &lt;&gt; vbYes Then Exit Sub<\/pre>\n<p><IMG height=\"119\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic015.png\" width=\"256\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 15:  Sicherheitsabfrage<\/span><\/b><\/p>\n<p>Falls die Abfrage bejaht wird, kann der Prim&auml;rschl&uuml;ssel des aktuellen Datensatzes im Formular in einer Variablen gespeichert werden.<\/p>\n<pre>Foto_Nr = Me.[Foto Nr]<\/pre>\n<p>Anschlie&szlig;end wird der Datensatz mit dem SQL-Kommando Delete gel&ouml;scht und die Formularanzeige aktualisiert.<\/p>\n<pre>SQL$ = \"delete * from [tabBildArchiv] \"\r\nSQL$ = SQL$ & \"where  [Foto Nr]= \"\r\nSQL$ = SQL$ & CStr(Foto_Nr) & \";\"\r\nDoCmd.RunSQL SQL$\r\nMe.Requery\r\nDoEvents<\/pre>\n<h3>Alle Datens&auml;tze l&ouml;schen<\/h3>\n<p>Die Prozedur zum L&ouml;schen aller Datens&auml;tze unterschiedet sich von der vorherigen lediglich durch das SQL-Kommando, bei dem die Beschr&auml;nkung auf den aktuellen Datensatz fehlt.<\/p>\n<pre>SQL$ = \"delete * from [tabBildArchiv];\"\r\nDoCmd.RunSQL SQL$\r\nMe.Requery\r\nDoEvents<\/pre>\n<p><b>Steuerung der Gr&ouml;&szlig;enanzeige im Formular<\/b><\/p>\n<p>Mit Hilfe der Optionsgruppe Bildanzeige wird die oben erw&auml;hnte Eigenschaft Gr&ouml;&szlig;enanpassung des OLE-Felds komfortabel gesteuert (siehe Bild 16).<\/p>\n<p><IMG height=\"55\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic016.png\" width=\"299\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 16:  Die Optionsgruppe Bildanzeige im Formular<\/span><\/b><\/p>\n<p>Die Bezeichnung der Optionen wurde bei diesem Beispiel allgemeinverst&auml;ndlicher gew&auml;hlt und entspricht den oben besprochenen Einstellungen der Eigenschaft Gr&ouml;&szlig;enanpassung.<\/p>\n<p>Beim Laden des Formulars wird in einer Ereignisprozedur als Standardwert 3 (Zoomen) eingestellt:<\/p>\n<pre>Private Sub Form_Load()\r\n  Me.rbAnzeige = 3\r\nEnd Sub<\/pre>\n<p>Anstelle des Zahlenwerts 3 k&ouml;nnte auch die VBA-Konstante acOLESizeZoom verwendet werden. <\/p>\n<p>Der Vollst&auml;ndigkeit halber enth&auml;lt Tab. 1 noch die Zahlenwerte und Konstanten f&uuml;r die weiteren Eigenschaftseinstellungen.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Option<\/b><\/p>\n<\/td>\n<td>\n<p><b>Zahlenwert<\/b><\/p>\n<\/td>\n<td>\n<p><b>Konstante<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Abschneiden<\/p>\n<\/td>\n<td>\n<p>0<\/p>\n<\/td>\n<td>\n<p>acOLESizeClip<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Dehnen<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>acOLESizeStretch<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Einpassen<\/p>\n<\/td>\n<td>\n<p>3<\/p>\n<\/td>\n<td>\n<p>acOLESizeZoom<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Einstellungen der Eigenschaft Gr&ouml;&szlig;enanpassung<\/b><\/p>\n<p>Damit eine Ver&auml;nderung der Optionsauswahl in dieser Optionsgruppe Wirkung zeigt, muss beim Nach Aktualisierung-Ereignis der Optionsgruppe der neue Wert gesetzt werden. Dies geschieht durch die folgende Ereignisprozedur:<\/p>\n<pre>Private Sub rbAnzeige_AfterUpdate()\r\n  Me.picFoto.SizeMode = rbAnzeige.Value\r\nEnd Sub<\/pre>\n<p><b>Kategorienauswahl und Steuerung der Anzeige<\/b><\/p>\n<p>Das Anlegen von Kategorien erfolgt im Listenfeld Kategorie. Dort braucht lediglich ein Begriff eingegeben zu werden, der dann anschlie&szlig;end aus dem Listenfeld heraus anderen Bilder zugeordnet werden kann.<\/p>\n<p><IMG height=\"86\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic017.png\" width=\"219\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 17:  Auswahl der Kategorie im Listenfeld<\/span><\/b><\/p>\n<p>Nach der Eingabe eines neuen Begriffs muss die Anzeige im Listenfeld aktualisiert werden. Dies muss an zwei Stellen erfolgen: Erstens durch eine Ereignisprozedur, die durch das Nach Aktu-alisierung-Ereignis des Listenfeldes ausgef&uuml;hrt wird.<\/p>\n<pre>Private Sub ctlKatAusw_AfterUpdate()\r\n    Dim f$, SQL$\r\n    On Error Resume Next\r\n    f$ = Me.ctlKatAusw\r\n    If Err &lt;&gt; 0 Then Exit Sub\r\n    SQL$ = \"select * from [tabBildArchiv] where [txtKategorie]= ''\" _        & f$ & \"'' order by txtStichwort;\"\r\n    Me.RecordSource = SQL$\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p><IMG height=\"372\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic018.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 18:  Nur eine Kategorie von Bildern im Formular<\/span><\/b><\/p>\n<p>In der letzten Zeile der Prozedur wird die Datenherkunft des Listenfelds neu mit dem Wert gesetzt, der &uuml;ber eine Variable aus dem Listenfeld &uuml;bernommen worden ist.<\/p>\n<p>Zweitens muss die eben neu erstellte Datenherkunft des Listenfelds erneut abgefragt werden, damit der neue Wert dort auch angezeigt werden kann.<\/p>\n<p>Dies erfolgt im Nach Aktualisierung-Ereignis des Formulars, das nach &auml;nderung eines Datensatzes auftritt.<\/p>\n<pre>Private Sub Form_AfterUpdate()\r\n    Me.ctlKategorie.Requery\r\n    Me.ctlStichwort.Requery\r\nEnd Sub<\/pre>\n<p>Das Ganze ist eigentlich relativ trivial.<\/p>\n<p>Interessanter ist da schon die M&ouml;glichkeit, die Anzeige der Bilder im Formular auf eine einzige Kategorie zu beschr&auml;nken. Diese kann nat&uuml;rlich bequem ausgew&auml;hlt werden.<\/p>\n<p>Standardm&auml;&szlig;ig werden immer alle Kategorien von Bildern im Formular angezeigt. Die Auswahl erfolgt &uuml;ber das Listenfeld Anzeigen. Die Anzeige aller Kategorien wird durch ein Sternchen (*) im Listenfeld gekennzeichnet.<\/p>\n<pre>Private Sub btnAll_Click()\r\n    Dim SQL$\r\n    Me.ctlKatAusw = \"*\"\r\n    SQL$ = \"select * from [tabBildArchiv] order by \"\r\n    SQL$ = SQL$ & \"txtKategorie,txtStichwort;\"\r\n    Me.RecordSource = SQL$\r\n    DoEvents\r\nEnd Sub<\/pre>\n<p>Verantwortlich daf&uuml;r ist eine Ereignisprozedur, die durch das Beim Laden-Ereignis des Formulars ausgef&uuml;hrt wird.<\/p>\n<pre>Private Sub Form_Load()\r\n    Me.ctlKatAusw = \"*\"\r\nEnd Sub<\/pre>\n<p>Nach der Auswahl einer Kategorie im Listenfeld Anzeigen werden im Formular nur noch die zu dieser Kategorie geh&ouml;rigen Bilder angezeigt.<\/p>\n<p>Um wieder alle Bilder anzuzeigen, muss das Formular nicht etwa geschlossen und wieder ge&ouml;ffnet werden &#8211; es reicht ein Klick auf die rechts neben dem Listenfeld liegende Schaltfl&auml;che. Dann wird die Ereignisprozedur aus Quellcode 4 ausgef&uuml;hrt.<\/p>\n<p><b>Die Bewertung der vorgestellten Methode<\/b><\/p>\n<p>Das alleinige Speichern des Bildpfads anstelle eines OLE-Objekts in der Datenbank hat ohne Zweifel den Vorteil, dass sich die mdb-Datei von Access nicht so gewaltig aufbl&auml;ht.<\/p>\n<p>Demgegen&uuml;ber steht der Nachteil, dass jedes Bild beim Datensatzwechsel st&auml;ndig neu eingelesen werden muss. Dies ist auch an der Verlaufsanzeige zu erkennen, die je nach Gr&ouml;&szlig;e der Grafikdatei beim &ouml;ffnen des Formulars und beim Datensatzwechsel k&uuml;rzer oder l&auml;nger sichtbar wird (siehe Bild 19).<\/p>\n<p><IMG height=\"100\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic019.png\" width=\"335\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 19:  Die Verlaufsanzeige<\/span><\/b><\/p>\n<p>In einer Netzwerkumgebung, in der die Bilddateien auf einem Netzwerkserver liegen, spielt dabei nat&uuml;rlich auch die Leistungsf&auml;higkeit des Netzes eine Rolle.<\/p>\n<p>Ob das Vorhandensein einer gro&szlig;en Anzahl von Grafikdateien in Bezug auf Datensicherung oder unbeabsichtigtes L&ouml;schen nachteilig ist oder nicht, h&auml;ngt ganz von den individuellen Umst&auml;nden ab.<\/p>\n<p>Das Speichern von Bildern als Bin&auml;rstrom in einem OLE-Feld ist eine weitere interessante Al-ternative zum Thema Bildimport (s. Abschn. 4.6).<\/p>\n<p>Zur Realisierung dieser Methode ist allerdings eine gewisser Programmieraufwand notwendig, der jedoch in diesem Abschnitt vorgestellt und erl&auml;utert wird. Die Beispiell&ouml;sung wurde f&uuml;r Access 2000 entwickelt und befindet sich in der Datenbank BinaryImport.mdb.<\/p>\n<p><b>Notwendige Datenbankobjekte<\/b><\/p>\n<p>Die beiden wichtigen Datenbankobjekte f&uuml;r die Beispiell&ouml;sung sind die Tabelle tabProdukte und das Formular frmProdukte aus der Beispieldatenbank BinaryImport.mdb. Die Abfrage qryfrmProdukte, auf der das Formular basiert, sortiert lediglich die Tabelle tabProdukte und braucht deshalb nicht weiter beachtet zu werden.<\/p>\n<p><IMG height=\"321\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic020.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 20:  Entwurfsansicht der Tabelle<\/span><\/b><\/p>\n<p><IMG height=\"424\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic021.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 21:  Entwurfsansicht des Formulars<\/span><\/b><\/p>\n<h3>Die Tabelle<\/h3>\n<p>Die Tabelle muss in jedem Fall ein Feld mit dem Felddatentyp OLE-Objekt enthalten (siehe Bild 20). In diesem Feld werden die eingelesenen Bilddaten als so genannte Binary Large Objects oder abgek&uuml;rzt BLOBs gespeichert.<\/p>\n<h3>Das Formular<\/h3>\n<p>Im Formular muss ein Bild-Steuerelement enthalten sein, damit die importierten Bilder auch angezeigt werden k&ouml;nnen. Die eigentliche Funktionalit&auml;t der Beispielanwendung verbirgt sich hinter den beiden Schaltfl&auml;chen Neues Bild einlesen und Bild entfernen, durch die Ereignisprozeduren bzw. Funktionen aufgerufen werden.<\/p>\n<p><b>Ablauf derVerarbeitung<\/b><\/p>\n<p>Die grunds&auml;tzliche Verarbeitung der Beispielanwendung l&auml;uft in zwei Schritten ab:<\/p>\n<li>Grafikdatei von der Festplatte einlesen und im OLE-Feld der Datenbank speichern.<\/li>\n<li>Grafikdatei aus der Datenbank auslesen und auf der Festplatte unter dem Dateinamen c:\\tmp_jpg speichern. Anschlie&szlig;end wird die Grafik im Bild-Steuerelement angezeigt.<\/li>\n<p>Der Ablauf dieser beiden Schritte wird nun detailliert vorgestellt und erl&auml;utert.<\/p>\n<p>Die ausgef&uuml;hrten Sub-Prozeduren bzw. Funktionen sind hier teilweise aus Gr&uuml;nden der &uuml;bersichtlichkeit nur auszugsweise abgedruckt.<\/p>\n<p>Den vollst&auml;ndigen Code finden Sie im Modul Form_frmProdukte der Beispieldatenbank BinaryImport.mdb.<\/p>\n<p><b>Grafikdatei einlesen und in der Datenbank speichern<\/b><\/p>\n<p>Beim Klick auf die Schaltfl&auml;che Neues Bild einlesen wird eine Ereignisprozedur aufgerufen. Nach dem Deklarationsteil muss auf einen existierenden Datensatz verwiesen werden (s. Quellcode 5).<\/p>\n<pre>Dim Dateiname As String\r\nDim rstData As ADODB.Recordset\r\nDim SQL As String\r\n    If Me.NewRecord Then\r\n        MsgBox \"Bitte wechseln Sie zuerst zu dem \" _            & \"gew&uuml;nschten Datensatz!\", vbCritical\r\n        Exit Sub\r\n    End If\r\nDateiname = DateiOeffnen(CurDir$, \"Bild laden:\")\r\n    If Dateiname = \"\" Then Exit Sub\r\n    If Dir(Dateiname) = \"\" Then\r\n        MsgBox \"Die Datei existiert nicht!\"\r\n        Exit Sub\r\n    End If\r\nQuellcode 6\r\nSQL = \"SELECT * FROM tabProdukte WHERE ID=\" & CStr(Me.ID)\r\n    Set rstData = New ADODB.Recordset\r\n    With rstData\r\n        .LockType = adLockOptimistic\r\n        .CursorLocation = adUseServer\r\n        .CursorType = adOpenDynamic\r\n        .Source = SQL\r\n        .ActiveConnection = CurrentProject.Connection\r\n        .Open\r\n            LoadFileToField Dateiname, rstData!oleBild\r\n        .Update\r\n        .Close\r\n    End With\r\nFileID = FreeFile\r\n    FileLength = FileLen(Filename)\r\n    Open Filename For Binary Access Read Lock _        Read Write As FileID\r\n    ReDim Buffer(FileLength)\r\n    Feld.Value = Null\r\n    Get FileID, , Buffer\r\n    Close FileID\r\n    Feld.AppendChunk Buffer\r\n    LoadFileToField = True<\/pre>\n<p>Dann wird ein Datei &ouml;ffnen-Dialog aufgerufen, in welchem eine Grafikdatei auf die &uuml;bliche Art und Weise ausgew&auml;hlt werden muss (s. Quellcode 6).<\/p>\n<p>Anschlie&szlig;end wird f&uuml;r den aktuellen Datensatz ein Recordset ge&ouml;ffnet und die Funktion LoadFileToField mit dem &uuml;bergebenen Dateinamen aus dem Auswahldialog aufgerufen (s. Quellcode 7).<\/p>\n<p>Die Funktion LoadFileToField liest die angegebene Datei bin&auml;r aus (s. Quellcode 8).<\/p>\n<p>Diese Daten werden anschlie&szlig;end in dem OLE-Feld der Datenbank gespeichert. Den Abschluss bildet der Aufruf der Prozedur ShowPicture.<\/p>\n<p><b>Grafik auslesen, speichern undanzeigen<\/b><\/p>\n<p>In der Prozedur ShowPicture wird zun&auml;chst eine Konstante f&uuml;r die tempor&auml;re Bilddatei erstellt und dann wieder ein Recordset f&uuml;r den aktuellen Datensatz ge&ouml;ffnet.<\/p>\n<pre>Const TempFilename = _    \"C:\\db_temp.jpg\"\r\nDim rstData As _    ADODB.Recordset\r\nDim SQL As String<\/pre>\n<p>Eine eventuell vorhandene tempor&auml;re Bilddatei wird gel&ouml;scht und die Bilddaten aus dem Datenbankfeld werden durch den Aufruf der Funktion SaveFileToField bin&auml;r auf der Festplatte unter dem tempor&auml;ren Dateinamen gespeichert:<\/p>\n<p><IMG height=\"87\" src=\"..\/fileadmin\/_temp_\/{4FF101B7-94F8-4712-B0EA-BA7E632BDE9A}\/pic022.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 22:  Die Tabelle mit den gespeicherten Bin&auml;r-Daten<\/span><\/b><\/p>\n<pre>Kill TempFilename\r\n    On Error GoTo 0\r\n    If SaveFieldToFile(TempFilename, _        rstData!oleBild) = True Then\r\n        Me.picFoto.Picture = TempFilename\r\n    End If<\/pre>\n<p>Falls dieser Vorgang erfolgreich war, das hei&szlig;t, der R&uuml;ckgabewert der Funktion True ist, wird die Eigenschaft Bild oder Picture des Bild-Steuerelements im Formular auf die tempor&auml;re Grafikdatei eingestellt. Damit kann in diesem Steuerelement das Bild im Formular angezeigt werden.<\/p>\n<p>&uuml;ber den erfolgreichen Abschluss der ganzen Aktion wird der Anwender durch eine Meldung informiert.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Prozedur ShowPicture wird auch beim &ouml;ffnen des Formulars und beim Datensatzwechsel ausgef&uuml;hrt. <\/p>\n<p><b>Gespeichertes Bild aus derDatenbank entfernen<\/b><\/p>\n<p>Gespeicherte Bilder in der Datenbank k&ouml;nnen problemlos ausgetauscht werden. Dazu ist ein Klick auf die Schaltfl&auml;che Bild entfernen erforderlich. Damit wird &#8211; Sie ahnen es sicher schon &#8211; eine Ereignisprozedur aufgerufen:<\/p>\n<pre>With rstData\r\n    .LockType = adLockOptimistic\r\n    .CursorLocation = adUseServer\r\n    .CursorType = adOpenDynamic\r\n    .Source = SQL\r\n    .ActiveConnection = _        CurrentProject.Connection\r\n    .Open\r\n    rstData!oleBild = Null\r\n    .Update\r\n    .Close\r\nEnd With<\/pre>\n<p>In der Ereignisprozedur wird innerhalb eines Recordsets der Inhalt des OLE-Feldes gel&ouml;scht, und nicht etwa der aktuelle Datensatz.<\/p>\n<p>Den Abschluss bildet wieder der Aufruf der Prozedur ShowPicture mit einer leeren Zeichenkette als Dateinamen. Dadurch wird in dem Steuerelement auch nichts angezeigt und das Formular steht zum Laden eines neuen Bildes bereit.<\/p>\n<p><b>Die Bewertung dieser Methode<\/b><\/p>\n<p>Bei dieser Speichermethode wird nur der Speicherplatz der reinen Bilddatei in der Datenbank ben&ouml;tigt. Es fehlt der vollst&auml;ndige OLE-Overhead, der letztendlich f&uuml;r das Aufbl&auml;hen der mdb-Datei verantwortlich ist.<\/p>\n<p>Au&szlig;erdem kann beispielsweise bei Anwendung dieser Methode eine Datenbank mit tausenden von Bildern weitergegeben werden, ohne dass bei dieser Aktion auch tausende von Bilddateien mit weitergegeben werden m&uuml;ssen.<\/p>\n<p>In Tab. 2 finden Sie eine Auflistung der vorgestellten Methoden und deren Vor- und Nachteile.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Methode<\/b><\/p>\n<\/td>\n<td>\n<p><b>Vorteile<\/b><\/p>\n<\/td>\n<td>\n<p><b>Nachteile<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Verkn&uuml;pfung via Pfadangabe<\/p>\n<\/td>\n<td>\n<p>Datenbankgr&ouml;&szlig;e bleibt &uuml;berschaubar<\/p>\n<\/td>\n<td>\n<p>Bilddateien m&uuml;ssen separat gespeichert und ggf. verteilt werden<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Speichern als OLE-Datei<\/p>\n<\/td>\n<td>\n<p>alle Daten in Datenbank<\/p>\n<\/td>\n<td>\n<p>gro&szlig;er Speicherbedarf durch OLE-Overhead<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Speichern als Bin&auml;rstrom<\/p>\n<\/td>\n<td>\n<p>alle Daten in Datenbank,moderater Speicherplatzbedarf<\/p>\n<\/td>\n<td>\n<p>Umsetzung erfordert verh&auml;ltnism&auml;&szlig;ig gro&szlig;en Aufwand<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Einstellungen der Eigenschaft Gr&ouml;&szlig;enanpassung<\/b><\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BilderImport00.mdb<\/p>\n<p>BilderImport97.mdb<\/p>\n<p>BinaryImport00.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/B3F261E2-A28A-4683-8C02-1A444B6ABB58\/aiu_38.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Microsoft Access k&ouml;nnen nicht nur die &uuml;blichen Daten wie Nachname, Vorname oder Artikelnummern, sondern beispielsweise auch Bilder gespeichert und mit der entsprechenden Funktionalit&auml;t verwaltet werden. Typische Anwendungsbeispiele daf&uuml;r sind beispielsweise Abildungen zu Artikeln und Produkten oder auch nur ein reines Bildarchiv.<\/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":[662001,66062001,44000027],"tags":[],"class_list":["post-55000038","post","type-post","status-publish","format-standard","hentry","category-662001","category-66062001","category-Loesungen"],"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>Bildverwaltung in Access - 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\/Bildverwaltung_in_Access\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bildverwaltung in Access\" \/>\n<meta property=\"og:description\" content=\"Mit Microsoft Access k&ouml;nnen nicht nur die &uuml;blichen Daten wie Nachname, Vorname oder Artikelnummern, sondern beispielsweise auch Bilder gespeichert und mit der entsprechenden Funktionalit&auml;t verwaltet werden. Typische Anwendungsbeispiele daf&uuml;r sind beispielsweise Abildungen zu Artikeln und Produkten oder auch nur ein reines Bildarchiv.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-17T15:07:09+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa\" \/>\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=\"24\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Bildverwaltung in Access\",\"datePublished\":\"2020-06-17T15:07:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/\"},\"wordCount\":4190,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b1383fde25074644ac04eee2ad3a42fa\",\"articleSection\":[\"2001\",\"6\\\/2001\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/\",\"name\":\"Bildverwaltung in Access - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b1383fde25074644ac04eee2ad3a42fa\",\"datePublished\":\"2020-06-17T15:07:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b1383fde25074644ac04eee2ad3a42fa\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b1383fde25074644ac04eee2ad3a42fa\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bildverwaltung_in_Access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bildverwaltung in Access\"}]},{\"@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":"Bildverwaltung in Access - 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\/Bildverwaltung_in_Access\/","og_locale":"de_DE","og_type":"article","og_title":"Bildverwaltung in Access","og_description":"Mit Microsoft Access k&ouml;nnen nicht nur die &uuml;blichen Daten wie Nachname, Vorname oder Artikelnummern, sondern beispielsweise auch Bilder gespeichert und mit der entsprechenden Funktionalit&auml;t verwaltet werden. Typische Anwendungsbeispiele daf&uuml;r sind beispielsweise Abildungen zu Artikeln und Produkten oder auch nur ein reines Bildarchiv.","og_url":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-06-17T15:07:09+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"24\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Bildverwaltung in Access","datePublished":"2020-06-17T15:07:09+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/"},"wordCount":4190,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa","articleSection":["2001","6\/2001","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/","url":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/","name":"Bildverwaltung in Access - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa","datePublished":"2020-06-17T15:07:09+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/b1383fde25074644ac04eee2ad3a42fa"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Bildverwaltung_in_Access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Bildverwaltung in Access"}]},{"@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\/55000038","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=55000038"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000038\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}