В начало

BLOB-поля в таблице FarmPreparati

 

            Есть база данных «Apteka.gdb», созданная к слову говоря в СУБД «Interbase 6.5». В этой базе имеется таблица «FarmPreparati», в которой, в числе прочих есть пара BLOB-полей. Одно поле «Instrukciya» предназначено для хранения инструкции к фармпрепарату, другое поле «Kartinka» служит для хранения картинки с внешним видом стандартной упаковки препарата.

            Поскольку с BLOB-полями в самой СУБД «Interbase 6.5» работать не совсем удобно, нужно в среде разработки «Дельфи 7» написать приложение для редактирования BLOB-полей.

            Итак, загружаем «Дельфи 7», создаем новое приложение. На главную форму приложения с панелей компонентов перетаскиваем:

IBDataBase (с закладки InterBase);

IBTransAction (с закладки InterBase);

IBTable (с закладки InterBase);

DataSource (с закладки Data Access);

­– DBGrid (с закладки Data Controls);

DBMemo (с закладки Data Controls);

­– DBImage (с закладки Data Controls);

OpenPictureDialog (с закладки Dialogs);

– Button (с закладки Standart);

Рис. 1. Расположение компонентов на главной форме приложения

 

            Далее нужно связать компоненты между собой, установить некоторые параметры и написать немного кода.

Компонент

Параметр

Значение

IBDataBase1

DatabaseName

DefaultTransaction

C:\INTERBASE\APTEKA.GDB

TransAction1

IBTransAction1

DefaultDatabase

IBDatabase1

IBTable1

Database

TableName

TransAction

Active

IBDatabase1

FarmPreparati

TransAction1

True

DataSource1

DataSet

IBTable1

DBGrid1

DataSource

Options–dgRowSelect

DataSource1

True

DBMemo1

DataSource

DataField

DataSource1

Instrukciya

DBImage1

DataSource

DataField

DataSource1

Kartinka

Button1

onClick

if not OpenPictureDialog1.Execute then Exit;

IBTable1.Edit;

DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

IBTable1.Post;

 

            Что интересно, для того чтобы добавлять/изменять содержимое текстового BLOB-поля через компонент DBMemo1 достаточно выделить запись и произвести изменения непосредственно в компоненте DBMemo1. 

Ну а чтобы добавить картинку в BLOB-поле нужно уже постить данные через DataSet, в данном случае это IDTable1, т.е. надо нажать кнопку «Добавить картинку», выбрать картинку в диалоге, загрузить ее, и только потом отправить в базу. Причем диалог картинок «OpenPictureDialog1» загружает не все картинки, формат «jpg», например, изначально даже не видит. Хотя, если добавить в «uses» модуль «jpeg», то видит, но опять же в BLOB-поле рисунок не добавится, поэтому нужно добавлять картинки формата «bmp», а они понятное дело тяжелее.

Рис. 2. Результат добавления инструкции и изображения в BLOB-поля