Hallo zusammen,
ich versuche einen Dateianhang aus einen Dokument (CRMdoc) aus einer Datenbank, in eine andere Datenbank im Binärformat in einem Textfeld (doc.Firmenlogo) zu speichern, damit ich es später verwenden kann um als blob in eine sql-Datenbank zu schreiben.
Mein Ansatz sieht so aus:
Dim File As Variant
Dim Object As NotesEmbeddedObject
Dim tempimage As Variant
If (CRMdoc.hasitem("$FILE")) Then
Set File = CRMdoc.GetFirstItem("$FILE")
Set Object = CRMdoc.GetAttachment(File.values(0))
Call object.ExtractFile("c:\tmp\")
fileNum% = Freefile()
Open "c:\tmp\" & Object.Name For Binary As fileNum%
Do While Not Eof(fileNum%)
Get #fileNum%, ,tempimage
Loop
doc.Firmenlogo = tempimage
End If
Funktioniert so aber nicht....
Das Call object.ExtractFile("c:\tmp\")
wirft schon den Fehler, dass es C:\tmp nicht öffnen kann...?
Und selbst wenn ich ein Bild physikalisch auf die Platte lege und so versuche zu öffnen: Open "c:\tmp\bild.bmp" For Binary As fileNum%
, gibt mit das Get #fileNum%, ,tempimage
den Fehler, dass der Datentyp falsch ist ???
Wo liegt mein Denkfehler :-:
Grüße
Alex
OK. Ich hab es jetzt etwas anders gemacht...
Ich belasse das Bild im Dateisystem und hole mir sie dann erst beim Schreiben in die Datenbank.
Dafür schreibe ich sie dann so in einen Buffer:
Dim ns As NotesStream
Set ns = session.CreateStream
If Not ns.Open("c:\tmp\" &doc.Firmenlogo(0), "binary") Then
Call rt.AppendText("Öffnen der Datei - " &doc.Firmenlogo(0) & " - fehlgeschlagen")
Call rt.AddNewline(1,True)
Goto theend
End If
buffer = ns.Read()
Call ns.Close
Der buffer wird auch befüllt, aber wenn ich in in meinem sql-statement unterbringen will, bekomme ich als Fehler 'Falscher Datentyp'... >:(
In etwa so:
qry.SQL = "INSERT INTO xxx (spalte1, spalte2) VALUES (doc.feldwert(0), buffer)
Ich mein iss ja auch klar, weil er einen String erwartet....
Aber wie geht es richtig ???