Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как занести изображение из Image в базу данных 
:(
    Опции темы
Sofia56
Дата 15.8.2013, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.8.2013
Где: Екатеринбург

Репутация: нет
Всего: нет



привет всем)
помогите пожалуйста сделать курсовой!!! плиз...
есть база (создана в парадоксе) в ней есть поле 'kart' в нем хранятся картинки.
добавляю картинку сначало в Image
Код

if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

 и тут возникает проблема..если все остально я заношу в базу так 
Код

with Table4.Fields do
begin
Table4.Edit;
Table4.Insert;
FieldByName('Izdat').AsString:=Trim(Edit1.Text);
FieldByName('Gorod').AsString:=Trim(Edit2.Text);
FieldByName('Adres').AsString:=Trim(Edit3.Text);
FieldByName('El_ad').AsString:=Trim(Edit4.Text);
FieldByName('Index').AsInteger:=StrToInt(Edit5.Text);
Table4.Post;

то как сохранить картинку в базу я не знаю.подскажите пожалуйста буду очень признательна
PM MAIL   Вверх
Poseidon
Дата 16.8.2013, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 3
Всего: 133



Картинки нужно сохранять как BLOB поля, при этом, для большинства баз, сначала необходимо создать запись, а потом уже обновлением этой записи внести в нее картинку. На сколько я помню Table после Post остается на добавленной записи, поэтому тебе всего-лишь нужно опять открыть базу для обновления (Edit) и загнать туда картинку.

Можно еще попробовать вот так:
Код

(Table4.FieldByName('Picture') as TBlobField).LoadFromFile(OpenPictureDialog1.FileName);

или вот так
Код

Image1.Picture.Bitmap.Assign(TBlobField(Table4.FieldByName('Picture')));


Все зависит от того, какая используется БД.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Данкинг
Дата 16.8.2013, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Код

procedure FileToBlob(BlobField: TField; FileName: string);
var S : TStream;
    FileS : TFileStream;
begin
  S:=BlobField.DataSet.CreateBlobStream(BlobField, bmReadWrite);
  FileS:=TFileStream.Create(FileName, fmOpenRead);
  try
    S.CopyFrom(FileS, FileS.Size);
  finally
    FileS.Free;
    S.Free;
  end;
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sofia56
Дата 16.8.2013, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.8.2013
Где: Екатеринбург

Репутация: нет
Всего: нет



к сожалению я понятия не имею что такое BLOB поля. поняла только что в них хранятся музыка, картинки и т.д....
Но что с ними делать я не знаю.как я поняла сначала их нужно создать,а потом объявить...а как это сделать????(((

PM MAIL   Вверх
Данкинг
Дата 16.8.2013, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Вообще зачем хранить картинки в самой БД? Логичнее оставлять их обычными файлами на винте, а в таблицу вносить ссылки на эти файлы, при необходимости загружая или же открывая дефолтной программой.
Цитата(Sofia56 @  16.8.2013,  19:01 Найти цитируемый пост)
поняла только что в них хранятся музыка, картинки и т.д....

Да любые файлы...
Цитата(Sofia56 @  16.8.2013,  19:01 Найти цитируемый пост)
как я поняла сначала их нужно создать,а потом объявить...

Где и зачем их объявлять?
Цитата(Sofia56 @  16.8.2013,  19:01 Найти цитируемый пост)
а как это сделать????(((

Средствами СУБД.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sofia56
Дата 16.8.2013, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.8.2013
Где: Екатеринбург

Репутация: нет
Всего: нет



программа выдает ошибку "необъявленный идентификатор: 'TBlobField'"
так как тогда быть нужно TBlobField объявлять или нет?
PM MAIL   Вверх
Sofia56
Дата 16.8.2013, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.8.2013
Где: Екатеринбург

Репутация: нет
Всего: нет



 
Код

 ps := TMemoryStream.Create;
  try
    Image1.Picture.Graphic.SaveToStream(ps);
    SaveToBlob(ps, Form2.Table4.FieldByName('Log'));
  finally
    ps.Free;

пробовала так делать но тогда ругается на SaveToBlob
PM MAIL   Вверх
Данкинг
Дата 16.8.2013, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Sofia56 @  16.8.2013,  23:42 Найти цитируемый пост)
программа выдает ошибку "необъявленный идентификатор: 'TBlobField'"

Где именно?
Цитата(Sofia56 @  17.8.2013,  00:06 Найти цитируемый пост)
но тогда ругается на SaveToBlob 

А процедура SaveToBlob где объявлена?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sofia56
Дата 16.8.2013, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.8.2013
Где: Екатеринбург

Репутация: нет
Всего: нет



заранее знаю что спрошу глупость но где ее объявлять?

PM MAIL   Вверх
Чучмек
Дата 17.8.2013, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 1
Всего: 41



Код

(Table1.FieldByName('Img') as TGraphicField).LoadFromFile;
(Table1.FieldByName('Img') as TGraphicField).LoadFromStream;
(Table1.FieldByName('Img') as TGraphicField).SaveToFile;
(Table1.FieldByName('Img') as TGraphicField).SaveToStream;


Вот простейший пример.
Таблица: img_table.db
Код

---------------------------
|Field Name|Type |Size|Key|
---------------------------
|    Id    |  +  |    | * | (Autoincrement)
--------------------------
|   Name   |  A  | 30 |   | (Alpha)
---------------------------
|   Img    |  G  |    |   | (Graphic)
---------------------------  
    
На форме
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBImage1: TDBImage;
    Button1: TButton;
Установки
   Table1.TableName = img_table.db;
   Table1.Active = true;
   DataSource1.DataSet = Table1;
   DBGrid1.DataSource = DataSource1;
   DBImage1.DataSource = DataSource1;
   DBImage1.DataField  = Img;
По нажатию кнопки "Добавить" (Button1) открывается диалоговое окно выбора файла. 
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form2.ShowModal = mrOk then
  begin
    Table1.Insert;
    Table1.FieldByName('Name').AsString:=form2.Edit1.Text;
    (Table1.FieldByName('Img') as TGraphicField).LoadFromFile(Form2.OpenDialog1.FileName);
    Table1.Post;
  end;
end;

Все.




Это сообщение отредактировал(а) Чучмек - 17.8.2013, 04:13

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  img.zip 764,42 Kb


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Данкинг
Дата 17.8.2013, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Sofia56 @  17.8.2013,  00:40 Найти цитируемый пост)
заранее знаю что спрошу глупость но где ее объявлять?

В программе. smile 
Кстати, какая СУБД всё же?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Larry9
Дата 24.1.2014, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 10.8.2010

Репутация: нет
Всего: -1



ИМХО выше ответили всё верно, не надо пихать мультимедиа файлы в поля БД. Лучше создать ссылки на файлы, а сами файлы хранить отдельно.

Иначе, если возникнет необходимость переноса БД на другой движок, наверняка замучаетесь с изменениями структуры.
PM MAIL   Вверх
Агрох
Дата 24.1.2014, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 176
Регистрация: 6.4.2013
Где: Москва

Репутация: 1
Всего: 6



Цитата(Sofia56 @  15.8.2013,  23:01 Найти цитируемый пост)
помогите пожалуйста сделать курсовой!!! плиз...


Советы давали как разработчику ПО. А тут надо всего то сделать курсач. У курсача, в отличии от разработки ПО, есть чёткая задача - научиться делать что либо конкретным способом, а не делать то же самое, но самым лучшим образом.
--------------------
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.