Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизСохранение изображения в базе 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c