Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit Excel-Macro BLOB Felder in DB2 einzufügen

Forumthread: Mit Excel-Macro BLOB Felder in DB2 einzufügen

Mit Excel-Macro BLOB Felder in DB2 einzufügen
10.01.2007 09:13:45
Krause
Ich möchte für einen Masseninsert über eine Excel Datei, GIF - Bilder in einer DB2 in einer BLOB - Spalte ablegen.
Im Internet gibt es einige Beispiele wie in einer Oracle-DB od. MySQL-Db solche Daten abgelegt werden, aber ich konnte bis jetzt noch kein Beispiel für eine DB2 finden.
Der Connect zur DB2 erfolgt über ADO, die GIF-Datei wird mit einem ADODB.Stream per LoadfromFile eingelesen.
: fs.Read(fs.Size)(0) : 71 : Byte :
: fs.Read(fs.Size)(1) : 73 : Byte :
: fs.Read(fs.Size)(2) : 70 : Byte :
.
.
.
: fs.Read(fs.Size)(1492) : 0 : Byte :
: fs.Read(fs.Size)(1493) : 0 : Byte :
: fs.Read(fs.Size)(1494) : 59 : Byte :
Will ich nun per ADODB.Command EXECUTE den Datensatz wegschreiben erhalte ich folgende Fehlermeldung:
Laufzeitfehler '-2147217900 (80040e14)
[DB2/NT]SQL0104N Auf "ID,BILD)values(1" folgte das unerwartete Token
"END-OF-STATEMAENT". Zu den möglichen Token gehören: ")". SQLSTATE=42601
Das zugehörige Makro habe ich auf die wesentlichen Bestandteile gekürzt .
Dim i_ID As Integer
'
I_ID = 1
'
'DB2 Connection
Set Modul2.db2_cn = New ADODB.Connection
With Modul2.db2_cn
.ConnectionString = " Provider=IBMDADB2;User ID=Administrator;PWD=xxxxxxx;network adress = xxx.xx.x.xx;Data Source=RECRM_01;Location=xxxxxxxx:50000;Mode=ReadWrite;"
.Open
End With
Set mystream = New ADODB.stream
With mystream
' Festlegen, daß ein Binäres Format gelesen wird
.Type = adTypeBinary
.Open
End With
Set Modul2.cmd = New ADODB.Command
Modul2.cmd.ActiveConnection = Modul2.db2_cn
'
' GIF - Datei in Stream einlesen
'
mystream.LoadFromFile "c:\logo.gif"
'
' Daten in db2 wegschreiben
'
Modul2.cmd.CommandText = "INSERT INTO RECRM.CRM_TYREprofile" & _
"(ID,BilD)values" & _
"(" & CStr(i_ID) & _
",'" & _
mystream.Read & _
"')"
Modul2.cmd.Execute'
mystream.Close
'
' Ende
'
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Crosspost ( so funktioniert's)
11.01.2007 09:13:43
Krause
Fall's es jemanden interessiert,
so funktionierts
- beachte beim Set rs = CreateObject("ADODB.Recordset")
das unbedingt .CursorLocation = adUseClient
gesetzt werden muß sonst geht gar nichts
Dim i_ID As Integer
'
I_ID = 1
'
'DB2 Connection
Set Modul2.db2_cn = New ADODB.Connection
With Modul2.db2_cn
.ConnectionString = " Provider=IBMDADB2;User ID=Administrator;PWD=xxxxxxx;network adress = xxx.xx.x.xx;Data Source=RECRM_01;Location=xxxxxxxx:50000;Mode=ReadWrite;"
.Open
End With
Set mystream = New ADODB.stream
With mystream
' Festlegen, daß ein Binäres Format gelesen wird
.Type = adTypeBinary
.Open
End With
Set Modul2.cmd = New ADODB.Command
Modul2.cmd.ActiveConnection = Modul2.db2_cn
'
' GIF - Datei in Stream einlesen
'
mystream.LoadFromFile "c:\logo.gif"
'
' Daten in db2 wegschreiben
'
Set rs = CreateObject("ADODB.Recordset")
With rs
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockPessimistic
'.Open "SELECT * From xxxTabellexxx", Modul2.db2_cn
End With
'With rs
.AddNew
.Fields("ID") = i_ID
.Fields("BILD") = mystream.Read
.Update
End With
'
mystream.Close
'
' Ende
'
End Sub
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige