Blob
BlobStreamFrom := Copier.CreateBlobStream(Copier.FieldByName(sBlobFieldName),bmRead);
BlobStreamTo := insertRec.CreateBlobStream(insertBlob.FieldByName(sBlobFieldName), bmReadWrite);
BlobStreamTo.CopyFrom(BlobStreamFrom,BlobStreamFrom.Size);
insertBlob.Post;
insertBlob : TIBDataSet;
Copier : TIBQuery;
BlobStreamTo, BlobStreamFrom : TStream;
После Commit-а транзакции в поле базы ничего нет.
Цитата:
Originally posted by Stanly
Почему не работает такой код
BlobStreamFrom := Copier.CreateBlobStream(Copier.FieldByName(sBlobFieldName),bmRead);
BlobStreamTo := insertRec.CreateBlobStream(insertBlob.FieldByName(sBlobFieldName), bmReadWrite);
BlobStreamTo.CopyFrom(BlobStreamFrom,BlobStreamFrom.Size);
insertBlob.Post;
insertBlob : TIBDataSet;
Copier : TIBQuery;
BlobStreamTo, BlobStreamFrom : TStream;
После Commit-а транзакции в поле базы ничего нет.
Почему не работает такой код
BlobStreamFrom := Copier.CreateBlobStream(Copier.FieldByName(sBlobFieldName),bmRead);
BlobStreamTo := insertRec.CreateBlobStream(insertBlob.FieldByName(sBlobFieldName), bmReadWrite);
BlobStreamTo.CopyFrom(BlobStreamFrom,BlobStreamFrom.Size);
insertBlob.Post;
insertBlob : TIBDataSet;
Copier : TIBQuery;
BlobStreamTo, BlobStreamFrom : TStream;
После Commit-а транзакции в поле базы ничего нет.
Вообще, CreateBlobStream по умолчанию возвращает NULL.
Попробуйте сделать вот так (синтаксис сишный):
TMemoryStream *ms = new TMemoryStream;
TBlobField *bl = (TBlobField *)
Copier->FieldByName(sBlobFieldName);
bl->SaveToStream(ms);
insertRec->LoadFromStream(ms);
delete ms;