Hallo,<BR>
<BR>
Ich versuche verzweifelt über reines ADO Text-Dokumente in ein BLOB-Feld eines MSSQL Servers zu bringen.<BR>
Das BLOB-Feld ist als data type "Text" deklariert.<BR>
Ich kann, dank der vielen Beispiele hier im Forum, ohne Probleme BLOB's vom Typ Image beschreiben und wieder auslesen. Aber wenn ich etwas ähnliches für Text-BLOB's mache, geht's schief.<BR>
Mein Programm sieht so aus (Der einzige Unterschied zu Image BLOB's ist die Deklaration des Stream-Typs als adTypeText.Ich habe aber schon alles mögliche andere auch ausprobiert):<BR>
<BR>
try<BR>
//Stream initialisieren:<BR>
ADOStream:=coStream.Create;<BR>
ADOStream.Type_:=adTypeText; <--- Ich denke ich brauche das wegen Text-BLOB. adTypeBinary geht jedenfalls auch schief<BR>
ADOStream.Open(EmptyParam,adModeUnknown,adOpenStre amUnspecified,'','');<BR>
ADOStream.LoadFromFile(OpenDialog1.FileName);<BR>
//Leeres Recordset-Objekt erzeugen:<BR>
OleCheck(coCreateInstance(CLASS_RecordSet, nil, CLSCTX_ALL, IID__RecordSet, RecordSet));<BR>
RecordSet.CursorLocation:=adUseClient;<BR>
RecordSet.Open('SELECT * FROM Tabelle1',ConnString, adOpenStatic, adLockOptimistic, adCmdText);<BR>
//Einfügen:<BR>
RecordSet.Fields[4].Value:=ADOStream.Read(adReadAll);<BR>
RecordSet.Update(EmptyParam,EmptyParam);<BR>
finally<BR>
ADOStream.Close;<BR>
ADOStream:=nil;<BR>
RecordSet.Close;<BR>
RecordSet:=nil;<BR>
end;<BR>
<BR>
Die Fehlermeldung lautet: "Der Vorgang ist in diesem Zusammenhang nicht zugelassen" wenn der Stream gelesen werden soll ("RecordSet.Fields[4].Value:=ADOStream.Read(adReadAll);").<BR>
<BR>
Wer kann mir meinen Denkfehler zeigen?<BR>
Zur Not könnte ich die Text-Dokumente natürlich auch in Image-Felder stecken, aber wenn der SQL Server schon Text anbietet, möchte ich es eigentlich auch verwenden.<BR>
<BR><BR>
Vielen Dank im Voraus,<BR>
<BR>
Peter
<BR>
Ich versuche verzweifelt über reines ADO Text-Dokumente in ein BLOB-Feld eines MSSQL Servers zu bringen.<BR>
Das BLOB-Feld ist als data type "Text" deklariert.<BR>
Ich kann, dank der vielen Beispiele hier im Forum, ohne Probleme BLOB's vom Typ Image beschreiben und wieder auslesen. Aber wenn ich etwas ähnliches für Text-BLOB's mache, geht's schief.<BR>
Mein Programm sieht so aus (Der einzige Unterschied zu Image BLOB's ist die Deklaration des Stream-Typs als adTypeText.Ich habe aber schon alles mögliche andere auch ausprobiert):<BR>
<BR>
try<BR>
//Stream initialisieren:<BR>
ADOStream:=coStream.Create;<BR>
ADOStream.Type_:=adTypeText; <--- Ich denke ich brauche das wegen Text-BLOB. adTypeBinary geht jedenfalls auch schief<BR>
ADOStream.Open(EmptyParam,adModeUnknown,adOpenStre amUnspecified,'','');<BR>
ADOStream.LoadFromFile(OpenDialog1.FileName);<BR>
//Leeres Recordset-Objekt erzeugen:<BR>
OleCheck(coCreateInstance(CLASS_RecordSet, nil, CLSCTX_ALL, IID__RecordSet, RecordSet));<BR>
RecordSet.CursorLocation:=adUseClient;<BR>
RecordSet.Open('SELECT * FROM Tabelle1',ConnString, adOpenStatic, adLockOptimistic, adCmdText);<BR>
//Einfügen:<BR>
RecordSet.Fields[4].Value:=ADOStream.Read(adReadAll);<BR>
RecordSet.Update(EmptyParam,EmptyParam);<BR>
finally<BR>
ADOStream.Close;<BR>
ADOStream:=nil;<BR>
RecordSet.Close;<BR>
RecordSet:=nil;<BR>
end;<BR>
<BR>
Die Fehlermeldung lautet: "Der Vorgang ist in diesem Zusammenhang nicht zugelassen" wenn der Stream gelesen werden soll ("RecordSet.Fields[4].Value:=ADOStream.Read(adReadAll);").<BR>
<BR>
Wer kann mir meinen Denkfehler zeigen?<BR>
Zur Not könnte ich die Text-Dokumente natürlich auch in Image-Felder stecken, aber wenn der SQL Server schon Text anbietet, möchte ich es eigentlich auch verwenden.<BR>
<BR><BR>
Vielen Dank im Voraus,<BR>
<BR>
Peter
Comment