Rubrik: | VB-Versionen: VB5, VB6 | 01.09.04 |
Bilder/Dokumente in Access-Datenbanken speichern (ADO) Ein Beispiel, wie man Bilddateien oder auch andere Dokumente in einer Access-Datenbank speichern und später wieder anzeigen kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 2.190 |
http://www.tools4vb.de/ | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt |
In unserem heutigen Extratipp zeigen wir Ihnen eine Möglichkeit, wie sich Bilder oder auch andere Dokumentdateien in einer Access-Datenbank speichern lassen. Der Zugriff erfolgt hierbei mittels ADO. Für den Schreib- bzw. Lesezugriff verwenden wir das Stream-Objekt aus der ADODB-Bibliothek. In der Datenbank-Tabelle muss das Feld hierzu also "OLE-Objekt" (LongBinary) erstellt werden.
Öffnen der Datenbank und Erstellen eines Recordsets
Zunächst muss die Datenbank geöffnet werden. Hierzu wird ein Connection-Objekt benötigt:
Option Explicit Dim oConn As ADODB.Connection Dim oRs As ADODB.Recordset
' Datenbank öffnen Set oConn = New ADODB.Connection With oConn .CursorLocation = adUseClient .Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\DATEN.MDB;" & _ "Persist Security Info=False" End With
Für das Erstellen des Recordsets wird ein Recordset-Objekt benötigt:
Set oRs = New ADODB.Recordset With oRs .CursorLocation = adUseClient .Open "SELECT * FROM Tabelle1", oConn, adOpenDynamic, adLockOptimistic End With
Speichern der Bild-/Dokumentinformationen in ein LongBinary-Feld (unter MS-Access = OLE-Objekt)
Für das Auslesen und Speichern der "Binärdaten" verwenden wir das Stream-Objekt der ADO-Bibliothek.
Dim oStream As New ADODB.Stream Dim sFile As String ' Dokument, dessen Inhalt in der DB gespeichert werden soll sFile = App.Path & "\MyPicture.gif" With oStream ' Stream öffnen und Daten binär einlesen .Type = adTypeBinary .Open .LoadFromFile sFile ' Inhalt in DB speichern oRs.AddNew ... oRs.Fields("Daten") = .Read oRs.Update ' Stream schließen .Close End With
Auslesen der Binärdaten aus der Datenbank und Anzeige des Bildes / des Dokuments
Für das Auslesen der binären Daten der DB-Tabelle wird ebenfalls wieder das Stream-Objekt herangezogen.
Dim oStream As New ADODB.Stream Dim sFile As String ' temporäre Datei, in der der Inhalt gespeichert werden soll sFile = App.Path & "\~myData.tmp" With oStream ' Daten aus DB auslesen und in temporäre Datei speichern .Type = adTypeBinary .Open .Write oRs.Fields("Daten") .SaveToFile sFile .Close End With
Anzeige des Bildes in einem Image-Control:
Handelt es sich bei den Binärdaten um ein Bild, lässt sich dieses wie folgt in einem Bildfeld anzeigen:
Image1.Picture = LoadPicture(sFile) Kill sFile
Handelt es sich bei den Daten bspw. um ein Excel-Dokument, lässt sich dieses wie folgt starten:
sFile = App.Path & "\~myData.xls" With oStream .Type = adTypeBinary .Open .Write oRs.Fields("Daten") .SaveToFile sFile .Close End With ShellExecute Me.hWnd, "open" sFile, "", "", 1
Die Deklaration der ShellExecute-Funktion fügen Sie dann bitte noch in den Allgemein-Teil der Form:
Private Declare Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" ( _ ByVal hWnd As Long, _ ByVal lOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long