- •Содержание
- •4. 5. Контрольные вопросы....................................................................44
- •7. 1. Краткие теоретические сведения..................................................59
- •8. 1. Краткие теоретические сведения...................................................70
- •Введение
- •1. 1. Главное окно
- •2. Лабораторная работа №1 Тема: Ввод и вывод
- •2. 1. Экранная форма (Form)
- •2. 1. 1. Таблица свойств (Form)
- •2. 2. Кнопка (Button)
- •2. 2. 1. Таблица свойств для Button
- •2. 3. Однострочный редактор (Edit)
- •2. 3. 1. Таблица свойств для Edit
- •2. 4. Контрольные вопросы
- •2. 5. Задания к лабораторной работе
- •3. Лабораторная работа №2 Тема: Программирование алгоритмов линейной структуры
- •3. 1. Классификация типов данных
- •3. 2. Константы
- •“Это начало строки, ” “а это ее продолжение”
- •“Это начало строки, а это ее продолжение”
- •3. 3. Задания к лабораторной работе
- •4. Лабораторная работа №3 Тема: Программирование алгоритмов циклической структуры
- •4. 1. Условный оператор if... Else
- •4. 1. 1. Об условиях в операторе if
- •4. 2. Цикл while
- •4. 3. Цикл do while
- •4. 4. Цикл for
- •4. 5. Контрольные вопросы
- •5. Лабораторная работа №4 Тема: Работа с массивами
- •5. 1. Контрольные вопросы
- •5. 2. Задания к лабораторной работе
- •6. Лабораторная работа №5
- •Изучение утилит Database Desktop (dbd), bd Administrator Использование компонентов tDataModule, tTable, tDataSet
- •6. 1. Краткие теоретические сведения
- •6. 2. Модуль данных
- •6. 3. Доступ к содержимому поля
- •6. 4. Поиск записей
- •6. 5. Фильтры
- •6. 6. Задание
- •6. 7. Ход выполнения работы
- •6. 8. Контрольные вопросы
- •7. Лабораторная работа №6 Тема: Программирование объекта tQuery
- •7. 1. Краткие теоретические сведения
- •7. 2. Задание
- •7. 3. Ход выполнения работы
- •7. 4. Контрольные вопросы
- •8. Лабораторная работа №7 Тема: Создание связей между таблицами
- •8. 1. Краткие теоретические сведения
- •8. 2. Задание
- •8. 3. Ход выполнения работы
- •8. 4. Контрольные вопросы
- •9. Лабораторная работа №8 Тема: Работа с полями
- •9. 1. Краткие теоретические сведения
- •9. 2. Задание
- •9. 3. Ход выполнении работы
- •9. 4. Контрольные вопросы
- •10. Задания к базам данных
6. 7. Ход выполнения работы
Задание №1
1. Создайте на диске каталог
2. Запустите утилиту BDE Administrator. При активной вкладке Databases в меню Object выберите команду New.
В появившемся окне в раскрывающемся списке выбирают тип создаваемой БД. Для таблиц Paradox оставьте без изменений STANDARD и нажмите кнопку ОК.
В левом поле окна администратора БД появится строка с именем STANDARD, измените это имя, например, на lab_1.
В правом поле указаны параметры БД. Измените параметр PATH, который указывает маршрут доступа к каталогу , в котором располагается БД. Запомните определение псевдонима, выбрав команду Apply.
Закройте окно администратора.
3.
|
|
|
|
Скопируйте таблицы-примеры БД С++Builder из папки Data: Biolife.db, Customer.db, Orders.db, Items.db, Parts.db , включая все индексные файлы, файлы мемо этих таблиц или скопируйте всю папку Data в созданную папку.
4. Запустите утилиту Database Desktop. После запуска утилиты установите умалчиваемый псевдоним. Для этого в меню File выберите команду Working Directory. В раскрывающемся списке выберите имя псевдонима.
5. Откройте таблицу Customer, выбрав команду Tables ->Restructure. Просмотрите типы данных полей, размер, используемый индекс. Закройте окно DBD.
6. Запустите C++Builder. Поместите на форму объект TTable, TDataSource (вкладка Data Access), TDBGrid. (вкладка Data Controls).
7. Теперь задайте свойства объекта TTable. Задайте в качестве значения свойства DatabaseName используемый псевдоним.
8. Задайте в качестве значения свойства TableName имя таблицы (выберите из раскрывающегося списка в конце строки), например, Customer. Установите значение Name tblCustomer, True свойству Active
9. Подключите свойство DataSet элемента управления TDataSource к tblCustomer (выберите из списка) .
10. Подключите свойство DataSource объекта TBDGrid к DataSource1 в окне Инспектора объектов на вкладке Свойства.
11. Добавьте к форме элемент управления TDBNavigator. Чтобы связать этот элемент управления с циклом, нужно присвоить его свойству DataSource значение DataSource1.
12. С помощью свойства Visible Buttons элемента TDBNavigator отключите все функциональные возможности, кроме переход к первой записи, следующей, предыдущей, последней.
Сохраните приложение в отдельном каталоге. Запустите приложение на выполнение. Убедитесь , что происходит перемещение по записям.
Задание №2
1. Откройте новое приложение.
2. Выберите в меню File команду New и щелкните по компоненту Data Module, присвойте значениеDMod свойству Name.
3. Сохраните программу. Запишите модуль Unit1 под именем Main.cpp и Unit2 – под именем DMod1.cpp.
4. Щелкните левой кнопкой мыши по форме Form1, откройте меню File, выберите команду IncludeUnit Header . В диалоговом окне выберите DMod1 и щелкните на кнопке ОК.
Этот способ позволяет автоматически вставить директиву #include
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
#include "Dmod1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
5. Поместите в окне DMod компоненты TTable, TDataSource.
6. Определите свойства этих объектов (см. задание №1). Свойству TableName присвойте значение BioLife.
7. Щелкните правой кнопкой мыши на объекте TTable и выберите пункт контекстного меню Fields Editor (Редактор полей). Щелкните правой кнопкой на Fields Editor и откройте диалоговое окно Add Fields (Добавление полей). Убедитесь в том, что в этом поле выбраны все поля. Щелкните на кнопке ОК.
8. Теперь Fields Editor содержит список всех полей таблицы BioLife. Перетащите эти поля на форму.Вид формы может выглядеть как на рис. 2
9. Добатьте в форму компонент TDBNavigator.
10. Сохраните приложение и запустите на выполнение.
Задание №3
1. Откройте приложение, созданное в задании №1.
2. В нижней части формы поместите четыре кнопки. Задайте последовательно для каждой из кнопок следующие значения для свойства Name: vValue, bAsString, bAsInteger, bAsFloat. ; для свойства Caption: Value, As String, As Integer, As Float.
3. В окне Инспектора Объектов перейдите на вкладку Events(события). Для каждой кнопки сформируйте процедуры обработки нажатия кнопки. Например, :
void __fastcall TForm1::bValueClick(TObject *Sender)
{
ShowMessage(tblCustomer->FieldByName("TaxRate")->Value;
}
void __fastcall TForm1::bAsStringClick(TObject *Sender)
{
ShowMessage(tblCustomer->FieldByName("TaxRate")->AsString);
}
void __fastcall TForm1::bAsIntegerClick(TObject *Sender)
{
int i = tblCustomer->FieldByName("TaxRate")->AsInteger;
ShowMessage(static_cast<AnsiString>(i));
}
void __fastcall TForm1::bAsFloatClick(TObject *Sender)
{
float f = tblCustomer->FieldByName("TaxRate")->AsFloat;
ShowMessage(static_cast<AnsiString>(f));
}
4. Сохраните приложение и запустите на выполнение. Сделайте выводы.
Задание №4
1. Запустите утилиту Database Desktop (DBD
2. Создайте таблицу Country_r со следующими полями: Name, Capital (столица), Kontinent(континент). Для поля Name установите свойства key (+). Это будет первичным индексом. Проиндексируйте по полю Kontinent . Для этого в списке Table properties выберите Secondary Indexes нажмите кнопку Define и установите индекс по нужному полю. Индекс сохраните. Введите данные на русском языке.Закройте таблицу.
3. Откройте новое приложение. Поместите на форму компоненты TTable, TDataSource, TDBrid. Свяжите компонент TTable c таблицей Country_r. Определите все остальные свойства так, чтобы в сетке появились записи.
4. Поместите на форме в верней части панель, задайте ее свойству Align значение alTop, а для объекта TDBGrid установите в свойстве Align значение alClient.
5. На панель поместите компонент TEdit и создайте для него событие OnChange со следующим программным кодом:
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
Table1->FindNearest(OPENARRAY(TVarRec,(Edit1->Text)));
}
Если нецелесообразно осуществлять поиск по основному индексу файла, можно воспользоваться вторичным индексом и задать имя используемого индекса в качестве свойства IndexName текущей таблицы. Старый индекс можно сохранить во временной переменой, например:
void TDMod::Country_rSearch(AnsiString S)
{
AnsiString Temp(tblCountry_r->IndexName->IndexName);
tblCountry_r->IndexName=”Имя_втор_индекса”;
tblCountry_r->FindNearest(OPENARRAY)TVarRec, (S)));
tblCountry_r->IndexName=Temp;
}
6. Запустите программу. В процессе ввода значения в элементе управления Edit1 автоматически выполняется пошаговый поиск.
Задание №5
1. Откройте новое приложение. Поместите на форму компоненты TTable, TDataSource, TDBGrid. Свяжите компонент TTable c таблицей Country_r или Country. Свяжите компоненты. Для компонента TTable определите свойство Name tblCountry (чтобы можно было использовать приведенный ниже код) и в свойстве Active оставьте значение False
2. Поместите на форме в верней части панель -компонент TPanel, задайте ее свойству Align значение alTop, а для объекта TDBGrid установите в свойстве Align значение alClient.
3. Для события формы OnCreate поместите код открытия таблицы:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
tblCountry->Open();
}
4. Поместите на панель объект TCheckBox и задайте значение Filter в свойстве Captiоn, в свойстве Name установите значение FFilter. Свяжите следующий метод с событием OnClick для флажка:Для этого перейтите на вкладку Events инспектора объектов и щелкните событие OnClick
void __fastcall TForm1::FFilterClick(TObject *Sender)
{
tblCountry->Filtered=FFilter->Checked;
}
5. Перейдите на вкладку Events (События) объекта TTable и свяжите следующую программу с событием OnFilterRecord:
void __fastcall TForm1::tblCountryFilterRecord(TDataSet *DataSet,
bool &Accept)
{
Accept=tblCountry->FieldByName("Continent")->AsString==DBEdit1->Text;
}
6. Чтобы поле TDBEdit содержало значение текущей записи, нужно установить в свойстве DataSource DataSource1, в свойстве DataField выберите из списка в конце строки значение Continent.
7. Поместите на панель кнопку TButton. Установите в свойстве Name значение FFindNext, а в свойстве Caption значение Find Next. Для события OnClick поместите код :
void __fastcall TForm1::FFindNextClick(TObject *Sender)
{
tblCountry->FindNext();
}
8. Запустите программу на выполнение. Проверьте действие фильтра.