Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0622: BLOBs in einer SQL/Access2000-Datenbank speichern

 von 

Beschreibung 

Dieses Beispiel speichert BLOBs in einer SQL7- bzw. ACCESS2000-Datenbank. Es wird ein Worddokument zuerst in einer Datenbank gespeichert und anschließend wieder ausgelesen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,67 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'--------------- Anfang Projektdatei BLOB.VBP ---------------
' Es muss ein Verweis auf 'Microsoft ActiveX Data Objects 2.5 Library' gesetzt werden.
' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (comdlg32.ocx)' wird benötigt.

'---------- Anfang Formular "Main" alias BLOB.frm  ----------
' Steuerelement: Schaltfläche "cmdOutdb"
' Steuerelement: Schaltfläche "cmdIndb"


' Vogehensweise:
'- Starten Sie Word
'- Legen Sie ein beliebiges Worddokument an und Speichern es
'  unter Eigene Dateien unter dem Dateinamen MyDoc
'- Legen Sie in Ihrer Datenbank ein Imagefeld an und bezeichnen
'  es als MyImage
'- Starten Sie VB6
'- Fügen Sie in die Form 2 Command-Buttons hinzu mit den Namen
'  cmdIndb und cmdOutdb
'- Verweisen Sie auf die ADO2.5 Bibliothek
'- Passen Sie den Coude-Source auf Ihre Datenbank-Verhältnisse an.
'- Starten Sie das Projekt und betätigen cmdIndb
'- Öffnen Sie Windows-Explorer und gehen Sie ins Verzeichnis
'  Eigene Dateien und Sie werden feststellen, dass Ihr Dokument
'  nicht mehr exzistiert. Wenn Sie anschließend cmdOutdb betätigen
'  wird das Dokument wieder aus der Datenbank ausgelesen und steht
'  wieder zur Verfügung.

Option Explicit

Dim rs As ADODB.Recordset
Dim doc As ADODB.Stream
Dim sql As String
Dim strPathToFile As String
Dim db As ADODB.Connection

Private Sub cmdIndb_Click()
  strPathToFile = "C:\Eigene Dateien\My.doc"
  Set doc = New ADODB.Stream
  
  With doc
    .Type = adTypeBinary
    .Open
    .LoadFromFile strPathToFile
  End With
      
  sql = "Select * FROM MyTable WHERE ID = MyKriteria"
  Set rs = New ADODB.Recordset
  
  With rs
    .CursorLocation = adUseClient
    .Open sql, db, adOpenStatic, adLockOptimistic, adCmdText
    ![MyImage] = doc.Read
    .Update
    .Close
  End With
  
  doc.Close
  Kill strPathToFile
End Sub

Private Sub cmdOutdb_Click()

  strPathToFile = "C:\Eigene Dateien\My.doc"
  sql = "SELECT * FROM MyTable WHERE ID = MyKriteria"
  Set rs = New ADODB.Recordset
  rs.Open sql, db, adOpenForwardOnly, adLockReadOnly, adCmdText
  Set doc = New ADODB.Stream
  
  With doc
    .Type = adTypeBinary
    .Open
    .Write rs![MyImage]
    .SaveToFile strPathToFile
    .Close
  End With
  
  rs.Close
End Sub

Private Sub Form_Load()
  Dim con As String
  
    con = "PROVIDER=MyProvider;SERVER=MyServer;uid=MyUID;" & _
                    "pwd=;database=MyDB"
                    
    Set db = New ADODB.Connection
    db.Open con
End Sub

Private Sub Form_Unload(Cancel As Integer)
  db.Close
End Sub
'----------- Ende Formular "Main" alias BLOB.frm  -----------
'---------------- Ende Projektdatei BLOB.VBP ----------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von R. Barsmann am 29.07.2004 um 14:22

Hallo,

danke für den Tipp, ich konnte ihn bestens verwenden, ein paar kleinere Änderung und dann lief er auch unter MS-SQL.
Meine Tabelle: dbDocument
Mein SQL-String:

sql = "Select * FROM dbDocument WHERE ID = " & ThisID &


Zu beachten ist, dass ein Datensatz vorhanden sein muss, damit das Dokument gespeichert wird.

Goetjes

Ralf

Kommentar von Helmut am 12.01.2004 um 10:17

Hallo,

ich habe ein kleines Problem mit dem SQL-String
'sql = "SELECT * FROM MyTable WHERE ID = MyKriteria"
Meine Tabelle habe ich "tblBriefe" genannt und das
Imagefeld habe ich "Brief" genannt.
Kann mir jemand weiterhelfen ?
Vielen Dank !

Mfg

Helmut