Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2009, 14:08   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не поленись ты заглянуть в хелп увидел бы там пример
Код:
var

  T: TBlobField;
begin
  SQLDataSet1.Close;
  T := TBlobField.Create(SQLDataSet1);
  T.FieldName := 'Images';
  T.Name := SQLDataSet1.Name + T.FieldName;
  T.Index := SQLDataSet1.FieldCount;
  T.DataSet := SQLDataSet1;
  SQLDataSet1.FieldDefs.UpDate;
  SQLDataSet1.Open;

end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2009, 14:14   #12
hoba
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 40
По умолчанию

Я там был но видимо плохо умею им пользоваться. Не подскажешь где там в справке это найти.

Нашел уже, но пока не пойму что такое SQLDataSet1

Последний раз редактировалось mihali4; 29.11.2009 в 14:07.
hoba вне форума Ответить с цитированием
Старый 06.10.2009, 14:19   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Нашел уже, но пока не пойму что такое SQLDataSet1
Полагаю, что происходит вставка запросом.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.10.2009, 14:23   #14
hoba
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 40
По умолчанию

Я тоже так подумал. При том всем это еще компонент, который я не нашел на панели делфи.
hoba вне форума Ответить с цитированием
Старый 06.10.2009, 14:49   #15
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Можно так попробывать:
1)Записываем.
Код:
var
  st: TMemoryStream;
begin
 st := TMemoryStream.Create();
 with TOpenDialog.Create(nil) do
   try
     if Execute then
       st.LoadFromFile(FileName);
     st.Position:=0;
     ADOQuery1.Insert;
     TBlobField(ADOQuery1.FieldByName('img')).LoadFromStream(St);
     if ADOQuery1.Modified then
       ADOQuery1.Post;
   finally
      Free;
      st.Free;
   end;
2) Читаем.
Код:
var
  st: TMemoryStream;
begin
  st := TMemoryStream.Create();
  try
    ADOQuery1.First;
    TBlobField(ADOQuery1.FieldByName('img')).SaveToStream(st);
    st.Position := 0;
    Image1.Picture.Bitmap.LoadFromStream(st);
  finally
    st.Free;
  end;
Проверял на Access.
Evgeniy26 вне форума Ответить с цитированием
Старый 07.10.2009, 08:56   #16
hoba
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 40
По умолчанию

Не получается. Думаю что парадокс для этого не создан. Попробую разобраться в другой какой-нибудь базе.
hoba вне форума Ответить с цитированием
Старый 07.10.2009, 09:03   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Попробую разобраться в другой какой-нибудь базе.
Парадокс парадоксальный. Возьми Акцесс. Там это точно можно, и тип поля там BLOB помоему.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2009, 09:06   #18
hoba
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 40
По умолчанию

Акцесс не прикалывает. Сегодня вычитал немного про Firebird. Думаю оно.
hoba вне форума Ответить с цитированием
Старый 07.10.2009, 11:01   #19
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

В Access использовал тип поля - "Поле МЕМО".
Evgeniy26 вне форума Ответить с цитированием
Старый 29.11.2009, 00:52   #20
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А вы еще не скачали себе мой DFaq?
Тогда привожу оттуда:
Цитата:
Загрузка изображений в Blob-поля

Имеется несколько способов загрузки изображения в BLOB-поле таблицы dBASE или Paradox. Три самых простых метода включают в себя:
- копирование данных из буфера обмена Windows в компонент TDBImage, связанный с BLOB-полем
- использование метода LoadFromFile компонента TBLOBField
- использование метода Assign для копирования объекта типа TBitmap в значение свойства Picture компонента TBDBImage.

Первый способ, когда происходит копирование изображения из буфера обмена, вероятно, наиболее удобен в случае, когда необходимо добавить изображение в таблицу при использовании приложения конечным пользователем. В этом случае компонент TDBImage используется в роли интерфейса между BLOB-полем таблицы и изображением, хранящимся в буфере обмена. Метод PasteFromClipboard компонента TDBImage как раз и занимается тем, что копирует изображение из буфера обмена в TDBImage. При сохранении записи изображение записывается в BLOB-поле таблицы.

Поскольку буфер обмена Windows может содержать данные различных форматов, то желательно перед вызовом метода CopyFromClipboard осуществлять проверку формата хранящихся в нем данных. Для этого необходимо создать объект TClipboard и использовать его метод HasFormat, позволяющий определить формат хранящихся в буфере данных. Имейте в виду, что для создания объекта TClipboard вам необходимо добавить модуль Clipbrd в секцию uses того модуля, в котором будет создаваться экземпляр объекта.

Вот исходный код примера, копирующий содержание буфера обмена в компонент TDBImage, если содержащиеся в буфере данные имеют формат изображения:
procedure TForm1.Button1Click(Sender: TObject);
var
C: TClipboard;
begin
C := TClipboard.Create;
try
if Clipboard.HasFormat(CF_BITMAP) then
DBImage1.PasteFromClipboard
else
ShowMessage('Буфер обмена не содержит изображения!');
finally
C.Free;
end;

Второй способ заполнения BLOB-поля заключается в загрузке изображения непосредственно из файла в BLOB-поле. Данный способ одинаково хорош как при создании приложения (формирование данных), так и при его использовании.

Вот пример, демонстрирующий работу метода LoadFromFile компонента TBLOBField с именем Table1Bitmap (поле с именем Bitmap связано с таблицей TTable, имеющей имя Table1):
procedure TForm1.Button2Clicck(Sender: TObject);
begin
Table1Bitmap.LoadFromFile(
'c:\delphi\images\splash\16color\co nstruc.bmp');
end;

Третий способ для копирования содержимого объекта типа TBitmap в свойство Picture компонента TDBImage использует метод Assign. Объект типа TBitmap может быть как свойством Bitmap свойства-объекта Picture компонента TImage, так и отдельного объекта TBitmap. Как и в методе, копирующем данные из буфера обмена в компонент TDBImage, данные изображения компонента TDBImage сохраняются в BLOB-поле после успешного сохранения записи.

Ниже приведен пример, использующий метод Assign. В нашем случае используется отдельный объект TBitmap. Для помещения изображения в компонент TBitmap был вызван его метод LoadFromFile.

procedure TForm1.Button3Click(Sender: TObject);
var
B: TBitmap;
begin
B := TBitmap.Create;
try
B.LoadFromFile('c:\delphi\images\sp lashh\16color\athena.bmp');
DBImage1.Picture.Assign(B);
finally
B.Free;
end;
В следующем посте - как извлечь.

Последний раз редактировалось mihali4; 29.11.2009 в 00:54.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сохранять изображения из разных вкладок? blackstersl Мультимедиа в Delphi 4 27.07.2009 13:02
Работа Delphi7 с базой данных paradox valetip БД в Delphi 2 15.05.2009 17:47
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
проблема внедрения в базу paradox файлов word и jpg ghost_7_7_7 БД в Delphi 1 30.01.2008 16:44
Работа баз данных Paradox в сетке Killer_djon БД в Delphi 2 20.12.2007 20:24