Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Вниз

Обновление BLOB-полей в ZeosDB   Найти похожие ветки 

 
phpist   (2004-01-22 19:13) [0]

Уважаемые Мастера! Может быть кто-нибудь работал с компонентами Zeos - тогда помогите. Проблема в том, что при попытке заменить JPEG изображение в поле BLOB (MySQL) все что было в этом поле просто стирается, а новая картинка не загружается. Причем, если это первая операция после создания строки в БД, то все отлично. Если пытаться вместо JPEG поместить BMP, то тоже все Ок. Размер поля проверял, пробовал действовать и через TMemoryStream, и через TBlobStream, и через параметры SQL-запроса пытался сделать UPDATE (как это описано на форуме Zeos) - никаких результатов. Если кто-нибудь что-нибудь знает - ПОМОГИТЕ.
P.S. использовать другие компоненты (не Zeos) не хотелось бы - уже огромный проект построен на его основе.


 
sniknik   (2004-01-22 19:33) [1]

есть разница JPEG и BMP, у JPEG-а нет битмапа к примеру. есть пример (писал когдато) "запихивания" их(JPEG/BMP) в базу, на ADO, но принципы должны быть одинаковы.
будеш разбиратся вышлю.


 
Nikolay M.   (2004-01-23 18:05) [2]

Покажи, как делаешь (хотя бы один вариант).
+ версию мускула и зеоса.
Не исключено, что и мускул может глючить.


 
phpist   (2004-01-24 15:51) [3]

To sniknik: Вышли пожалуйста - очень нужно.

To Nikolay M.: MySQL 3.23, Zeos 6.0.12, примеры кода ниже:

od - OpenDialog
qemp - ZQuery
blob-поле - "fotoemp"

procedure TfrmEmpCard.btnFotoClick(Sender: TObject);
begin
if od.Execute then begin
qemp.Edit;
foto.Picture.LoadFromFile(od.FileName);
qemp.Post;
end;
end;
Данный способ сработал один раз (как я описывал ранее)

procedure TfrmEmpCard.Button1Click(Sender: TObject);
var
ms: tmemorystream;
begin
if not od.Execute then exit;
foto.Picture.LoadFromFile(od.FileName);
qemp.SQL.Text:="update employees set fotoemp=:FOT where idemp="+qemp.Fields[0].AsString;
ms:=tmemorystream.Create;
try
foto.Picture.Bitmap.SaveToStream(ms);
ms.Seek(0, soFromBeginning);
qemp.ParamByName("FOT").LoadFromStream(ms, ftBlob);
qemp.ExecSQL;
finally
ms.Free;
end;
end;
Данный способ предложен на форуме Zeos, но он не работает (старая информация стирается а новая не записывается)

procedure TfrmEmpCard.BitBtn1Click(Sender: TObject);
var
bs: tstream;
fs: tfilestream;
begin
if not od.Execute then exit;
qemp.Edit;
fs:=tfilestream.Create(od.FileName, fmOpenRead);
fs.Seek(0, soFromBeginning);
bs:=qemp.CreateBlobStream(qemp.FieldByName("fotoemp"), bmReadWrite);
bs.CopyFrom(fs, fs.size);
qemp.Post;
qemp.ApplyUpdates;
bs.Free;
fs.Free;
end;

procedure TfrmEmpCard.BitBtn2Click(Sender: TObject);
var
fs: tfilestream;
begin
if not od.Execute then exit;
qemp.Edit;
fs:=tfilestream.Create(od.FileName, fmOpenRead);
fs.Seek(0, soFromBeginning);
(qemp.FieldByName("fotoemp") as tblobfield).LoadFromStream(od.FileName);
qemp.Post;
//fs.Free;
end;

Последних два метода выдают ошибку "Bitmap is not valid" при вызове Post

Может я чего-нибудь упускаю или недопонимаю?


 
sniknik   (2004-01-24 19:20) [4]

выслал (и не такое это простое дело по диалапу 400кб слать :), нет чтобы раньше когда на работе.
обрат внимание как там изображение из базы читается для отображения, и посмотри что будет если оба типа читать одинаково.
в одном случае как раз "Bitmap is not valid".


 
phpist   (2004-01-27 09:16) [5]

Всем спасибо.
Проблема оказалась в глючной версии zeos 6.0.12. Поставил 3 патча и все заработало.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
1-53528
zumo
2004-02-05 15:31
2004.02.17
Тулбар в IE


8-53648
Sam Stone
2003-10-16 21:21
2004.02.17
Рисование


1-53463
ЧупаЧупч
2004-02-06 14:59
2004.02.17
Ави файл


8-53658
Lizard
2003-10-15 14:53
2004.02.17
Как используя TMediaPlayer установить ползунок для прокрутки ?


7-53784
Dark Elf
2003-10-30 12:22
2004.02.17
Программирование кассовых аппаратов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский