Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
загрузка Blob через TIbSQL Найти похожие ветки
← →
GanibalLector © (2007-07-05 12:33) [0]использую TIbQuery для загрузки из blob картинки и последующего размещения ее в TImage.
Код:
LocalQuery.Close;
LocalQuery.SQL.Clear;
LocalQuery.SQL.Add(типа запрос);
LocalQuery.ParamByName("ID").Value:=некоторое значение;
LocalQuery.Open;
Str:=LocalQuery.CreateBlobStream(LocalQuery.FieldByName("PHOTO"),bmRead);
if(Str.Size>0) then
begin
JPG := TJPEGImage.Create;
try
JPG.LoadFromStream(Str);
JPG.DIBNeeded;
Image1.Picture.Bitmap.Assign(JPG);
finally
JPG.Free;
end;
end;
А хотелось использовать TIbSQL. Но ! У TIbSQL нет CreateBlobStream.
Как быть ?
Заранее спасибо !
← →
Ega23 © (2007-07-05 13:01) [1]
var Stream: TBlobStream;
begin
stream:=TBlobStream.Create(LocalQuery.FieldByName("PHOTO"),bmRead);
try
jpeg.loadFromStream(stream);
finally
stream.free;
end;
← →
GanibalLector © (2007-07-05 13:39) [2]2 Ega23 © (05.07.07 13:01) [1]
Не. Оно даже не скомпилируется : Incompatible types : TBlobField and TIbXSQLVAR
Пробовал так. Не помогло (AV) :
Str:=TBlobStream.Create(LocalSQL.FieldByName("PHOTO").AsPointer,bmRead);
где LocalSQL=TIbSQL
← →
GanibalLector © (2007-07-05 13:43) [3]Даже так AV:
Str:=TBlobStream.Create(TBlobField(LocalSQL.FieldByName("PHOTO")),bmRead);
← →
Ega23 © (2007-07-05 13:52) [4]
Str:=TBlobStream.Create(TBLOBField(LocalSQL.FieldByName("PHOTO")),bmRead);
Блин, ну когда же вы все начнёте Help читать, а????
← →
GanibalLector © (2007-07-05 14:05) [5]2 Ega23 © (05.07.07 13:52) [4]
:) Читаем. См.[3]
← →
GanibalLector © (2007-07-05 14:08) [6]Вот весь код(на всякий случай) :
LocalSQL.Close;
LocalSQL.SQL.Clear;
LocalSQL.SQL.Add("select photo from personnel_photos where user_id=:id");
LocalSQL.ParamByName("ID").Value:=Temp2;
LocalSQL.ExecQuery; Str:=TBlobStream.Create(TBlobField(LocalSQL.FieldByName("PHOTO")),bmRead);//AV
// загружаем картину
if(Str.Size>0) then
begin
JPG := TJPEGImage.Create;
try
JPG.LoadFromStream(Str);
JPG.DIBNeeded;
Image1.Picture.Bitmap.Assign(JPG);
finally
JPG.Free;
end;
end;
← →
Плохиш © (2007-07-05 14:16) [7]
procedure TfrmMain.dsPictureDataChange(Sender: TObject; Field: TField);
var
streamPreview: TMemoryStream;
begin
if Field = nil then
if Assigned(FfrmPreview) then
begin
streamPreview := TMemoryStream.Create;
try
TBlobField(dsPicture.DataSet.FieldByName("preview")).SaveToStream(streamPreview) ;
FfrmPreview.streamPreview := streamPreview;
finally
streamPreview.Free;
end;
end;
end;
← →
Ega23 © (2007-07-05 14:46) [8]А TIBSQL возвращает наборы данных?
← →
Novice (2007-07-06 09:22) [9]Если автор не против, сюда же впишу еще один вопрос по BLOB-полям.
Только начал изучать их, и столкнулся с такой проблемой.
Есть таблица из двух полей - одно Inc(+), второе - собственно BLOB (Paradox 7, Formatted Memo). В Blob храню файлы RTF.
код загрузки в BLOB:
var s : TStream;
begin
Table1.Locate("ID", Num, []);
s := TBlobStream.Create(Form1.Table1BlobData, bmRead);
RichEdit1.SaveToStream(s);
s.Free;
end;
код чтения:
var s : TStream;
begin
Table1.Locate("ID", Num, []);
s := TBlobStream.Create(Form1.Table1BlobData, bmRead);
RichEdit1.LoadFromStream(s);
s.Free;
end;
иногда при удалении одной из записей таблицы, содержащей BLOB-поле программа выдает сообщение об ошибке "Blob has been modified".
Скажите, что это за ошибка и в каких случаях она происходит?
← →
ЮЮ © (2007-07-06 10:21) [10]TIBXSQLVAR = class(TObject) и не имеет никакого лтношения к TBlobField. Так что AV неизбежен.
> У TIbSQL нет CreateBlobStream
Зато естьprocedure TIBXSQLVAR.SaveToStream(Stream: TStream);
var
bs: TIBBlobStream;
begin
bs := TIBBlobStream.Create;
try
bs.Mode := bmRead;
bs.Database := FSQL.Database;
bs.Transaction := FSQL.Transaction;
bs.BlobID := AsQuad;
bs.SaveToStream(Stream);
finally
bs.Free;
end;
end;
Неужели сложно самому создать экземпляр нужного наследника TStream и выполнить
LocalQuery.FieldByName("PHOTO").SaveToStream
← →
GanibalLector © (2007-07-06 14:04) [11]2 ЮЮ © (06.07.07 10:21) [10]
Спасибо, помогло.
Страницы: 1 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.03 c