{"id":55000630,"date":"2008-10-01T00:00:00","date_gmt":"2021-02-02T18:19:03","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=630"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Bilder_on_the_fly","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/","title":{"rendered":"Bilder on the fly"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Es gibt immer mal wieder eine Gelegenheit, Bilder in Datenbanken zu speichern, anzuzeigen oder von dort auf die Festplatte zu speichern. Die meisten Wege f&uuml;hren dabei &uuml;ber das Zwischenspeichern im Dateisystem, manch eine Anwendung bel&auml;sst die Bilddateien auch direkt im entsprechenden Ordner. Mit einem Image-Steuerelement und einer Tabelle mit einem OLE-Feld beh&auml;lt man alles an einem Ort &#8211; n&auml;mlich in der Datenbank.<\/b><\/p>\n<p>Als Beispiel f&uuml;r diesen Artikel dient die B&uuml;cherverwaltung aus dem gleichnamigen Beitrag in dieser Ausgabe von <b>Access im Unternehmen <\/b>(Shortlink 633). Diese speichert Bilder direkt in der Tabelle <b>tblBuecher zusammen <\/b>mit den anderen Buchinformationen und zeigt die Bilder im Formular <b>frmBuch <\/b>zum jeweils passenden Exemplar an (siehe Bild 1). Dabei bezieht sie die Bilddateien aus verschiedenen Quellen: Wenn Sie die B&uuml;cher manuell eintragen, k&ouml;nnen Sie selbst eingescannte oder anderweitig verf&uuml;gbare Buchcover in der Datenbank speichern, indem Sie einfach auf die <b>Bild hinzuf&uuml;gen<\/b>-Schaltfl&auml;che klicken und das gew&uuml;nschte Bild mit dem anschlie&szlig;end erscheinenden <b>Datei &ouml;ffnen<\/b>-Dialog ausw&auml;hlen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/BilderOnTheFly-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Das Beispielformular mit einem Buchcover im Image-Steuerelement<\/span><\/b><\/p>\n<p>Die Anwendung bietet auch die M&ouml;glichkeit, Buchinformationen per Webservice direkt von Amazon einzulesen. Diese Informationen enthalten auch Links zu Coverbildern in verschiedenen Aufl&ouml;sungen und die Anwendung liefert die M&ouml;glichkeit, diese Bilder von Amazon herunterzuladen und in der Datenbank zu speichern.<\/p>\n<p><b>Werkzeug<\/b><\/p>\n<p>Als Werkzeug f&uuml;r die in diesem Beitrag beschriebene L&ouml;sung dienen einige VBA-Routinen und API-Funktionen, die aus der Beispieldatenbank zum Beitrag <b>Bilder im Griff mit VBA und GDI+ <\/b>(Shortlink 337) stammen. Die hier verwendete Zusammenstellung wurde teilweise von Sascha Trowitzsch weiterentwickelt und vom Autor des vorliegenden Beitrags f&uuml;r den hier beschriebenen Anwendungsfall zusammengestellt.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Vom Web ins Image-Steuerelement<\/p>\n<p>F&uuml;r das Herunterladen einer Bilddatei aus dem Internet und ihre Anzeige in einem Formular brauchen Sie zun&auml;chst einmal die Funktion <b>GetPictureFromURL <\/b>aus dem Modul <b>mdlOLE <\/b>der Beispieldatenbank.<\/p>\n<p>Diese Routine erwartet als Parameter die URL der Bilddatei, zum Beispiel <b>http:\/\/www.access-im-unternehmen.de\/fileadmin\/images\/aiu_2008_01.png<\/b>.<\/p>\n<p>Um die Routine auszuprobieren, brauchen Sie nur ein <b>Microsoft Forms 2.0 Image<\/b>-Steuerelement in ein Formular einzuf&uuml;gen, dieses beispielsweise <b>objImage <\/b>zu nennen und beim Laden des Formulars die folgende Routine auszuf&uuml;hren:<\/p>\n<pre>Private Sub Form_Load()\r\n    Me!objImage.Picture = _\r\n    GetPictureFromURL( _\r\n    \"http:\/\/www.access-im-unternehmen.de\/&euro; _\r\n    &euro;fileadmin\/images\/aiu_2008_01.png&euro;)\r\n    End Sub<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Vom Web ins OLE-Feld<\/p>\n<p>Nun soll das Bild aber nicht direkt angezeigt, sondern m&ouml;glichst erstmal in der Datenbank gespeichert werden &#8211; und zwar in einem OLE-Feld in einer Tabelle Ihrer Wahl. In der Beispieldatenbank <b>Buecherverwaltung.mdb <\/b>hei&szlig;t das Feld <b>Bild <\/b>und befindet sich in der Tabelle <b>tblBuecher<\/b>.<\/p>\n<p>Die oben vorgestellte Funktion <b>GetPictureFromURL <\/b>dient als Ausgangspunkt f&uuml;r die folgende Vorgehensweise: Sie liefert n&auml;mlich immerhin schon einmal ein <b>StdPicture<\/b>-Objekt, das auf das Bild verweist.<\/p>\n<p>Was aber muss passieren, damit dieses Bild-Objekt nun im OLE-Feld einer Tabelle landet und obendrein leicht wiederherstellbar ist Dank der Funktionen in den beiden Modulen <b>mdlGDIPlus <\/b>und <b>mdlOLE <\/b>l&auml;sst sich das ganz leicht herleiten. Genau genommen ist es fast wie bei Rechenaufgaben aus technischen Bereichen: Wenn man dort gar nicht mehr weiter wei&szlig;, schaut man sich halt die Einheiten an, in denen die Funktions- und Ergebniswerte angegeben werden m&uuml;ssen. Wenn man Einheiten durch Datentypen ersetzt, ist das eine interessante Analogie. Und eine zus&auml;tzliche Hilfe bieten nat&uuml;rlich die Funktionsnamen.<\/p>\n<p>Wenn Sie ein <b>StdPicture<\/b>-Objekt in ein OLE-Feld einf&uuml;gen m&ouml;chten, durchsuchen Sie also erstmal die beiden Module nach Routinen, die irgendwas in ein OLE-Feld einsetzen.<\/p>\n<p>Das erledigen sowohl <b>SaveFileToOLEField <\/b>als auch <b>ArrayToOLEField<\/b>. Die erste erwartet die Angabe einer Datei und speichert diese im OLE-Feld einer Tabelle, die zweite ein Byte-Array.<\/p>\n<p>Wir m&uuml;ssen aus unserem <b>StdPicture<\/b>-Objekt also entweder eine Datei erstellen oder dieses in ein Byte-Array umwandeln. Ein Blick in die Liste der zur Verf&uuml;gung stehenden Routinen zeigt, dass wir mit der Umwandlung von <b>StdPicture <\/b>zu Byte-Array richtig liegen &#8211; die Funktion <b>ArrayFromPicture <\/b>aus dem Modul <b>mdlGDIPlus <\/b>macht so etwas.<\/p>\n<p><!--30percent--><\/p>\n<p>Wir arbeiten uns also wie folgt durch Funktionen: <b>GetPictureFromURL <\/b>liefert uns die auf einem Webserver liegende Bilddatei frei Haus als <b>StdPicture<\/b>-Objekt. Dieses wandelt die Routine <b>ArrayFromPicture <\/b>in ein Byte-Array um und dieses speichert schlie&szlig;lich die Funktion <b>ArrayToOLEField <\/b>im OLE-Feld der Zieltabelle.<\/p>\n<p>Dies kann man wiederum in eine neue Funktion kapseln, welche die URL sowie die Daten des Zielobjekts, also des OLE-Felds, als Parameter erwartet. Diese sieht wie in Listing 1 aus und erwartet die folgenden Parameter:<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Speichern einer Bilddatei aus dem Web in einem OLE-Feld<\/p>\n<pre>Public Function WebToOLEField(strURL As String, strTable As String, strOLEField As String, boolEdit As Boolean, strIDField As String, lngID As Long)\r\n    Dim objPicture As StdPicture\r\n    Dim arr() As Byte\r\n    Dim strFiletype As String\r\n    Dim lngPicType As Long\r\n    Set objPicture = GetPictureFromURL(strURL)\r\n    strFiletype = Mid(InStrRev(strURL, \".&euro;) + 1)\r\n    Select Case strFiletype\r\n    Case \"png&euro;\r\n    lngPicType = PicFileType.pictypePNG\r\n    Case \"bmp&euro;\r\n    lngPicType = PicFileType.pictypeBMP\r\n    Case \"jpg&euro;\r\n    lngPicType = PicFileType.pictypeJPG\r\n    Case \"gif&euro;\r\n    lngPicType = PicFileType.pictypeGIF\r\n    End Select\r\n    arr = ArrayFromPicture(objPicture, lngPicType)\r\n    ArrayToOLEField arr, strTable, strOLEField, boolEdit, strIDField, lngID\r\nEnd Function<\/pre>\n<ul>\n<li class=\"aufz-hlung\"><b>strURL<\/b>: Link zur Bilddatei<\/li>\n<li class=\"aufz-hlung\"><b>strTable<\/b>: Name der Zieltabelle<\/li>\n<li class=\"aufz-hlung\"><b>strOLEField<\/b>: Name des Zielfelds<\/li>\n<li class=\"aufz-hlung\"><b>boolEdit<\/b>: Gibt an, ob das OLE-Feld eines neuen (<b>False<\/b>) oder eines bestehenden Datensatzes (<b>True<\/b>) gef&uuml;llt werden soll.<\/li>\n<li class=\"aufz-hlung\"><b>strIDField<\/b>: Falls <b>boolEdit <\/b>den Wert <b>True <\/b>hat, gibt dieses Feld den Namen des Prim&auml;rschl&uuml;sselfeldes der Tabelle an.<\/li>\n<li class=\"aufz-hlung\"><b>lngID<\/b>: Falls <b>boolEdit <\/b>den Wert <b>True <\/b>hat, gibt man f&uuml;r diesen Parameter die ID des in <b>strIDField <\/b>angegebenen Prim&auml;rschl&uuml;sselfelds an.<\/li>\n<\/ul>\n<p>Im Falle der B&uuml;cherverwaltung m&uuml;ssten Sie also den folgenden Aufruf verwenden (in einer Zeile):<\/p>\n<pre>WebToOLEField \"http:\/\/www.access-im-unternehmen.de\/fileadmin\/images\/aiu_2008_01.png\", \"tblBuecher\", \"Bild\", \"True\", \"ID\", 1<\/pre>\n<p><b>Von der Festplatte ins OLE-Feld<\/b><\/p>\n<p>Das Formular <b>frmBuch <\/b>der Beispieldatenbank bietet unterhalb des <b>Image<\/b>-Steuerelements zur Anzeige des Bilds zwei Schaltfl&auml;chen an, von denen die eine das Hinzuf&uuml;gen von Bildern aus dem Dateisystem erlaubt.<\/p>\n<p>Durch die <b>Beim Klicken<\/b>-Ereignisprozedur der Schaltfl&auml;che wird die Routine aus Listing 2 aufgel&ouml;st.<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Speichern einer Bilddatei aus dem Dateisystem in einem OLE-Feld<\/p>\n<pre>Private Sub cmdAddPicture_Click()\r\n    Dim strBild As String\r\n    strBild = OpenFileName(CurrentProject.Path, \"Bilddatei ausw&auml;hlen&euro;, _\r\n    \"Bilddateien (*.bmp, *.png, *.gif, *.png)&euro;)\r\n    If Len(strBild) &gt; 0 Then\r\n        DoCmd.RunCommand acCmdSaveRecord\r\n        SaveFileToOLEField strBild, \"tblBuecher&euro;, \"Bild&euro;, \"True&euro;, \"ID&euro;, Me.ID\r\n        RequeryImage\r\n    End If\r\n    End Sub<\/pre>\n<p>Die Routine verwendet zun&auml;chst die <b>OpenFileName<\/b>-Funktion aus dem Modul <b>mdlGlobal <\/b>der Beispieldatenbank, um einen <b>Datei &ouml;ffnen<\/b>-Dialog anzuzeigen (siehe Bild 2).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/BilderOnTheFly-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Datei &ouml;ffnen-Dialog zum Ausw&auml;hlen der zu importierenden Bilddatei<\/span><\/b><\/p>\n<p>Hat der Benutzer dort eine Datei ausgew&auml;hlt, speichert die Routine zun&auml;chst den aktuellen Datensatz. Dies ist n&ouml;tig, um Konflikte beim Hinzuf&uuml;gen des Bildes zum OLE-Feld zu verhindern: M&ouml;glicherweise hat der Benutzer den aktuellen Buchdatensatz ja gerade bearbeitet und noch nicht gespeichert. Wenn die VBA-Routine aus Listing 2 dann parallel &auml;nderungen vornimmt, kann dies zu einem Konflikt f&uuml;hren. <\/p>\n<p>Nach dem Speichern kann die Routine sicher sein, den aktuellen Stand des Buchdatensatzes zu bearbeiten, und durch einen Aufruf der Prozedur <b>SaveVileToOLEField<\/b> das Bild mit dem angegebenen Dateinamen speichern.<\/p>\n<p>Die Routine erwartet ganz &auml;hnliche Parameter wie die soeben beschriebene Hilfsfunktion zum Einlesen von Bilddateien aus dem Internet und wird bis auf den kleinen Unterschied, dass hier eine Pfadangabe des lokalen Dateisystems und keine URL als Quelle vorliegt, genau so verwendet.<\/p>\n<p>Die kleine Hilfsfunktion <b>RequeryImage<\/b> (siehe weiter unten) sorgt schlie&szlig;lich noch daf&uuml;r, dass die Anzeige im Image-Steuerelement aktualisiert wird, und damit w&auml;ren wir auch schon beim n&auml;chsten Schritt.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Vom OLE-Feld ins Formular<\/p>\n<p>Der Titel dieses Beitrags hei&szlig;t nicht umsonst <b>Bilder on the fly<\/b>: Hier lernen Sie n&auml;mlich Methoden kennen, in Access mit Bilddateien aus OLE-Feldern zu hantieren, ohne diese vor dem Anzeigen in Formularen oder Berichten umst&auml;ndlich im Dateisystem zwischenspeichern zu m&uuml;ssen.<\/p>\n<p>Beim Einlesen von Bildern aus dem Internet funktioniert dies reibungslos, beim Holen von Bildern aus dem Dateisystem ist dieses nat&uuml;rlich zwingend beteiligt.<\/p>\n<p>Nun sollen die im OLE-Feld gespeicherten Bilder aber noch in ein Steuerelement eines Formulars gelangen, ohne einen Fu&szlig; auf den Boden des Dateisystems zu setzen.<\/p>\n<p>Als Steuerelement kommt dabei das <b>Image<\/b>-Steuerelement der Bibliothek <b>Microsoft Forms 2.0 <\/b>zum Zuge. Es hat gegen&uuml;ber dem in Access eingebauten Bildsteuerelement den Vorteil, dass man seiner <b>Picture<\/b>-Eigenschaft direkt <b>StdPicture<\/b>-Objekte zuweisen und diese so anzeigen kann.<\/p>\n<p>Es ist genau wie das eingebaute Bildsteuerelement in jeder Installation von Access enthalten, auch bei der Runtime-Version. Sie brauchen sich also keine Sorgen zu machen, dass dieses Steuerelement einmal fehlt.<\/p>\n<p>Sicherzustellen ist eigentlich nur, dass die individuellen Format-Eigenschaften dieses Steuerelements auf der Registerseite <b>Andere <\/b>des Eigenschaftsfensters enthalten sind (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_04\/BilderOnTheFly-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Das Image-Steuerelement verbirgt seine Format-Eigenschaften auf der Registerseite Andere des Eigenschaftsfensters.<\/span><\/b><\/p>\n<p>Dort sollten Sie beispielsweise die Eigenschaft <b>PictureSizeMode <\/b>auf den Wert <b>Zoom <\/b>einstellen, damit Bilder in den vorgegebenen Rahmen eingepasst werden.<\/p>\n<p>Fehlt noch der Code, der das Bild aus dem OLE-Feld der Tabelle <b>tblBuecher <\/b>herausholt und dieses im <b>Image<\/b>-Steuerelement anzeigt. Die bereits weiter oben erw&auml;hnte Routine <b>RequeryImage <\/b>aus Listing 3 pr&uuml;ft zun&auml;chst, ob das Feld <b>Bild <\/b>&uuml;berhaupt Daten enth&auml;lt, und weist der Objektvariablen <b>objPicture <\/b>mit der Funktion <b>PicFromField <\/b>das im OLE-Feld gespeicherte Bild zu. Dessen Inhalt landet schlie&szlig;lich in der Eigenschaft <b>Picture <\/b>des <b>Image<\/b>-Steuerelements.<\/p>\n<p class=\"kastentabelleheader\">Listing 3: Aktualisieren der Anzeige im Image-Steuerelement des Formulars<\/p>\n<pre>Private Sub RequeryImage()\r\n    Dim objPicture As StdPicture\r\n    If Not IsNull(Me!Bild) Then\r\n        Set objPicture = PicFromField(CurrentDb.OpenRecordset(\"SELECT Bild FROM tblBuecher \" _\r\n        \"WHERE ID = \" &amp; Me.ID).Fields(0))\r\n        DoCmd.RunCommand acCmdSaveRecord\r\n        Set Me.objPicture.Picture = objPicture\r\n    Else\r\n        Set Me.objPicture.Picture = Nothing\r\n    End If\r\n    End Sub<\/pre>\n<p>Die Funktion <b>PicFromField <\/b>verwendet dabei zun&auml;chst die <b>GetChunk<\/b>-Methode des OLE-Feldes, um dessen Inhalt in einem Byte-Array zwischenzulagern, und wandelt dieses dann mit der Funktion <b>ArrayToPicture <\/b>in ein <b>StdPicture<\/b>-Objekt um.<\/p>\n<p>Nun m&uuml;ssen Sie nur noch daf&uuml;r sorgen, dass im Formular beim Datensatzwechsel jeweils das im aktuellen Datensatz der Tabelle <b>tblBuecher <\/b>enthaltene Bild angezeigt wird. Dazu enth&auml;lt die Ereignisprozedur <b>Beim Anzeigen <\/b>ebenfalls einen Aufruf der Routine <b>RequeryImage<\/b>:<\/p>\n<pre>Private Sub Form_Current()\r\n    RequeryImage\r\n    End Sub<\/pre>\n<p><b>Bilder l&ouml;schen<\/b><\/p>\n<p>Gelegentlich m&ouml;chte man vielleicht auch ein Bild aus der Datenbank l&ouml;schen. Dies geschieht im Fall des Formulars <b>frmBuch <\/b>&uuml;ber die Schaltfl&auml;che mit der Beschriftung <b>Bild l&ouml;schen <\/b>direkt durch Null-Setzen des an das Formular gebundenen OLE-Felds <b>Bild<\/b>. Ein anschlie&szlig;ender Aufruf von <b>RequeryImage <\/b>aktualisiert das Image-Steuerelement:<\/p>\n<pre>Private Sub cmdDeleteImage_Click()\r\n    Me!Bild = Null\r\n    RequeryImage\r\n    End Sub<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Wann immer Sie Bilder in einer Datenbank unterbringen m&ouml;chten, deren Anzahl keine Gefahr l&auml;uft, die Gr&ouml;&szlig;e von maximal zwei Gigabyte zu sprengen, ist das Speichern von Bildern im Originalformat als OLE-Objekt eine gute L&ouml;sung &#8211; wie das funktioniert, haben Sie in diesem Beitrag erfahren.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Buecherverwaltung.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/22D8813E-8C0F-41E6-AEBE-08B5CBC048DC\/aiu_630.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt immer mal wieder eine Gelegenheit, Bilder in Datenbanken zu speichern, anzuzeigen oder von dort auf die Festplatte zu speichern. Die meisten Wege f&uuml;hren dabei &uuml;ber das Zwischenspeichern im Dateisystem, manch eine Anwendung bel&auml;sst die Bilddateien auch direkt im entsprechenden Ordner. Mit einem Image-Steuerelement und einer Tabelle mit einem OLE-Feld beh&auml;lt man alles an einem Ort &#8211; n&auml;mlich in der Datenbank.<\/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":[662008,66052008,44000040,44000026],"tags":[],"class_list":["post-55000630","post","type-post","status-publish","format-standard","hentry","category-662008","category-66052008","category-Allgemein","category-Interaktiv"],"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>Bilder on the fly - 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\/Bilder_on_the_fly\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bilder on the fly\" \/>\n<meta property=\"og:description\" content=\"Es gibt immer mal wieder eine Gelegenheit, Bilder in Datenbanken zu speichern, anzuzeigen oder von dort auf die Festplatte zu speichern. Die meisten Wege f&uuml;hren dabei &uuml;ber das Zwischenspeichern im Dateisystem, manch eine Anwendung bel&auml;sst die Bilddateien auch direkt im entsprechenden Ordner. Mit einem Image-Steuerelement und einer Tabelle mit einem OLE-Feld beh&auml;lt man alles an einem Ort - n&auml;mlich in der Datenbank.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-02T18:19:03+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74\" \/>\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=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Bilder on the fly\",\"datePublished\":\"2021-02-02T18:19:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/\"},\"wordCount\":1623,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/7cc8545557d2434b94abda2a57ac2e74\",\"articleSection\":{\"0\":\"2008\",\"1\":\"5\\\/2008\",\"3\":\"Interaktiv\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/\",\"name\":\"Bilder on the fly - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/7cc8545557d2434b94abda2a57ac2e74\",\"datePublished\":\"2021-02-02T18:19:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/7cc8545557d2434b94abda2a57ac2e74\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/7cc8545557d2434b94abda2a57ac2e74\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_on_the_fly\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bilder on the fly\"}]},{\"@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":"Bilder on the fly - 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\/Bilder_on_the_fly\/","og_locale":"de_DE","og_type":"article","og_title":"Bilder on the fly","og_description":"Es gibt immer mal wieder eine Gelegenheit, Bilder in Datenbanken zu speichern, anzuzeigen oder von dort auf die Festplatte zu speichern. Die meisten Wege f&uuml;hren dabei &uuml;ber das Zwischenspeichern im Dateisystem, manch eine Anwendung bel&auml;sst die Bilddateien auch direkt im entsprechenden Ordner. Mit einem Image-Steuerelement und einer Tabelle mit einem OLE-Feld beh&auml;lt man alles an einem Ort - n&auml;mlich in der Datenbank.","og_url":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-02T18:19:03+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Bilder on the fly","datePublished":"2021-02-02T18:19:03+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/"},"wordCount":1623,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74","articleSection":{"0":"2008","1":"5\/2008","3":"Interaktiv"},"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/","url":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/","name":"Bilder on the fly - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74","datePublished":"2021-02-02T18:19:03+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/7cc8545557d2434b94abda2a57ac2e74"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Bilder_on_the_fly\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Bilder on the fly"}]},{"@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\/55000630","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=55000630"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000630\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}