Neulich fragte mich ein Leser, wie er Bilder aus dem Dateisystem, deren Dateiname oder Pfad in einer Tabelle gespeichert sind, in einem Formular in der Endlosansicht darstellen kann. Das ist seit Access 2010 und dem dort aktualisierten Bildsteuerelement gar nicht mal so kompliziert. In diesem Beitrag zeigen wir die notwendigen Schritte, um in einem Formular mehrere Datensätze mit verschiedenen Bildern auf einen Blick anzuzeigen.
Wir schauen uns dabei zwei verschiedene Varianten an:
- Bei der ersten ist für jeden Datensatz der komplette Pfad zu dem anzuzeigenden Bild in einem Feld der Tabelle gespeichert.
- Bei der zweiten finden wir nur noch den Dateinamen in einem Feld der Datenbank. Dabei gehen wir allerdings davon aus, dass sich die Bilder im gleichen Verzeichnis wie die Datenbankdatei befinden oder in einem Verzeichnis unterhalb dieses Verzeichnisses. Dieses Verzeichnis muss jedoch bekannt und relativ zur Datenbankdatei immer gleich sein.
Diese beiden verschiedenen Informationen über die anzuzeigenden Bilder speichern wir in den Feldern Dateipfad und Dateiname der Tabelle tblBilder, die in der Entwurfsansicht wie in Bild 1 aussieht.
Bild 1: Tabelle mit Bildpfaden und Bilddateinamen in der Entwurfsansicht
Wechseln wir dann zur Datenblattansicht und geben einige Daten ein, sieht die Tabelle wie in Bild 2 aus. Der Inhalt des Feldes Dateiname entspricht jeweils dem im Feld Dateipfad angegebenen Dateinamen.
Bild 2: Tabelle mit Bildpfaden und Bilddateinamen in der Datenblattansicht
Die Bilddateien befinden sich in diesem Beispiel im gleichen Verzeichnis wie die Beispieldatenbank. Wenn Sie das Beispiel aus dem Download ausprobieren wollen, müssen Sie also alle Dateien (die .accdb-Datenbank und die vier Bilddateien) in das gleiche Verzeichnis entpacken.
Das Feld Dateipfad enthält zu diesem Zeitpunkt natürlich noch die Pfadangaben, die mit der Beispieldatenbank geliefert wurden und die dem Pfad auf dem Rechner entsprechen, mit dem die Beispieldatenbank erstellt wurde.
Die Prozedur, die beim Schließen des frmIntro-Formulars der Beispieldatenbank ausgeführt wird, stellt den Inhalt des Feldes Dateipfad jedoch auf den Dateipfad der aktuellen Datenbankdatei und dem Bildnamen aus dem Feld Dateiname ein:
Private Sub cmdGo_Click() Dim db As DAO.Database Set db = CurrentDb db.Execute "UPDATE tblBilder SET Dateipfad = ''" _ & CurrentProject.Path & "\'' & Dateiname", _ dbFailOnError ... End Sub
Bilder per Pfad im Endlosformular
Nun legen wir das erste Beispielformular an. Dieses nennen wir frmBilderPerPfad und wir weisen ihm als Datensatzquelle die Tabelle tblBilder zu.