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
Anzeige