Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-1188554380
Chaser
2007-08-31 13:59
2007.11.18
WebBrowser1 - Установка значения в элементе Select


15-1192546038
oldman
2007-10-16 18:47
2007.11.18
Есть такая страна Мьянма. У них война, а они Интернет чинят... :)


15-1192367870
Finder
2007-10-14 17:17
2007.11.18
Существует ли вообще - русификатор Delphi 2006?


15-1192696869
Shlomo
2007-10-18 12:41
2007.11.18
С D7 проект перешёл в D2006 и стал требовать DsnDBCst.pas/dcu – у


11-1177267281
optimist
2007-04-22 22:41
2007.11.18
KOL + C++





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский