VB 5/6-Tipp 0622: BLOBs in einer SQL/Access2000-Datenbank speichern
von H. W. Wiemer
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: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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