Структурная схема базы данных

Перемещение по вкладкам осуществляется нажатием соответствующих кнопок.


В этой вкладке пользователь может увидеть полную информацию о той или иной книге, содержащейся в библиотеке.

В данной вкладке пользователь может вводить данные в базу. Рассмотрим компоненты данной вкладки:
Кнопка Добавить добавляет книгу в базу данных. Компоненты этой вкладки также отвечают за удаление записей из базы данных. При этом удаляются все записи данных удаляемой книги.
Выравнивание полей в базе данных происходят автоматически

В этой вкладке можно фильтровать набор данных соответствующий выбранным ячейкам (Radio Group), обозначен как Фильтрация.
Имеется возможность использовать несколько режимов фильтрации:
1. по фамилии
2. по стране
Аналогично производится сортировка данных.

Вкладка предназначена для осуществления запросов на основе языка SQL. Но упрощена для понимания всеми кругами пользователей.
На данной странице можно осуществлять статический запрос, а также динамический запрос по автору и году издания, выполнить его, щёлкнув по кнопке Выполнить запрос.
Ниже приведён исходный код программы
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <fstream>
using namespace std;
#include "test.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
string query;
int staticquery;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ADOTable2->Active=true;
ADOTable3->Active=true;
ADOQuery3->SQL->Add("Select * from Авторы");
ADOQuery3->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
ADOTable2->Active=false;
ADOTable3->Active=false;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
String pr="MSDataShape.1";
String dpr="Microsoft.Jet.OLEDB.4.0";
AnsiString tmp = ExtractFilePath(Application->ExeName) + "База\\Библиотека.mdb";
const String ConnStr = "Provider=%s;Data Provider=%s;Data Source=%s";
if (!ADOConnection1->Connected)
{
ADOConnection1->ConnectionString = Format (ConnStr,
ARRAYOFCONST((pr,dpr, tmp)));
ADOQuery1->Open();
}
if (!ADOConnection2->Connected)
{
ADOConnection2->ConnectionString = Format (ConnStr,
ARRAYOFCONST((pr,dpr, tmp)));
ADOQuery4->Open();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ADOQuery1->Append();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
AnsiString tabl;
ADOQuery2->Close();
ADOQuery2->SQL->Clear();
switch(ComboBox1->ItemIndex)
{
case 0: tabl = "select * from Cдали_книгу"; break;
case 1: tabl = "select * from Авторы"; break;
case 2: tabl = "select * from Заказы"; break;
case 3: tabl = "select * from Издательство"; break;
case 4: tabl = "select * from Информация_о_заказе"; break;
case 5: tabl = "select * from Клиенты"; break;
case 6: tabl = "select * from Книги"; break;
case 7: tabl = "select * from Телефонная_книга"; break;
}
ADOQuery2->SQL->Add(tabl);
ADOQuery2->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
if(RadioGroup1->ItemIndex==0)
ADOTable2->IndexFieldNames="Фамилия";
if(RadioGroup1->ItemIndex==1)
ADOTable2->IndexFieldNames="Страна";
if(RadioGroup1->ItemIndex==3)
ADOTable2->IndexFieldNames="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup2Click(TObject *Sender)
{
ADOTable2->Filtered=false;
if(RadioGroup2->ItemIndex==0)
ADOTable2->Filter="Фамилия='"+Edit1->Text+"'";
ADOTable2->Filtered=true;
if(RadioGroup2->ItemIndex==1)
ADOTable2->Filter="Страна='"+Edit2->Text+"'";
ADOTable2->Filtered=true;
if(RadioGroup2->ItemIndex==3)
ADOTable2->Filtered=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox4Change(TObject *Sender)
{
switch(ComboBox4->ItemIndex)
{
case 0: {
query = "Select Книга from Книги where Код_автора=:ZAPROS";
Edit3->Text = "1";
staticquery = 2;
Label7->Caption = "Введите код автора";
Button3->Caption = "Книги Пушкина"; } break;
case 1: {
query = "Select Книга from Книги where Год_издания=:ZAPROS";
Edit3->Text = "1970";
staticquery = 1980;
Label7->Caption = "Введите год издания";
Button3->Caption = "Книги 1980 года издания"; } break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ADOQuery3->Close();
ADOQuery3->SQL->Clear();
std::string test(query);
const char* x = test.c_str();
ADOQuery3->SQL->Add(x);
ADOQuery3->Parameters->ParamByName("ZAPROS")->Value=Edit3->Text;
ADOQuery3->Open();
DBGrid3->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
ADOQuery3->Close();
ADOQuery3->SQL->Clear();
std::string test(query);
const char* x = test.c_str();
ADOQuery3->SQL->Add(x);
ADOQuery3->Parameters->ParamByName("ZAPROS")->Value=staticquery;
ADOQuery3->Open();
DBGrid3->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox2Change(TObject *Sender)
{
switch(ComboBox2->ItemIndex)
{
case 0: DBEdit1->Text = "Л. Н. Толстой"; break;
case 1: DBEdit1->Text = "А. С. Пушкин"; break;
case 2: DBEdit1->Text = "Т.Г. Шевченко"; break;
case 3: DBEdit1->Text = "Эрих Мария Ремарк"; break;
case 4: DBEdit1->Text = "И.Я. Франко"; break;
case 5: DBEdit1->Text = "Фабрис Керервэ"; break;
case 6: DBEdit1->Text = "Александр Дюма"; break;
case 7: DBEdit1->Text = "М. Ю. Лермонтов"; break;
case 8: DBEdit1->Text = "Ф. М. Достоевский"; break;
case 9: DBEdit1->Text = "М. Горький"; break;
case 10: DBEdit1->Text = "Шопенгауер"; break;
case 11: DBEdit1->Text = "Лесков"; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox3Change(TObject *Sender)
{
switch(ComboBox3->ItemIndex)
{
case 0: DBEdit2->Text = "Россия"; break;
case 1: DBEdit2->Text = "Украина"; break;
case 2: DBEdit2->Text = "Германия"; break;
case 3: DBEdit2->Text = "Франция"; break;
case 4: DBEdit2->Text = "Шведция"; break;
case 5: DBEdit2->Text = "Англия"; break;
case 6: DBEdit2->Text = "Италия"; break;
case 7: DBEdit2->Text = "Швейцария"; break;
case 8: DBEdit2->Text = "США"; break;
case 9: DBEdit2->Text = "Китай"; break;
case 10: DBEdit2->Text = "Япония"; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
ADOQuery4->Append();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup3Click(TObject *Sender)
{
if(RadioGroup3->ItemIndex==0)
ADOTable3->IndexFieldNames="Книга";
if(RadioGroup3->ItemIndex==1)
ADOTable3->IndexFieldNames="Цена";
if(RadioGroup3->ItemIndex==3)
ADOTable3->IndexFieldNames="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup4Click(TObject *Sender)
{
ADOTable3->Filtered=false;
if(RadioGroup4->ItemIndex==0)
ADOTable3->Filter="Книга='"+Edit4->Text+"'";
ADOTable3->Filtered=true;
if(RadioGroup4->ItemIndex==1)
ADOTable3->Filter="Цена='"+Edit5->Text+"'";
ADOTable3->Filtered=true;
if(RadioGroup4->ItemIndex==3)
ADOTable3->Filtered=false;
}
//--------------------------------------------------------------------------
