[H-L-L.ru]

Форма входа

Меню сайта

Categories
Программы с GUI [8]
Создание программ с графическим интерфейсом пользователя

Главная » Статьи » C++ Builder 6 - GUI » Программы с GUI

Базы данных Microsoft Access в C++ Builder 6 с использованием ADO. Часть 1
Данная статься применима и к более старшим версиям C++ Builder.

 Своё первое знакомство с БД я начал с использования из комплекта поставки билдера баз данных Paradox.
Как оказалось, они не зря носят такое название. Случалось очень много зависаний, некорректная работа и появление непонятных ошибок.
После того, как я стал использовать MS Access, создалось ощущение, что я пересел с запорожца на мерседес.

Перейдем непосредственно к процессу разработки. Мы будем использовать MS Access 2003 и ниже. Я использую 2007, но сохраняю в формате 2002-2003.
Запускаем его, сочетанием Ctrl+N создаем новую базу данных, сохраняем и открываем её. Заполняем нужные поля и выбираем их тип данных.
(более подробно о создании БД в Acces рекомендую прочитать в интернете). Для примера я создам БД со списком учащихся.



Все поля имеют тип данных "Текстовый",поле "Фотография" имеет тип данных "Поле объекта OLE".
Нажимаем Ctrl+S и вводим название нашей таблицы(их можно создавать несколько). Теперь можно все закрыть.



Запускаем билдер, сохраняем весть проект(Save Project As...). Путь не должен содержать русских имен. Размещаем на форме компоненты. С вкладки ADO(а в более старших версиях с dbGo) ADOTable и ADOConnection.



С вкладки Data Access компонент DataSource. С вкладки Data Controls компоненты DBGrid и DBNavigator.
Щелкаем по DataSource1 и в DataSet выбираем ADOTable1. Щелкаем по ADOTable1 и в свойстве Connection выбираем ADOConnection1.
Дважды щелкаем по ADOConnection1 и нажимаем кнопку Build... .Выбираем как на картинке и нажимаем "Далее". И нажимаем два раза "Ок".





Теперь, в Object Inspector ставим Connected в true, в User Name напишем "Admin", поле пароля оставим пустым.
Чтобы больше не повторять эту процедуру, установите LoginPrompt в false.
Щелкаем по DBGrid  и в DataSource выбираем DataSource1. Тоже самое повторяем и для DBNavigator.
Щелкаем по ADOTable1 в TableName выбираем нашу таблицу. Устанавливаем Active в true.
Если все сделано правильно, то у вас должно получиться вот так:



Щелкаем дважды по DBGrid, в появившемся окошечке нажимаем на кнопку "Add All Fields".

Щелкая по полям,можно задать им другие имена для отображения, свойство FieldName и изменить ширину - Width.
Свойство Visible поля "Фотография" можно установить в false,т.к. это Blob-поле и отображать его придется через другие компоненты.



Добавим на форму две кнопки Button, компонент Image и диалог OpenPictureDialog.



Рекомендую установить свойство Center Image1 и свойство Proportional в true.
Код кнопки "Загрузить фото":

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if (OpenPictureDialog1->Execute())
  {
    AnsiString CurrentFile = OpenPictureDialog1->FileName;
    Image1->Picture->LoadFromFile(CurrentFile);
  }
}

Код кнопки "Сохранить фото":

void __fastcall TForm1::Button2Click(TObject *Sender)
{
       ADOTable1->Edit();
       TMemoryStream* strm = new TMemoryStream();
       Image1->Picture->Graphic->SaveToStream(strm);
       ((TGraphicField*)Form1->ADOTable1->FieldByName("Фотография"))->LoadFromStream(strm);
       delete strm;
       Form1->ADOTable1->Post();
}

В обрабочик события OnCellClick (щелчок по ячейке) DBGrid пишем следующий код:

void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
        if(!(TBlobField*)ADOTable1->FieldByName("Фотография")->IsNull){
       if(!Image1->Visible)Image1->Visible=true;
       TMemoryStream* strm = new TMemoryStream;
       TJPEGImage *ptJpg=new TJPEGImage;
        ((TGraphicField*)ADOTable1->FieldByName("Фотография"))->SaveToStream(strm);
        strm->Seek(0,0);
        if (*(Word*)strm->Memory == 0xD8FF)Image1->Picture->Graphic=ptJpg;
        Image1->Picture->Graphic->LoadFromStream(strm);
        delete strm;
        delete ptJpg;
      }else
      Image1->Visible=false;
}

Для загрузки jpeg изображений добавим в начало

#include "jpeg.hpp"

Попробуем сделать несколько записей. Скомпилируем и запустим программу.





В этой статье я осмотрел самые основные аспекты создания БД в MS Access. В следующей статье я расскажу о упорядочивание записей,фильтрации и поиску по БД,а так же ряду других мелочей.

Базы данных Microsoft Access в C++ Builder 6 с использованием ADO. Часть 2


Источник: БД,база данных Access,ADO,изображение в бд

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Полная версия сайта