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

Вниз

Записть файлов *.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;
Скачать: [xml.tar.bz2];

Наверх




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


1-1095967802
quickblack
2004-09-23 23:30
2004.10.10
Использование ActiveX


14-1095631738
jack128
2004-09-20 02:08
2004.10.10
Народ, а как в старших версиях Дельфей (6 и выше) с CodeExplorer?


3-1094697235
Sirus
2004-09-09 06:33
2004.10.10
Как извлечь метаданные базы IB/FB???


4-1093881744
Vladimyr
2004-08-30 20:02
2004.10.10
Состояние лотка CD-ROM





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