|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
по поводу изображений в БД
Всем доброго времени суток. У меня есть БД на Access в нём имеется поле ('Картинка') в котором загружено изображение формата bmp. Требуется вытащить его от туда и поместить в Image1. Я пробовал разными способами на всегда вылазиет ошибка
Bitmap image is not valid помогите разобраться в чём дело. Способы которым я пытался сделать это: 1) Код:
Image1.Picture.Assign(frDM.ADOQuery1.FieldByName('Картинка')) Код:
var ImgStream:TMemoryStream; frDM.ADOQuery1.SQL.Text:='SELECT * FROM Table1'; frDM.ADOQuery1.Open; frDM.ADOQuery1.First; ImgStream:=TMemoryStream.Create; (frDM.ADOQuery1.FieldByName('Картинка') as TBlobField).SaveToStream(ImgStream); ImgStream.Position:=0; Image1.Visible:=True; ImgStream.Free; |
Этот пользователь сказал Спасибо IceExecutioner за это полезное сообщение: | ||
Admin (01.10.2013)
|
#2
|
||||
|
||||
Все намного проще. Для отображения картинок из базы данных используйте компонент DBImage. Укажите для него DataSource и DataField и все.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
|
#4
|
||||
|
||||
Где-то я читал, что акцесс при записи картинки добавляет несколько байт от себя и это мешает нормально картинки читать в TDBImage.
И наоборот, картинка вставленная извне нехочет отображается акцесом. Здесь наблюдается очень похожая картина. Так-что видимо вам придется заново обновить данные, но уже из под Дельфи. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Цитата:
А можно поподробнее, как вставить картинку из под Делфи в Access? |
#6
|
||||
|
||||
вот вам примерчик, как это можно сделать:
Код:
unit Unit8; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, ExtCtrls, DBCtrls, StdCtrls, DB, Grids, DBGrids, DBClient; type TForm8 = class(TForm) DataSource1: TDataSource; DBImage1: TDBImage; DBGrid1: TDBGrid; Button1: TButton; DBNavigator1: TDBNavigator; OpenPictureDialog1: TOpenPictureDialog; ClientDataSet1: TClientDataSet; ClientDataSet1ID: TAutoIncField; ClientDataSet1Photo: TBlobField; ClientDataSet1FileName: TStringField; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form8: TForm8; implementation {$R *.dfm} procedure TForm8.Button1Click(Sender: TObject); begin if not OpenPictureDialog1.Execute then Exit; ClientDataSet1.Append; ClientDataSet1.FieldValues['FileName'] := OpenPictureDialog1.FileName; DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); ClientDataSet1.Post; end; end. DFM-файл Код:
object Form8: TForm8 Left = 0 Top = 0 Caption = 'Form8' ClientHeight = 289 ClientWidth = 537 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object DBImage1: TDBImage Left = 368 Top = 8 Width = 161 Height = 161 DataField = 'Photo' DataSource = DataSource1 TabOrder = 0 end object DBGrid1: TDBGrid Left = 8 Top = 8 Width = 354 Height = 257 DataSource = DataSource1 TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] Columns = < item Expanded = False FieldName = 'ID' Visible = True end item Expanded = False FieldName = 'Photo' Visible = False end item Expanded = False FieldName = 'FileName' Width = 272 Visible = True end> end object Button1: TButton Left = 416 Top = 175 Width = 75 Height = 25 Caption = 'Load' TabOrder = 2 OnClick = Button1Click end object DBNavigator1: TDBNavigator Left = 8 Top = 269 Width = 200 Height = 18 DataSource = DataSource1 TabOrder = 3 end object DataSource1: TDataSource DataSet = ClientDataSet1 Left = 152 Top = 80 end object OpenPictureDialog1: TOpenPictureDialog Left = 432 Top = 72 end object ClientDataSet1: TClientDataSet Active = True Aggregates = <> Params = <> Left = 96 Top = 80 Data = { 900000009619E0BD010000001800000003000000000003000000900002494404 0001000000010007535542545950450200490008004175746F696E6300055068 6F746F04004B0000000100075355425459504502004900070042696E61727900 0846696C654E616D65010049000000010005574944544802000200640001000C 4155544F494E4356414C55450400010001000000} object ClientDataSet1ID: TAutoIncField FieldName = 'ID' end object ClientDataSet1Photo: TBlobField FieldName = 'Photo' end object ClientDataSet1FileName: TStringField FieldName = 'FileName' Size = 100 end end end Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |