Rubrik: Datenbanken · DAO | VB-Versionen: VB4, VB5, VB6 | 11.07.01 |
Bilder in der Access-Datenbank speichern Ein Beispiel, wie man Bilddateien in einer Access-Datenbank speichern und später wieder anzeigen kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 69.531 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
In Letzter Zeit wurde wir sehr häufig gefragt, wie sich Bilder in eine Access-Datenbank speichern lassen. Hierfür gibt folgende zwei Möglichkeiten:
- Speichern der Pfadangabe (ohne die Bildinformation selbst)
- Speichern des kompletten Bildes
Speichern der Bildinformationen in ein Memofeld
Um das gesamte Bild in einer Datenbank zu speichern, verwenden Sie am besten ein Datenbankfeld vom Typ Memo. Ein solches Feld kann einen Inhalt bis zu 1.2 GByte speichern. Das sollte dann auch für größere Bilddateien ausreichen.
Hierzu verwenden Sie nachfolgende Routine:
' Bild in Variable (String) lesen Public Function ReadPicture(sFilename As String) _ As String Dim F As Integer Dim sInhalt As String F = FreeFile Open sFilename For Binary As #F sInhalt = Space$(Lof(F)) Get #F, , sInhalt Close #F ReadPicture = sInhalt End Function
Immer wenn Sie nun ein Bild in der Datenbank speichern müssen, rufen Sie also obige Funktion auf:
' Bild in Datenbank speichern Tabelle.Edit Tabelle("Bild") = ReadPicture(picFilename) Tabelle.Update
Bild aus Datenbank lesen und in Picture/Image-Objekt anzeigen
Um nun das Bild aus der Datenbank später in einer PictureBox oder einem Image-Objekt wieder anzuzeigen, erstellen Sie eine temporäre Datei und speichern darin den Inhalt des Datenbank-Bildfeldes. Über die LoadPicture-Anweisung kann das Bild dann angezeigt werden. Danach wird die temporäre Datei wieder gelöscht.
Und hier der Code:
' Bild aus Datenbank laden und anzeigen Public Sub ShowPicture(Picture As Control, _ ByVal sInhalt As String) Dim F As Integer ' Bilddatei temporär erstellen F = FreeFile Open App.Path & "\Bild.tmp" For Output As #F Print #F, sInhalt; Close #F ' Bild anzeigen Picture.Picture = LoadPicture(App.Path & "\Bild.tmp") ' temporäre Datei löschen Kill App.Path & "\Bild.tmp" End Sub
Der Aufruf der Prozedur erfolgt dann so:
ShowPicture Picture1, Tabelle("Bild")