Liebe Leute,
ich will ein excel macro von Oracle auf postgresql portieren und scheitere
an dem Versuch einen Blob in die DB zu laden. Der unten stehende
Code gibt mir bei
rs2(0).AppendChunk ByteData()
den Fehler:
operation is not allowed in this context.
Da ich weder VBA noch database expert bin, braeuchte ich wirklich dringend Hilfe.
Sub Exportsql()
Dim FileLength As Long
Dim Numblocks As Integer
Dim ByteData() As Byte
Dim SourceFile As Integer
Dim cn As ADODB.connection
Set cn = New ADODB.connection
With cn
.ConnectionString = "DSN=postgres;pwd=epcuser"
.Open
End With
Set ret = cn.Execute("DROP TABLE IF EXISTS mytesttable")
Set ret = cn.Execute("CREATE TABLE mytesttable (id integer, myblob bytea)")
Set ret = cn.Execute("INSERT INTO mytesttable VALUES (1, null)")
str2 = "Select myblob from mytesttable where id = 1"
Dim rs2 As ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs2.CursorType = adOpenKeyset
rs2.LockType = adLockOptimistic
rs2.Open str2, cn
ReDim ByteData(2)
ByteData(0) = 17
ByteData(1) = 32
rs2(0).AppendChunk ByteData()
rs2.Update
End Sub
Mates,
Umstellung auf einen ADODB stream geht besser, aber noch immer habe ich
ein Problem. Offensichtlich darf der byteA blob nur eine sehr kleine Groesse
haben (ca. 1kb), sonst bekomme ich den folgenden Fehler:
"Multiple step OLE DB operation generated error."
Hat jemand einen Tipp fuer mich. Vielen Dank,
Stephan
-----------------------------------8<---------------------------------
Dim rs2 As ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs2.CursorType = adOpenKeyset
rs2.LockType = adLockOptimistic
rs2.Open str2, cn
Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
workbookPath = ActiveWorkbook.Path
mstream.LoadFromFile "test.fps"
rs2.Fields(bytea_field(0)).Value = mstream.Read
rs2.Update
mstream.Close
Geändert von Phonon (26.11.2009 um 12:17 Uhr)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen