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

Вниз

Сохранение изображения в базе Access   Найти похожие ветки 

 
Lex_! ©   (2005-05-09 08:23) [0]

+ чтение изображения из файла и показ на форме.
Никто примерчик не подкинет?...


 
aus   (2005-05-09 08:42) [1]

http://delphimaster.net/view/3-1115511543/


 
Lex_! ©   (2005-05-09 09:03) [2]

Ms SQL Server это я бы сказал не Access и вроде как принцип немнога не такой должен быть?...


 
aus   (2005-05-09 12:06) [3]

Lex_! ©   (09.05.05 9:03) [2]
вроде как принцип

Как раз принцип одинаков для любой БД.


 
Lex_! ©   (2005-05-10 07:12) [4]

Но какой там должен быть тип у поля чтобы туда сохранить картинку??....

И еще всетки как его потом оттуда прочитать то?....


 
Lex_! ©   (2005-05-10 07:13) [5]

Всмысле на форме показать ... из базы..


 
sniknik ©   (2005-05-10 12:01) [6]

> Но какой там должен быть тип у поля чтобы туда сохранить картинку?
в самом аксессе в конструкторе это "поле OLE обьекта"
если же поле делать запросом (к примеру из дельфи-ado-jet, или тогоже аксесса) то тип OLEOBJECT или синоним один из - LONGBINARY, GENERAL или IMAGE.


 
Mr.F   (2005-05-10 14:43) [7]

Падождите шо так сложно.
Усё очень просто запихиваеш в ето поле путь к картинки в виде текста, потом считываеш когда тебе надобно и загружеш картинку находящейся по данному пути


 
Lex_! ©   (2005-05-11 04:01) [8]

Картинки в базе хранить нужно а не путь к картинке.
Спасибо всем. :)


 
AlexTregubov   (2005-05-12 09:30) [9]

Из БД:

   //Вывод фото
   try
     Bitmap:=TBitmap.Create;
     BS:=CreateBlobStream(FieldByName("Foto"), bmRead);
     if BS.Size>82 then begin
       BS.Seek(82, soFromBeginning);
       Bitmap.LoadFromStream(BS);
       imgFoto.Picture.Assign(Bitmap);
     end else imgFoto.Picture:=nil;
   finally
     Bitmap.Free;
     BS.Free;
   end;

Здесь 82 байта служебной информации - чтобы картинки можно было смотреть и через Access
В базу:

//Сохранение картинки в БД
procedure TfrmImageImport.spbSaveClick(Sender: TObject);
const
 //Сигнатура точечного рисунка для вставки через OLE
 //В начале
 sgntB=#21#28#51#0#2#0#0#0#17#0#14#0#20#0#37#0#255#255#255#255#210#238#247#229+
       #247#237#251#233#32#240#232#241#243#237#238#234#0#80#97#105#110#116#46#80+
       #105#99#116#117#114#101#0#1#5#0#0#2#0#0#0#7#0#0#0#80#66#114#117#115#104+
       #0#0#0#0#0#0#0#0#0#64#245#0#0;
 //В конце
 sgntE=#0#0#0#0#0#0#0#0#0#0#1#5#0#0#0#0#0#0#192#173#5#154;
var
 str: string;
 bmpSave: TBitmap;
 BS: TStream;
begin
 with Data.QueryMain do begin
   str:="Добавить изображние к записи о ""#13+
        FieldByName("Fam").AsString+" "+
        FieldByName("Imy").AsString+" "+
        FieldByName("Otchest").AsString+"" ?";
   if MessageBox(Handle, @str[1],"Внимание!", MB_YESNO or MB_ICONWARNING) = IDYES then begin
     Edit;
     try
       bmpSave:=TBitmap.Create;
       bmpSave.Width:=wR; bmpSave.Height:=hR; bmpSave.PixelFormat:=pf24bit;
       bmpSave.Canvas.CopyRect(Rect(0,0,wR,hR),bmp.Canvas,Ramka);
       BS:=CreateBlobStream(FieldByName("Foto"), bmWrite);
       BS.Write(sgntB,82);
       bmpSave.SaveToStream(BS);
       BS.Write(sgntE,22);
     finally
       bmpSave.Free;
       BS.Free;
     end;
     Post;      
   end;
 end;
end;


 
AlexTregubov   (2005-05-12 09:31) [10]

Из БД:

   //Вывод фото
   try
     Bitmap:=TBitmap.Create;
     BS:=CreateBlobStream(FieldByName("Foto"), bmRead);
     if BS.Size>82 then begin
       BS.Seek(82, soFromBeginning);
       Bitmap.LoadFromStream(BS);
       imgFoto.Picture.Assign(Bitmap);
     end else imgFoto.Picture:=nil;
   finally
     Bitmap.Free;
     BS.Free;
   end;

Здесь 82 байта служебной информации - чтобы картинки можно было смотреть и через Access
В базу:

//Сохранение картинки в БД
procedure TfrmImageImport.spbSaveClick(Sender: TObject);
const
 //Сигнатура точечного рисунка для вставки через OLE
 //В начале
 sgntB=#21#28#51#0#2#0#0#0#17#0#14#0#20#0#37#0#255#255#255#255#210#238#247#229+
       #247#237#251#233#32#240#232#241#243#237#238#234#0#80#97#105#110#116#46#80+
       #105#99#116#117#114#101#0#1#5#0#0#2#0#0#0#7#0#0#0#80#66#114#117#115#104+
       #0#0#0#0#0#0#0#0#0#64#245#0#0;
 //В конце
 sgntE=#0#0#0#0#0#0#0#0#0#0#1#5#0#0#0#0#0#0#192#173#5#154;
var
 str: string;
 bmpSave: TBitmap;
 BS: TStream;
begin
 with Data.QueryMain do begin
   str:="Добавить изображние к записи о ""#13+
        FieldByName("Fam").AsString+" "+
        FieldByName("Imy").AsString+" "+
        FieldByName("Otchest").AsString+"" ?";
   if MessageBox(Handle, @str[1],"Внимание!", MB_YESNO or MB_ICONWARNING) = IDYES then begin
     Edit;
     try
       bmpSave:=TBitmap.Create;
       bmpSave.Width:=wR; bmpSave.Height:=hR; bmpSave.PixelFormat:=pf24bit;
       bmpSave.Canvas.CopyRect(Rect(0,0,wR,hR),bmp.Canvas,Ramka);
       BS:=CreateBlobStream(FieldByName("Foto"), bmWrite);
       BS.Write(sgntB,82);
       bmpSave.SaveToStream(BS);
       BS.Write(sgntE,22);
     finally
       bmpSave.Free;
       BS.Free;
     end;
     Post;      
   end;
 end;
end;



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

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

Наверх




Память: 0.5 MB
Время: 0.052 c
1-1117111852
<Lelik>
2005-05-26 16:50
2005.06.14
про поиск компонентов


3-1115785989
erj
2005-05-11 08:33
2005.06.14
Удаление записи в RxMemoryDS


1-1116821409
jcrush
2005-05-23 08:10
2005.06.14
Создание динамических обьектов и работа с ними, определить имена


4-1114420136
}|{yk
2005-04-25 13:08
2005.06.14
Как зарегистрировать файлы для открытия их определенной программо


4-1114077383
lpVoid
2005-04-21 13:56
2005.06.14
Как сохранить ресурс в файл?