Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему запрос достает из блоб-поля только 32 килобайта? [D5, MSSQL 2000]


Nameless ©   (2002-07-29 09:53:00) 

см сабж


Прохожий   (2002-08-02 21:45:00) [1]

Акцесс дописывает свой заголовок в оле-поля


Black Cat   (2002-07-30 08:34:00) [2]


> А какой смысл?
>
> Через MemoryStream быдет быстрее в 100 раз и не придётся
> файл стирать потом


Это все понятно, смысл - просто проверить, кто виноват. Вообще-то с мемористреам не должно быть проблем, уменя следующий код работает как часы:

MS := TMemoryStream.Create;
try
TBlobField(F).SaveToStream(MS);
MS.Seek(soFromBeginning, 0);

case Gr_type of
1: begin
JPG := TJPEGImage.Create;
try
JPG.LoadFromStream(MS);
P.Assign(JPG);
finally
JPG.Free;
end;
end;
2: begin
GIF := TGIFImage.Create;
try
GIF.LoadFromStream(MS);
P.Assign(GIF);
finally
GIF.Free;
end;
end;


Nameless   (2002-07-29 17:20:00) [3]

>Black Cat
А какой смысл?

Через MemoryStream быдет быстрее в 100 раз и не придётся файл стирать потом.


Black Cat   (2002-07-29 16:05:00) [4]

Именно


Nameless   (2002-07-29 15:58:00) [5]

>Black Cat
Вы хотите блоб-поле выгрузить в файл, а потом отобразить в Image1 с помощью LoadFromFile ?


Black Cat   (2002-07-29 15:49:00) [6]

И все-таки, если попробовать TBlobField(Query3.FieldByName("photo")).SaveToFile и LoadFromFile соответственно?


Nameless   (2002-07-29 15:34:00) [7]

>Lida
строку
Query3->FieldByName("photo")->SaveToStream(ms);
следует читать так
TBlobField(Query3.FieldByName("photo")).SaveToStream(ms);
Прошу прощения


Nameless   (2002-07-29 15:28:00) [8]

>Black Cat
ДА!
select datalenght(field) from table
------
3995454 - т.е. 3 мега


>Nonam
если бы это мне помогло, Вам бы не пришлось запускать BDE Administrator.


С уважением,


Nonam   (2002-07-29 14:04:00) [9]

Если вы работаете через BDE, то вот одна из возможных причин:
BDE Administrator -> Databases -> MS SQL. В закладке Definition имеется параметр с названием BLOB SIZE. По умолчанию он равен 32. Что дальше делать, догадываетесь?


Nonam   (2002-07-29 14:01:00) [10]

BDE Administrator -> Databases -> MS SQL. В закладке Definition имеется параметр с названием BLOB SIZE. По умолчанию он равен 32. Что дальше делать, догадываетесь?


Black Cat   (2002-07-29 13:26:00) [11]

А есть уверенность что в блобе хранится >32Кб? А если попробовать через файл?


Nameless   (2002-07-29 12:46:00) [12]

два дня никто не отвечал...

Вот, пожалуйста сишный вариант:

void __fastcall TForm1::Button4Click(TObject *Sender)
{
Query3->Close();
Query3->SQL->Text = "select photo from table where id = 1 " ;
Query3->Open();
TMemoryStream *ms = new TMemoryStream;
// ms := TMemoryStream.Create;
Query3->FieldByName("photo")->SaveToStream(ms);
ms->Position = 0;
Image1->Bitmap->LoadFromStream(ms);
Query3->Close();
delete ms;
}


примерно так


Black Cat   (2002-07-29 12:15:00) [13]

Текст работы с Блобом глянуть можно?


ЮЮ   (2002-07-29 12:12:00) [14]

>у меня открываются все поля, кроме фотографий.
Что значит поле открылось? Как проявляется то,что оно не открылось?


Lida   (2002-07-29 12:04:00) [15]

Уважаемый Nameless!
Можно ответить вопросом на вопрос?
Надеюсь, у вас это не займет много времени,
а у меня его совсем мало, поэтому и обращаюсь
к вам.
Я создаю приложение D5, работающее с таблицами
из MSACCESS, у меня открываются все поля, кроме
фотографий. Не знаете, в чем причина?
Заранее благодарна!


Наверх

Титульная страница Поиск, карта сайта Написать письмо