vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik:    |   VB-Versionen: VB5, VB601.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 OtterBewertung:  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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.