Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Записть файлов *.jpg в БД   Найти похожие ветки 

 
KapitanSerg ©   (2004-09-10 11:12) [0]

Уважаемые мастера! В таблице БД Access есть поле "Поле объекта OLE". В него необходимо из программы загрузить рисунок.
При загрузке рисунка из файла *.bmp все Ok! А при попытке загрузить рисунок из файла *.jpg или *.tif происходит ошибка "Bitmap image is not valid".
Пробовал использовать методы LoadFromFile и LoadFromStream
типов TGraphicField, TBlobField, TMemoField - ошибка повторяется.
Help My!
С уважением KapitanSerg


 
sniknik ©   (2004-09-10 11:24) [1]

для чего загружаеш? это важно если хочеш его прочесть. ;о) и чем хочеш прочестью

а вот с записью в базу из файла проблем не должно быть никаких.


 
KapitanSerg ©   (2004-09-10 11:32) [2]

>а вот с записью в базу из файла проблем не должно быть никаких.

Наверно я использовал не очень корректный термин. Конечно мне необходимо записать рисунок в БД. Но при вызове,например, метода GraphicField.LoadFromFile("MyFile.jpg") или BlobField.LoadFromFile("MyFile.jpg") происходит указанная ошибка!!!!


 
sniknik ©   (2004-09-10 12:10) [3]

> GraphicField.LoadFromFile("MyFile.jpg") или BlobField.LoadFromFile("MyFile.jpg") происходит указанная ошибка!!!!
даже странно, как это люди в это поле (OLE) умудряются вордовские документы и выполняемые файлы пихать... ;о)
этот тип поля в основном не для картинок, их просто можно там хранить, так что указанная ошибка на сохранении....

может всетаки не там присходит?
может всетаки покажеш как делаеш?


 
KapitanSerg ©   (2004-09-10 12:18) [4]

Уважаемый sniknik!
С каких это пор файл *.jpg стал вордовским или выполняемым?
В Help для Access указано что "Поле объекта OLE" предназначено для хранения рисунков! Впрочем, я пробовал использовать и поле типа "Memo" (я говорю именно о типах поддерживанмых Access!) результат тотже.
Если я не прав, то подскажите какой тип данных необходимо использовать в БД Access для хранения изображений!!!!!


 
sniknik ©   (2004-09-10 12:28) [5]

> "Поле объекта OLE" предназначено для хранения рисунков!
у нас наверное хелп разный
Поле объекта OLE

Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозапись или другие данные в двоичном формате), связанный или внедренный в таблицу Microsoft Access.

До 1 Гбайт (ограничивается объемом диска).

риунок это "одно из", и проверять в движке такое поле на "рисуночность" глупо.

нет, поле верное. реализация неверная.


 
KapitanSerg ©   (2004-09-10 12:35) [6]

Вот код процедуры с использованием LoadFromStream:

procedure TDocWin.btAddClick(Sender: TObject);
var
 FS: TFileStream;
begin
 with DataModul do
 if sD.Execute then {sD - файловый диалог}
 Begin
   if not (tbD.State in [dsInsert, dsEdit]) then tbD.Insert;
   FS := TFileStream.Create(sD.FileName, fmOpenRead);
   try
     tbDDC.LoadFromStream(FS);   {В этом месте возникает ОШИБКА!}
   finally
     FS.Free;
   end;
   tbDIM.AsInteger := tbMID.AsInteger;
   tbD.Post;
 end;
end;


 
sniknik ©   (2004-09-10 12:44) [7]

> {В этом месте возникает ОШИБКА!}
ошибка вообще или "Bitmap image is not valid" как ты говорил?

хорошо поставить перед загрузкой
FS.Position:= 0;

p.s. типы используемых обектов?


 
KapitanSerg ©   (2004-09-10 13:00) [8]

> FS.Position:= 0;

Насколько я знаю после создания потока указатель (Pоsition) и так устанавливается в 0.

> ошибка вообще или "Bitmap image is not valid" как ты говорил?

Да, именно "Bitmap image is not valid"! При этом, если  в sD-диалоге выбирается файл *.bmp, то ошибки не возникает и все работает без замечаний.

>p.s. типы используемых обектов?

Критичен только тип tbDDC. Как указано в вопросе, я пробовал использовать для него типы TGraphicField, TBlobField, TMemoField.
Ошибка при этом одна и таже.
Тип tbD : TADOTable;


 
sniknik ©   (2004-09-10 13:10) [9]

дело наверняка в типе. попробуй так
TBlobField(tbD.FieldByName("imfield")).LoadFromFile("file.jpg");


 
KapitanSerg ©   (2004-09-10 13:14) [10]


> TBlobField(tbD.FieldByName("imfield")).LoadFromFile("file.jpg");

Зачем принудительно преобразовывать тип поля к TBlobField если оно и так типа TBlobField?
Да и потом, с *.bmp усё !Ok


 
sniknik ©   (2004-09-10 14:05) [11]

> Зачем принудительно преобразовывать тип поля к TBlobField если оно и так типа TBlobField?
незачем, просто ты так и не сказал точно какой у тебя тип поля, это чтобы быть уверенным.

> Да и потом, с *.bmp усё !Ok
и я кажется догадался почему.
вопрос
> sniknik ©   (10.09.04 11:24) [1]
> для чего загружаеш? это важно если хочеш его прочесть. ;о) и чем хочеш прочестью
который ты с успехом проигнорировал.
именно в эту тему
у тебя в программе есть DBImage который привязан к этому полю, это он ошибку выдает, уже на чтении.
(вопрос на самом деле должен быть про запись/чтение)


 
KapitanSerg ©   (2004-09-10 14:11) [12]


> у тебя в программе есть DBImage который привязан к этому
> полю, это он ошибку выдает, уже на чтении

Есть такая фигня!
Счас попробую удаить DBImage!


 
KapitanSerg ©   (2004-09-10 14:16) [13]

Удалил DBImage стала записывать!
Уважаемый sniknik! А не подскажите ли теперь какой компонент лучше использовать для визуализации этого изображения, записанного в БД.
А, вообще, СПАСИБО!


 
sniknik ©   (2004-09-10 14:36) [14]

просто Image, но т.к. запись придется анализировать при загрузке в Image то тогда такое чтение (из файла в базу) становится весьма и весьма неудобным. (проще записывать в базу jpg из Image.Picture.Graphic, тогда он также легко "ложится" обратно)

это если хочется оботись без промежуточных файлов, а то просто записать в файл из базы и читать из имаджа.

кстати для tif вроде бы нет стандартного компанента.


 
Pat ©   (2004-09-10 15:10) [15]

KapitanSerg ©   (10.09.04 14:16) [13]
Удалил DBImage стала записывать!


uses jpeg


 
KapitanSerg ©   (2004-09-10 15:15) [16]


> Pat ©   (10.09.04 15:10) [15]

Не понял! Поясните тупому!


 
sniknik ©   (2004-09-10 16:15) [17]

для использования формата jpeg подключи модуль в uses программы.



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

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.055 c
14-1095420158
Nikolay M.
2004-09-17 15:22
2004.10.10
Никому инспектор в отдел кадров в Москве не требуется?


9-1086686588
Delpher_Gray
2004-06-08 13:23
2004.10.10
Обработко сообщений от мыши в консольной проге, D3D


1-1095875434
Akoli
2004-09-22 21:50
2004.10.10
пишу в Excel - не записывается


3-1094800361
KapitanSerg
2004-09-10 11:12
2004.10.10
Записть файлов *.jpg в БД


1-1096200942
Гость
2004-09-26 16:15
2004.10.10
TstatusBar. Изменение цвета.