- •Содержание
- •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. Задания к базам данных
7. 2. Задание
1. Создайте приложение, позволяющее просматривать все поля из таблицы Country c использованием компонента TQuery.
2. Создайте приложение, позволяющее выполнять запросы, загружая их с диска, т.е. запросы записаны в виде текстовых файлов.
3. Создайте приложение с использованием параметрического запроса.
4. Создайте приложение с использованием параметрического запроса с несколькими связанными переменными. В приложении в двух списках Размер и Вес устанавливаются значения, в соответсвии с которыми запрос выбирает животных вес и размер которых превышает установленные значения в списках.
5. Создайте приложение, позволяющее выполнить запрос, возвращающий список таблиц БД и открывает для просмотра выбранную в списке таблицу.
7. 3. Ход выполнения работы
Задание №1
1. Откройте новое приложение.
2. В меню File выберите команду New. На вкладке New выберите DataModule. Поместите на модуль компоненты TQuery, TDataSource.
3. В свойство DatabaseName объекта TQuery установите значение используемого алиаса, в качестве значения свойства SQL введите оператор SQL, например, Select * from Country. В свойстве Name введите, например, CountryQuery.
4. Присвойте свойству Active компонента TQuery значение True.
5. В свойстве DataSet компонента TDataSource выберите из списка имя запроса (CountryQuery).
6. На форму поместите компонент TDBGrid TDBNavigator. Чтобы источник данных был доступен, включите в основную форму модуль данных, выполнив команду Include Unit Hdr.. из менюFile.
7. Установите значения в свойствах DataSource для сетки и для навигатора.
8. Для навигатора, используя свойство VisibleButtons, оставьте кнопки для перемещения на первую, следующую, предыдущую и последнюю запись.
9. Запустите приложение на выполнение.
Задание№2
1. Отройте новое приложение.
2. Откройте окно модуля данных. Поместите на него компоненты TQuery, TDataSourse. Присвойте модулю данных имя DMod.
3. Установите в свойстве Name компонента TQuery значение CountryQuery.
4. Установите в свойстве DataSet компонента TDataSource значение CountryQuery, в свойстве Name –значение CountrySource.
|
|
|
|
5. В основную форму поместите компонент TPanel. На панели разместите пять кнопок компонента TBitBtn с соответствующими именами :bbLoad, bbLoad2, bbpickA, bbPickB, bbPickC и подписями: Load, Load2, A, B, C. Чтобы поместить на кнопку графическое изображение надо воспользоваться свойством Glyph, щелкнуть в конце строки свойства и открыть окно Picture Editor, затем в окне редактора нажать кнопку Load, загрузить нужное изображение из папки Borland Shared\Images\Buttons.
6. Ниже разместите объект TDBGRid и объект TOpenDialog.
7. В свойстве DataSource объекта TDBGrid выберите из списка значение DMod->CountryQuery.
8. Для объекта TOpenDialog в свойстве Filter с помощью редактора введите имя фильтра SQL и сам фильтр - *.txt (или любое расширение, которое вы будете использовать для текстовых файлов с инструкцией SQL) В результате в списке будут отображаться только файлы с расширением *.txt.
9. С помощью программы Блокнот создайте два текстовых файла с расширением .txt :
Select * from country where Name like '%ia';
Select * from country where name like '%c%';
10. В модуле данных в редакторе кода поместите методы RunQuery RunQuery2, позволяющие загрузить файлы с диска.
void TDMod::RunQuery(TStringList *StringList)
{
CountryQuery->Close();
CountryQuery->SQL = StringList;
CountryQuery->Open();
}
void TDMod::RunQuery2(AnsiString S)
{
CountryQuery->Close();
CountryQuery->SQL->Clear();
CountryQuery->SQL->LoadFromFile(S);
CountryQuery->Open();
}
Функция LoadFromFile позволяет с помощью одной команды загрузить весь текстовый файл в процессе выполнения программы.
11. Также в модуле данных поместите метод выбора второй строки запроса в зависимости от выбранной кнопки : А, В, С.
void TDMod::SelectItems(AnsiString S)
{
CountryQuery->Close();
CountryQuery->SQL->Clear();
CountryQuery->SQL->Add("Select * from Country");
switch (S[1])
{
case 'A':
CountryQuery->SQL->Add("where name like 'A%'");
break;
case 'B':
CountryQuery->SQL->Add("where name like 'B%'");
break;
case 'C':
CountryQuery->SQL->Add("where name like 'C%'");
break;
}
CountryQuery->Open();
}
//******
Поместите объявление функций в заголовочный файл в раздел public
void SelectItems(AnsiString S);
void RunQuery(TStringList *StringList);
void RunQuery2(AnsiString S);
12. Создайте процедуры обработки события нажатия кнопок. Для кнопки bbLoad:
void __fastcall TForm1::bbLoadClick(TObject *Sender)
{
if (OpenDialog1->Execute())
{
TStringList *StringList = new TStringList();
StringList->LoadFromFile(OpenDialog1->FileName);
DMod->RunQuery(StringList);
StringList->Free();
}
}
Для кнопки bbLoad2:
void __fastcall TForm1::bbLoad2Click(TObject *Sender)
{
if (OpenDialog1->Execute())
DMod->RunQuery2(OpenDialog1->FileName);
}
Для трех кнопок : A, B, C создайте одну и ту же процедуру нажатия кнопки:
void __fastcall TForm1::bbPickAClick(TObject *Sender)
{
TComponent *C = (TComponent *)Sender;
switch (C->Tag)
{
case 65:
DMod->SelectItems("A");
break;
case 66:
DMod->SelectItems("B");
break;
case 67:
DMod->SelectItems("C");
break;
}
}
13. Запустите приложение. Убедитесь в работоспособности приложения.
Задание №3
1. Откройте новое приложение.
2. Введите в модуль данных (DMod) компоненты TQuery, TDataSource.
3. В форму компоненты TDBGrid и TTabSet. Компонент TTabSet расположите в нижней части формы, установите в свойстве Align aBottom. Для компонента TDBGrid в свойстве Align установите значение aClient.
4. Свяжите элементы управления данными и присвойте свойству запроса DatabaseName значение псевдонима.
5. Заполните вкладки с буквами алфавита от A до Z , если будете использовать таблицу Country, или буквами русского алфавита , если будете использовать таблицу Country_r.
В свойстве Tabs щелкните в конце строки и вызовите окно редактора. Последовательно введите символы, которые будут отображаться на вкладках.
6. Введите в свойстве SQL компонента TQuery следующую строку:
Select * from Country where Name like :NameStr.
7. В модуль данных поместите метод
void TDMod::NewParamQuery(AnsiString S)
{
CountryQuery->Close;
CountryQuery->Prepare;
CountryQuery->ParamByName(“NameStr”)->AnsiString=S;
CountryQuery->Open();
}
8. В форме создайте две процедуры обработки события OnChange компонента TTabSet и события OnShow компонента TForm.
void __fastcall TForm1::FormShow(TObject *Sender)
{
DMod->NewParamQuery("A%");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TabSet1Change(TObject *Sender, int NewTab,
bool &AllowChange)
{
AnsiString S(UpperCase(TabSet1->Tabs->Strings[NewTab]) + "%");
DMod->NewParamQuery(S);
}
//---------------------------------------------------------------------------
9. Запустите приложение на выполнение. Убедитесь в работоспособности приложения.
Задание №4
1. Откройте новое приложение. Скопируйте в свой каталог таблицу Animals (создайте псевдоним , если он не существует) .
2. Поместите на модуль данных (DMod) компоненты TQuery (AnimalsQuery), TDataSource.
3. Для объекта TQuery установите в свойстве DatabaseName значение используемого алиаса, в свойстве Name значение AnimalsQuery, в свойстве SQL введите с помощью редактора:
Select * from Animals
where
Animals.”Size” > :Size and
Animals.”Weight” > :Weight
4. Для объекта DataSource установите в свойстве Name значение AnimalsDataSource, в свойстве DataSet выберите из списка AnimalsQuery.
5. Поместите на форму компонент TDBGrid, 2 компонента TListBox, TBBImage. Разместите их как показано на рисунке
6. Также поместите на форму два компонента Label, чтобы ввести надписи Size и Weight.
7. Включите модуль данных в основную форму.
8. Для объекта TDBImage установите значение свойства DataSource , выбрав из списка, и введите в свойство DataField значение BMP (так называется поле в таблице).
9. Для объекта TDBGrid определите источник данных, выбрав из списка.
10. В модуле данных (DMod) поместите метод для выполнения условия для двух операторов:
void TDMod::RunQuery(int Box1, int Box2)
{
AnimalsQuery->Close();
AnimalsQuery->Prepare();
AnimalsQuery->Params->Items[0]->AsInteger=Box1;
AnimalsQuery->Params->Items[1]->AsInteger=Box2;
AnimalsQuery->Open();
}
11. Для формы определите события OnCreate:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i;
AnsiString S;
for (i=0; i<40; i++)
{
S=i;
ListBox1->Items->Add(S);
ListBox2->Items->Add(S);
}
ListBox1->ItemIndex=0;
ListBox2->ItemIndex=0;
}
Также для формы определите событие OnShow:
void __fastcall TForm1::FormShow(TObject *Sender)
{
DMod->RunQuery(0,0);
}
12. В форме для обоих списков для события OnClick поместите следующую процедуру:
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
DMod->RunQuery( ListBox1->Items->Strings[ListBox1->ItemIndex].ToInt(),
ListBox2->Items->Strings[ListBox2->ItemIndex}.ToInt());
}
13. Запустите приложение на выполнение. Убедитесь в работоспособности приложения.
Задание №5
1. Откройте новое приложение
2. Поместите на форму следующие компоненты, как показано на рисунке:
TListBox, TQuery, TDataSource, TDBGrid, TMainMenu, (TMenuItem)
3. Определите свойства для объектов:
TQuery –в свойстве DatabaseName установите алиас BCDEMOS, в свойстве Name установите значение FormatQuery, в свойстве SQL select * from :Table
TDataSource –в свойстве Name –dsFormat, в свойстве DataSet –FormatQuery.
TDBGrid – в свойстве DataSource –dsFormat, в свойстве Align –значение alClient
TList – установите в свойстве Align –значение alLeft
4. Для компонента TMainMenu установите в свойстве Items StringTrick1
5. Для события OnCreate формы создайте процедуру. в которой формируется список таблиц БД и этим списком заполняется объект TListBox:
void __fastcall TForm::FormCreate(TObject *Sender)
{
Session->GetTableNames(FormatQuery->DatabaseName, “ “, False, False, ListBox1->Items);
}
6. Затем необходимо создать метод обработки события ListBox1.OnClick:
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
AnsiString S = ListBox1->Items->Strings[ListBox1->ItemIndex];
S = Format("Select * from %s", OPENARRAY(TVarRec, (S)));
Caption = S;
FormatQuery->Close();
FormatQuery->SQL->Clear();
FormatQuery->SQL->Add(S);
FormatQuery->Open();
}
Добавьте также код метода GetQuery:
AnsiString GetQuery(AnsiString S1, AnsiString S2, int Value)
{
return Format("Select * from %s where %s = %d", OPENARRAY(TVarRec, (S1, S2, Value)));
}
По событию OnClick:
void __fastcall TForm1::StringTrick1Click(TObject *Sender)
{
Caption = GetQuery("Customer", "CustNo", 42);
}
6. Запустите приложение. Убедитесь в его работоспособности.