{"id":55001275,"date":"2020-12-01T00:00:00","date_gmt":"2021-01-27T22:07:54","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1275"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"WebcamBilder_in_Datenbank_speichern","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/","title":{"rendered":"Webcam-Bilder in Datenbank speichern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Bilder einer Webcam kann man &uuml;blicherweise auf dem Rechner speichern, auf dem man diese erstellt hat. Gegebenenfalls geschieht das auch automatisch &#8211; so zum Beispiel mit der Kamera-App von Windows. Ein Leser fragte, ob sich das Aufnehmen von Bildern auch so steuern l&auml;sst, dass man die neuen Fotos direkt in einer Datenbank weiterverwenden kann &#8211; durch Speichern des Bildes oder des Speicherpfades in der Datenbank und das anschlie&szlig;ende Anzeigen des Bildes direkt in einem Formular der Datenbank. Eine direkte Steuerung via VBA haben wir nicht realisiert, aber einen Workaround, der diese Aufgabe ebenso gut erf&uuml;llt.<\/b><\/p>\n<p>Die Aufgabe lautet also: Wir m&ouml;chten von einem Access-Formular aus, das beispielsweise ein Produkt anzeigt, die Kamera-App von Windows &ouml;ffnen, mit dieser ein Bild schie&szlig;en und dieses dann in der Access-Anwendung so verf&uuml;gbar machen, dass es direkt im aufrufenden Formular angezeigt werden kann.<\/p>\n<p>Die Idee dazu lautet: Wir &ouml;ffnen per Mausklick die Kamera-App und starten zum gleichen Zeitpunkt einen Formular-Timer, der alle paar Sekunden pr&uuml;ft, ob in einem bestimmten Ordner eine neue Datei hinzugef&uuml;gt wurde. Ist das der Fall, soll die neue Datei als Bilddatei zum aktuellen Datensatz hinzugef&uuml;gt werden.<\/p>\n<p>Die Kamera-App speichert die Bilder n&auml;mlich in einem vorgegebenen Ordner (&uuml;blicherweise <b>c:Users<Be-nut-zer-name>PicturesCameraRoll<\/b>).<\/p>\n<p>Diesen k&ouml;nnen wir &auml;ndern oder ihn einfach &uuml;bernehmen. Nachdem wir w&auml;hrend der Ausf&uuml;hrung der Timer-Ereignisprozedur ein neues Bild im angegebenen Ordner entdeckt haben, verarbeiten wir dieses und beenden das Ausl&ouml;sen des Timers. Au&szlig;erdem soll das Bild nun als neues Bild im Formular angezeigt werden.<\/p>\n<p><b>Probleme mit der Kamera-App<\/b><\/p>\n<p>Eines direkt vorneweg: Die Steuerung der Kamera-App ist ein wenig kompliziert und funktioniert mit der nachfolgend vorgestellten Methode nicht in allen F&auml;llen perfekt. Zun&auml;chst einmal muss man wissen, dass die Kamera-App auch gestartet wird, wenn gar keine Kamera vorhanden ist &#8211; in diesem Fall erscheint zwar eine Anwendung, aber diese liefert lediglich die Meldung, dass keine Kamera gefunden werden konnte (siehe Bild 1). In diesem Fall wollen wir einfach abfangen, wenn der Benutzer die Meldung und somit die Kamera-App wieder schlie&szlig;t.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_001.png\" alt=\"Meldung bei fehlender oder deaktivierter Kamera\" width=\"549,6265\" height=\"442,8774\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Meldung bei fehlender oder deaktivierter Kamera<\/span><\/b><\/p>\n<p><b>Datenmodell der Anwendung<\/b><\/p>\n<p>F&uuml;r die Anwendung haben wir ein recht einfaches Datenmodell definiert. Wir wollen zu einem Datensatz der Tabelle <b>tblProdukte <\/b>ein oder mehrere Fotos in der Tabelle <b>tblBilder <\/b>speichern k&ouml;nnen und verkn&uuml;pfen die Tabelle <b>tblBilder<\/b> wie in Bild 2 &uuml;ber das Fremdschl&uuml;sselfeld <b>Produkt-ID<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_002.png\" alt=\"Datenmodell der Beispieldatenbank\" width=\"499,6607\" height=\"307,8267\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Datenmodell der Beispieldatenbank<\/span><\/b><\/p>\n<p>Das Feld <b>Bild <\/b>der Tabelle <b>tblBilder <\/b>legen wir als Anlage-Feld an. Damit k&ouml;nnen wir darin nicht nur Bilder speichern, sondern diese auch gleich &uuml;ber das Anlage-Steuerelement im Formular anzeigen.<\/p>\n<p>Neben diesen beiden Tabellen verwenden wir noch eine Tabelle namens <b>tblOptionen<\/b>, die nur ein Feld namens <b>Fotopfad <\/b>enth&auml;lt.<\/p>\n<p><b>Formulare der Anwendung<\/b><\/p>\n<p>Das erste Formular namens <b>frmOptionen <\/b>verwendet die Tabelle <b>tblOptionen <\/b>als Datensatzherkunft. Damit der Benutzer nur den vorhandenen Datensatz bearbeiten kann und weder neue Datens&auml;tze hinzuf&uuml;gen noch den bestehenden Datensatz l&ouml;schen kann, stellen wir die Eigenschaften <b>Anf&uuml;gen zulassen <\/b>und <b>L&ouml;schen zulassen <\/b>im Entwurf des Formulars auf <b>Nein <\/b>ein (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_003.png\" alt=\"Entwurf des Formulars zum Ausw&auml;hlen des Fotopfades\" width=\"499,6607\" height=\"359,0155\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Entwurf des Formulars zum Ausw&auml;hlen des Fotopfades<\/span><\/b><\/p>\n<p>Die Schaltfl&auml;che <b>cmdFotopfad <\/b>ruft die Prozedur aus Listing 1 auf. Diese verwendet die im Modul <b>mdlTools <\/b>definierte Funktion <b>OpenPathName<\/b>, um einen Dialog zum Ausw&auml;hlen eines Verzeichnisses anzuzeigen. Dabei &uuml;bergibt sie als ersten Parameter den bisher in der Tabelle <b>tblOptionen <\/b>gespeicherten Ordner und als zweiten den anzuzeigenden Titel f&uuml;r den Dialog.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdVerzeichnisAuswaehlen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strFotopfad<span style=\"color:blue;\"> As String<\/span>\r\n     strFotopfad = OpenPathName(Nz(Me!txtFotopfad, CurrentProject.Path), \"Fotoverzeichnis ausw&auml;hlen\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strFotopfad) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         Me!txtFotopfad = strFotopfad\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Ausw&auml;hlen eines Verzeichnisses<\/span><\/b><\/p>\n<p>In der Formularansicht sieht das Formular wie in Bild 4 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_004.png\" alt=\"Dialog zum Einstellen der Optionen der Anwendung\" width=\"424,7115\" height=\"128,3788\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Dialog zum Einstellen der Optionen der Anwendung<\/span><\/b><\/p>\n<p><b>Formular zum Einlesen von Fotos<\/b><\/p>\n<p>Das Formular zum Einlesen und Anzeigen der Fotos besteht aus einem Haupt- und einen Unterformular (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_005.png\" alt=\"Entwurf des Formulars frmProdukte\" width=\"499,6607\" height=\"447,6482\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Entwurf des Formulars frmProdukte<\/span><\/b><\/p>\n<p>Das Unterformular hei&szlig;t <b>sfmProdukte <\/b>und verwendet die Tabelle <b>tblBilder <\/b>als Datensatzquelle und zeigt lediglich den Inhalt des Feldes <b>Bild <\/b>in einem <b>Anlage<\/b>-Steuerelement an. Nachdem wir dieses Formular angelegt und gespeichert haben, erstellen wir das Hauptformular.<\/p>\n<p>In dieses ziehen wir das Unterformular <b>sfmProdukte<\/b>. Au&szlig;erdem legen wir f&uuml;r das Formular <b>frmProdukte <\/b>die Tabelle <b>tblProdukte <\/b>als Datensatzquelle fest und f&uuml;gen die beiden Felder <b>ProduktID <\/b>und <b>Produktbezeichnung <\/b>zum Detailbereich hinzu.<\/p>\n<p>&Uuml;ber dem Unterformular platzieren wir die beiden Schaltfl&auml;chen <b>cmdFotoHinzufuegen <\/b>und <b>cmdFotoPfadAnpassen<\/b>.<\/p>\n<p>Letztere ruft die folgende Prozedur auf und &ouml;ffnet so das Formular <b>frmOptionen <\/b>als modalen Dialog:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdFotopfadAnpassen_Click()\r\n     DoCmd.OpenForm \"frmOptionen\", WindowMode:=acDialog\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b>Foto hinzuf&uuml;gen<\/b><\/p>\n<p>Die Schaltfl&auml;che <b>cmdFotoHinzufuegen <\/b>soll daf&uuml;r sorgen, dass die Kamera-App gestartet wird und dass nach dem Fotografieren die im Fotoverzeichnis gespeicherte neue Datei in die Tabelle <b>tblBilder <\/b>eingelesen und im Formular angezeigt wird.<\/p>\n<p>Dazu ben&ouml;tigen wir eine modulweit deklarierte Variable, deren Funktion wir im Anschluss erl&auml;utern:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>datStart<span style=\"color:blue;\"> As Date<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p>Die Prozedur, die durch einen Mausklick auf die Schaltfl&auml;che Foto hinzuf&uuml;gen ausgel&ouml;st wird, finden Sie in Listing 2. Diese f&uuml;llt die Variable <b>datStart <\/b>mit dem Wert der Funktion <b>Now<\/b>, welche das aktuelle Datum und die aktuelle Uhrzeit liefert. Damit haben wir den Zeitpunkt gespeichert, an dem der Benutzer ein Foto aufnehmen m&ouml;chte.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdFotoHinzufuegen_Click()\r\n     datStart = Now\r\n     Shell \"cmd.exe \/C \"\"start microsoft.windows.camera:\"\", vbMaximisedFocus\"\r\n     Sleep 1000\r\n     <span style=\"color:blue;\">If <\/span>AnwendungGeoeffnet(\"Kamera\")<span style=\"color:blue;\"> Then<\/span>\r\n         Me.TimerInterval = 1000\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Starten der Fotoaufnahme<\/span><\/b><\/p>\n<p>Danach nutzen wir die <b>Shell<\/b>-Anweisung, um die Kamera-App zu starten. Das Starten einer Windows-App ist nicht so trivial wie das Starten einer einfachen <b>.exe<\/b>-Anwendung.<\/p>\n<p>Wir ben&ouml;tigen dazu einen kleinen Trick, indem wir &uuml;ber die <b>Shell<\/b>-Methode die Kommandozeile aufrufen, die wiederum mit der <b>start<\/b>-Anweisung die Windows-Kamera startet:<\/p>\n<pre>Shell \"cmd.exe \/C \"\"start microsoft.windows.camera:\"\",  vbMaximisedFocus\"<\/pre>\n<p>Danach warten wir eine Sekunde, was wir durch den Aufruf der im Modul <b>mdlTools <\/b>deklarierten <b>Sleep<\/b>-Methode erreichen (der Wert <b>1000 <\/b>entspricht einer Sekunde).<\/p>\n<p>Danach pr&uuml;fen wir, ob die Kamera-App ge&ouml;ffnet ist. Dazu nutzen wir die Hilfsfunktion <b>AnwendungGeoeffnet<\/b>, die Sie ebenfalls im Modul <b>mdlTools <\/b>finden.<\/p>\n<p>Sie nutzt die die API-Funktion <b>FindWindow<\/b>, um das Vorhanden eines Fensters mit dem Titel <b>Kamera <\/b>zu &uuml;berpr&uuml;fen.<\/p>\n<p>Liefert diese Funktion den Wert <b>True <\/b>zur&uuml;ck, stellen wir den Wert der Eigenschaft <b>TimerInterval <\/b>des Formulars auf <b>1000 <\/b>ein. Das bedeutet, dass von nun an jeweils nach einer Sekunde einmal die Ereignisprozedur <b>Form_Timer <\/b>aufgerufen wird.<\/p>\n<p><b>Sek&uuml;ndliche Suche nach einem neuen Bild<\/b><\/p>\n<p>Die Prozedur <b>Form_Timer <\/b>sucht einmal pro Sekunde nach einer neuen Datei im Foto-Verzeichnis (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Timer()\r\n     <span style=\"color:blue;\">Dim <\/span>objFS<span style=\"color:blue;\"> As <\/span>Scripting.FileSystemObject\r\n     <span style=\"color:blue;\">Dim <\/span>objFile<span style=\"color:blue;\"> As <\/span>Scripting.File\r\n     <span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Scripting.Folder\r\n     <span style=\"color:blue;\">Dim <\/span>datAktuell<span style=\"color:blue;\"> As Date<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>objNewestFile<span style=\"color:blue;\"> As <\/span>Scripting.File\r\n     <span style=\"color:blue;\">Dim <\/span>lngBildID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strFotoverzeichnis<span style=\"color:blue;\"> As String<\/span>\r\n     strFotoverzeichnis = Nz(DLookup(\"Fotopfad\", \"tblOptionen\"), Environ$(\"USERPROFILE\") & \"PicturesCamera Roll\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Right<\/span>(strFotoverzeichnis, 1) = \"\"<span style=\"color:blue;\"> Then<\/span>\r\n         strFotoverzeichnis = strFotoverzeichnis & \"\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> objFS = <span style=\"color:blue;\">New<\/span> FileSystemObject\r\n     <span style=\"color:blue;\">Set<\/span> objFolder = objFS.GetFolder(strFotoverzeichnis)\r\n     datAktuell = datStart\r\n     For Each objFile In objFolder.Files\r\n         <span style=\"color:blue;\">If <\/span>objFile.DateCreated &gt; datAktuell<span style=\"color:blue;\"> Then<\/span>\r\n             Select Case <span style=\"color:blue;\">Mid<\/span>(objFile.Name, <span style=\"color:blue;\">InStrRev<\/span>(objFile.Name, \".\") + 1)\r\n                 <span style=\"color:blue;\">Case <\/span>\"ini\"\r\n                 <span style=\"color:blue;\">Case Else<\/span>\r\n                     datAktuell = objFile.DateCreated\r\n                     <span style=\"color:blue;\">Set<\/span> objNewestFile = objFile\r\n             <span style=\"color:blue;\">End Select<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> objFile\r\n     <span style=\"color:blue;\">If <\/span>datAktuell &gt; datStart<span style=\"color:blue;\"> Then<\/span>\r\n         Me.TimerInterval = 0\r\n         lngBildID = AttachmentImportieren(strFotoverzeichnis & objNewestFile.Name, Me!ProduktID)\r\n         Me!sfmProdukte.Form.Requery\r\n         Me!sfmProdukte.Form.Recordset.FindFirst \"BildID = \" & lngBildID\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> AnwendungGeoeffnet(\"Kamera\")<span style=\"color:blue;\"> Then<\/span>\r\n         Me.TimerInterval = 0\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Sek&uuml;ndliche Suche nach einer neuen Datei<\/span><\/b><\/p>\n<p>Dabei verwenden wir Elemente des <b>FileSystemObjects<\/b>, das wir zun&auml;chst noch per Verweis zum VBA-Projekt hinzuf&uuml;gen m&uuml;ssen. Dazu &ouml;ffnen Sie den <b>Verweise<\/b>-Dialog mit dem Men&uuml;befehl <b>Extras|Verweise <\/b>im VBA-Editor und f&uuml;gen dort den Eintrag aus Bild 6 hinzu.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_06\/pic_1275_006.png\" alt=\"Hinzuf&uuml;gen eines Verweises auf die Bibliothek Microsoft Scripting Runtime\" width=\"499,6607\" height=\"393,9009\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Hinzuf&uuml;gen eines Verweises auf die Bibliothek Microsoft Scripting Runtime<\/span><\/b><\/p>\n<p>Anschlie&szlig;end deklarieren wir die ben&ouml;tigten Objektvariablen, und zwar jeweils eine f&uuml;r das <b>FileSystemObject <\/b>selbst, f&uuml;r die <b>File<\/b>-Klasse f&uuml;r das aktuell untersuchte Objekt (<b>objFile<\/b>) sowie das zuletzt erstellte Objekt (<b>objNewestFile<\/b>) und f&uuml;r die <b>Folder<\/b>-Klasse (<b>objFolder<\/b>). Die Variable <b>datAktuell <\/b>speichert das Erstellungsdatum der aktuell untersuchten Datei.<\/p>\n<p>Au&szlig;erdem ben&ouml;tigen wir noch Variablen f&uuml;r den Prim&auml;rschl&uuml;sselwert des hinzuzuf&uuml;genden Bilddatensatzes in der Tabelle <b>tblFotos <\/b>und f&uuml;r das zu untersuchende Fotoverzeichnis.<\/p>\n<p>Dieses liest die Prozedur als Erstes aus der Optionentabelle in die Variable <b>strFotoverzeichnis <\/b>ein. Dann referenziert sie mit <b>objFolder <\/b>das <b>Folder<\/b>-Verzeichnis zu <b>strFotoverzeichnis<\/b> und durchl&auml;uft in einer <b>For Each<\/b>-Schleife alle <b>File<\/b>-Objekte in <b>objFolder.Files<\/b>. Dies dient dazu, die aktuellste Datei des Verzeichnisses zu ermitteln. Dabei pr&uuml;ft sie zun&auml;chst, ob das mit <b>DateCreated <\/b>ermittelte Erstellungsdatum der aktuellen Datei gr&ouml;&szlig;er als das in <b>datAktuell <\/b>gespeicherte Datum ist. Beim ersten Durchlauf hat <b>datAktuell <\/b>den Wert <b>0<\/b>, also ist <b>datAktuell <\/b>auf jeden Fall gr&ouml;&szlig;er und die erste <b>If&#8230;Then<\/b>-Bedingung ist erf&uuml;llt.<\/p>\n<p>Innerhalb der Schleife pr&uuml;fen wir dann noch, ob die Dateiendung nicht auf <b>.ini <\/b>lautet. Bei unseren Versuchen wurde n&auml;mlich gelegentlich eine solche Datei automatisch erstellt &#8211; und diese wollen wir nat&uuml;rlich nicht als neues Foto in die Datenbank importieren.<\/p>\n<p>Handelt es sich also nicht um eine <b>.ini<\/b>-Datei, stellen wir den Wert der Variablen <b>datAktuell <\/b>auf das Erstellungsdatum der aktuell untersuchten Datei ein und referenzieren das <b>File<\/b>-Objekt zu dieser Datei mit der Variablen <b>objNewestFile <\/b>ein.<\/p>\n<p>Auf diese Weise durchlaufen wir alle <b>File<\/b>-Objekt der <b>Files<\/b>-Auflistung des Verzeichnisses auf <b>objFolder<\/b>. Am Ende referenziert <b>objNewestFile <\/b>die zuletzt hinzugef&uuml;gte Datei und wir verlassen die <b>For Each<\/b>-Schleife.<\/p>\n<p>Danach pr&uuml;fen wir, ob der Wert von <b>datAktuell<\/b>, also dem Erstellungsdatum der neuesten Datei, gr&ouml;&szlig;er als der Wert aus <b>datStart <\/b>ist, also der Uhrzeit, an der die Kamera-App gestartet wurde. Ist das der Fall, wurde offensichtlich nach dem Starten der Kamera-App eine neue Datei zum Foto-Ordner hinzugef&uuml;gt und wir gehen davon aus, dass es sich dabei um ein neu erstelltes Foto handelt.<\/p>\n<p>In diesem Fall stellen wir die Eigenschaft <b>TimerInterval <\/b>auf <b>0<\/b>, damit die Prozedur <b>Form_Timer <\/b>nicht erneut aufgerufen wird. Au&szlig;erdem rufen wir die Funktion <b>AttachmentImportieren <\/b>auf, der wir den Pfad zu dem zu importierenden Foto &uuml;bergeben sowie den Prim&auml;rschl&uuml;sselwert des Produkt-Datensatzes, dem das Foto hinzugef&uuml;gt werden soll. Die Funktion, die wir gleich im Anschluss beschreiben, liefert den Prim&auml;rschl&uuml;sselwert des neu erstellten Datensatzes in der Tabelle <b>tblBilder <\/b>zur&uuml;ck. Diesen speichern wir in der Variablen <b>lngBildID<\/b>.<\/p>\n<p>Damit das neu erstellte Foto direkt angezeigt wird, aktualisieren wir den Inhalt des Unterformulars und stellen dieses auf den Datensatz mit dem Wert aus <b>lngBildID <\/b>f&uuml;r das Feld <b>BildID <\/b>ein.<\/p>\n<p>Die letzte <b>If&#8230;Then<\/b>-Bedingung deckt den Fall ab, dass die Kamera-App ohne Erstellen eines Fotos geschlossen wird &#8211; weil der Benutzer es sich entweder anders &uuml;berlegt hat oder weil die Anwendung wie oben beschrieben zwar gestartet wurde, aber keine Kamera gefunden hat. Die <b>If&#8230;Then<\/b>-Bedingung pr&uuml;ft, ob die Funktion <b>AnwendungGeoeffnet <\/b>noch den Wert <b>True <\/b>liefert. Falls nicht, stellt die Prozedur auch hier den Wert der Eigenschaft <b>TimerInterval <\/b>auf den Wert <b>0 <\/b>ein.<\/p>\n<p><b>Importieren des Fotos<\/b><\/p>\n<p>Die Funktion <b>AttachmentImportieren <\/b>aus Listing 4 soll das mit dem ersten Parameter angegebene Foto in einen neuen, leeren Datensatz der Tabelle <b>tblBilder<\/b> importieren und gleichzeitig den Wert des Feldes <b>ProduktID <\/b>auf den Wert des zweiten Parameters einstellen. Au&szlig;erdem soll sie den Prim&auml;rschl&uuml;sselwert des neuen Datensatzes zur&uuml;ckliefern.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>AttachmentImportieren(strDatei<span style=\"color:blue;\"> As String<\/span>, lngProduktID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>Recordset2\r\n     <span style=\"color:blue;\">Dim <\/span>rstAttachments<span style=\"color:blue;\"> As <\/span>Recordset2\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>Field2\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblBilder WHERE 1 = 2\", dbOpenDynaset)\r\n     rst.Add<span style=\"color:blue;\">New<\/span>\r\n     rst!ProduktID = lngProduktID\r\n     <span style=\"color:blue;\">Set<\/span> rstAttachments = rst.Fields(\"Bild\").Value\r\n     rstAttachments.Add<span style=\"color:blue;\">New<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> fld = rstAttachments.Fields(\"FileData\")\r\n     fld.LoadFromFile strDatei\r\n     rstAttachments.Update\r\n     AttachmentImportieren = rst!BildID\r\n     rst.Update\r\n     rst.Close\r\n     <span style=\"color:blue;\">Set<\/span> rst = Nothing\r\n     <span style=\"color:blue;\">Set<\/span> db = Nothing\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Importieren des Fotos<\/span><\/b><\/p>\n<p>Die Funktion deklariert neben einer <b>Database<\/b>-Variablen zwei Variablen des Typs <b>Recordset2<\/b>. Die erste soll die Tabelle <b>tblBilder <\/b>referenzieren, die zweite die interne Tabelle des Anlagefeldes <b>Bild<\/b>. Au&szlig;erdem ben&ouml;tigen wir noch eine Variable des Typs <b>Field2<\/b>.<\/p>\n<p>Nachdem die Prozedur die Variable <b>db <\/b>mit einem Verweis auf das aktuelle <b>Database<\/b>-Objekt gef&uuml;llt hat, erstellt es das erste <b>Recordset2<\/b>-Objekt auf Basis der Tabelle <b>tblBilder<\/b>. Da wir nur einen neuen Datensatz anlegen wollen, aber nicht auf vorhandene Datens&auml;tze zugreifen, legen wir als Kriterium den Wert <b>1 = 2 <\/b>fest, was f&uuml;r keinen Datensatz zutrifft &#8211; und dementsprechend eine leere Datensatzgruppe zur&uuml;ckliefert.<\/p>\n<p>Diesem Recordset f&uuml;gt die Prozedur nun einen neuen Datensatz hinzu und stellt dessen Feld <b>ProduktID <\/b>auf den Wert des zweiten Parameters <b>lngProduktID <\/b>ein. Dann legt es das zweite <b>Recordset2<\/b>-Objekt f&uuml;r das im Feld <b>Bild <\/b>enthaltene Recordset an. Dazu muss es auf die <b>Value<\/b>-Eigenschaft des Feldes zugreifen. Auch hier legt sie einen neuen Datensatz an und referenziert dann das Feld <b>FileData <\/b>dieses Datensatzes mit der <b>Field2<\/b>-Variablen <b>fld<\/b>.<\/p>\n<p>Dann nutzen wir die <b>LoadFromFile<\/b>-Methode und &uuml;bergeben den Pfad zu der zu importierenden Bilddatei aus <b>strDatei <\/b>als Parameter. Danach speichern wir die &Auml;nderungen an dem neuen Anlage-Datensatz. Bevor wir auch die &Auml;nderungen am neuen Datensatz der Tabelle <b>tblBilder <\/b>speichern, greifen wir noch den Prim&auml;rschl&uuml;sselfeld des neuen Datensatzes ab und weisen diesen als R&uuml;ckgabewert der Funktion <b>AttachmentImportieren <\/b>zu. Erst dann f&uuml;hren wir die <b>Update<\/b>-Methode auch f&uuml;r das Recordset mit dem neuen Datensatz der Tabelle <b>tblBilder <\/b>aus und schlie&szlig;en diesen und leeren die Objektvariablen.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Dieser Beitrag stellt eine L&ouml;sung vor, mit der Sie die Kamera-App von Windows starten und damit geschossene Fotos direkt in die Datenbank speichern k&ouml;nnen. Da wir die Kamera-App nicht komplett fernsteuern k&ouml;nnen, kann es zu unvorhergesehenem Verhalten kommen &#8211; beispielsweise, wenn der Benutzer nicht den Ordner angegeben hat, in den die Kamera-App ihre Fotos speichert oder wenn die Kamera-App gar keine Kamera findet oder aktivieren kann.<\/p>\n<p>Wir haben die Beispielanwendung mit einem Surface mit eingebauter Kamera getestet. Probieren Sie aus, ob es auch mit der Kamera Ihres Rechners funktioniert!<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>WebcamBilderInDatenbank.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/A4DC0569-1214-457E-8B13-D08A73B9852E\/aiu_1275.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Bilder einer Webcam kann man &uuml;blicherweise auf dem Rechner speichern, auf dem man diese erstellt hat. Gegebenenfalls geschieht das auch automatisch &#8211; so zum Beispiel mit der Kamera-App von Windows. Ein Leser fragte, ob sich das Aufnehmen von Bildern auch so steuern l&auml;sst, dass man die neuen Fotos direkt in einer Datenbank weiterverwenden kann &#8211; durch Speichern des Bildes oder des Speicherpfades in der Datenbank und das anschlie&szlig;ende Anzeigen des Bildes direkt in einem Formular der Datenbank. Eine direkte Steuerung via VBA haben wir nicht realisiert, aber einen Workaround, der diese Aufgabe ebenso gut erf&uuml;llt.<\/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,44000027],"tags":[],"class_list":["post-55001275","post","type-post","status-publish","format-standard","hentry","category-662020","category-66062020","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Webcam-Bilder in Datenbank speichern - 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\/WebcamBilder_in_Datenbank_speichern\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Webcam-Bilder in Datenbank speichern\" \/>\n<meta property=\"og:description\" content=\"Die Bilder einer Webcam kann man &uuml;blicherweise auf dem Rechner speichern, auf dem man diese erstellt hat. Gegebenenfalls geschieht das auch automatisch - so zum Beispiel mit der Kamera-App von Windows. Ein Leser fragte, ob sich das Aufnehmen von Bildern auch so steuern l&auml;sst, dass man die neuen Fotos direkt in einer Datenbank weiterverwenden kann - durch Speichern des Bildes oder des Speicherpfades in der Datenbank und das anschlie&szlig;ende Anzeigen des Bildes direkt in einem Formular der Datenbank. Eine direkte Steuerung via VBA haben wir nicht realisiert, aber einen Workaround, der diese Aufgabe ebenso gut erf&uuml;llt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-27T22:07:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2\" \/>\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=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Webcam-Bilder in Datenbank speichern\",\"datePublished\":\"2021-01-27T22:07:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/\"},\"wordCount\":2145,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/65267feea72646308f831befbe4224b2\",\"articleSection\":[\"2020\",\"6\\\/2020\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/\",\"name\":\"Webcam-Bilder in Datenbank speichern - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/65267feea72646308f831befbe4224b2\",\"datePublished\":\"2021-01-27T22:07:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/65267feea72646308f831befbe4224b2\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/65267feea72646308f831befbe4224b2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/WebcamBilder_in_Datenbank_speichern\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webcam-Bilder in Datenbank speichern\"}]},{\"@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":"Webcam-Bilder in Datenbank speichern - 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\/WebcamBilder_in_Datenbank_speichern\/","og_locale":"de_DE","og_type":"article","og_title":"Webcam-Bilder in Datenbank speichern","og_description":"Die Bilder einer Webcam kann man &uuml;blicherweise auf dem Rechner speichern, auf dem man diese erstellt hat. Gegebenenfalls geschieht das auch automatisch - so zum Beispiel mit der Kamera-App von Windows. Ein Leser fragte, ob sich das Aufnehmen von Bildern auch so steuern l&auml;sst, dass man die neuen Fotos direkt in einer Datenbank weiterverwenden kann - durch Speichern des Bildes oder des Speicherpfades in der Datenbank und das anschlie&szlig;ende Anzeigen des Bildes direkt in einem Formular der Datenbank. Eine direkte Steuerung via VBA haben wir nicht realisiert, aber einen Workaround, der diese Aufgabe ebenso gut erf&uuml;llt.","og_url":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-01-27T22:07:54+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Webcam-Bilder in Datenbank speichern","datePublished":"2021-01-27T22:07:54+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/"},"wordCount":2145,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2","articleSection":["2020","6\/2020","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/","url":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/","name":"Webcam-Bilder in Datenbank speichern - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2","datePublished":"2021-01-27T22:07:54+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/65267feea72646308f831befbe4224b2"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/WebcamBilder_in_Datenbank_speichern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Webcam-Bilder in Datenbank speichern"}]},{"@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\/55001275","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=55001275"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001275\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}