Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VP_LAB_BD_DELPHI_RUS.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.93 Mб
Скачать

6.1.16. Контрольные вопросы

1 Что такое база данных, таблица базы данных?

2 Какова структура приложений, работающих с базой данных?

3 Каково назначение BDE (BorlandDatabaseEngine - машины баз данных)?

4 Каково назначение системы BDEAdministrator?

5 Как установить драйвер языка с помощью системы BDEAdministrator?

6 Каковы назначение и основные возможности системы DataBaseDesktop (DBD)?

7 Как создать новый псевдоним и файл конфигурации базы данных с помощью сис­темы DBD?

8 Как разработать структуру записи таблицы базы данных с помощью системы DBD?

9 Каково назначение первичного и вторичных индексов таблицы базы данных?

10 Как определить основной и вторичный индексы таблицы базы данных?

11 Поясните назначение и основные свойства компонентов типа ТТаblе и TQuery.

12 Поясните назначение и основные свойства компонента типа TDataSource.

13 Поясните назначение и основные свойства компонента типа TDBNavigator.

14 Поясните назначение и основные свойства компонентов типа TDBGrid, TDBEdit, TDBImage.

15 Как настроить цвет фона и шрифт заголовков и данных столбцов компонента типа TDBGrid?

16 Как заполнить компонент типа TDBImage?

17 Как сформировать вычисляемое поле и поместить его в компонент типа TDBGrid?

18 Как настроить компонент типа TQuery со статическим запросом для отбора данных в таблицу типа TDBGrid?

19 Как настроить компонент типа TQuery с динамическим запросом - по условию, которое формируется в процессе выполнения приложения? Как передать факти­ческое значение в оператор SELECT компонента?

20 Как задать сортировку по одному из индексов?

21 Как вычислить сумму элементов столбца таблицы при непосредственном доступе к ее записям?

6.2. Приложение для соединения данных двух таблиц 1:1

6.2.1. Цель и задание на выполнение работы

Целью является разработка приложения, с помощью которого осуществляет­ся выбор данных из двух таблиц, не связанных на этапе разработки приложения Таблицы содержат данные о студентах:

- в 1-й таблице - сведения о студентах;

- во 2-й таблице - сведения об успеваемости студентов.

В обеих таблицах в качестве основного индекса используется поле Fio - с фамилией и инициалами студента. Надо разработать приложение, в котором при нажатии кнопки формируется набор данных, в котором в каждой строке содер­жатся все сведения о каждом студенте: из первой и второй таблиц.

Для выполнения работы и подготовки к ответам на контрольные вопросы на­до проработать материал разделов 9.1.4.4. и 9.5.2.3.

6.2.2. Процесс разработки приложения

Для разработки приложения создать каталог с именем, например, SV_STUD. В нем - подкаталог для размещения БД, например, с именем BASE.

Процесс разработки приложения включает следующие этапы:

1) Установка русификатора для работы с таблицами типа Paradox7;

2) создание псевдонима новой базы данных и файла конфигурации, например, STUS с помощью подсистемы Desktop;

3) разработка структуры (полей) записи для двух таблиц базы данных;

4) разработка формы в составе:

- по 2 компонента типа Table, DataSource, DBGrid, DBNavigator и StringGrid,

- компонент Query,

- компонент типа Button со свойством Caption = Объединить.

Первые 3 пункта выполняются аналогично изложенному в разделах 6.1.3, 6.1.4 и 6.1.5.

Имя набора данных 1-й таблицы - с данными о студентах = STUD.DB.

Состав полей 1-й таблицы:

Fio - фамилия и инициалы, основной ключ;

Adres - домашний адрес;

God_R - год рождения;

Tel - телефон.

Имя набора данных с данными 2-й таблицы - об успеваемости студентов = USPEV.DB.

Состав полей 2-й таблицы:

Fio - фамилия и инициалы, основной ключ;

Mat- оценка по математике;

Fiz - оценка по физике;

Progr - оценка по программированию.

Установить свойство формы:

Caption = Формирование набора данных из двух таблиц

Установить выбором из списков свойства компонентов:

1) Table1: DataBaseName = STUS; TableName = STUD.DB; Active = True;

2) Table2: DataBaseName = STUS; TableName =USPEV.DB; Active = True;

3) Query1: DataBaseName = STUD; его свойство DataSource оставить в виде пустой строки;

4) DataSource1: Data Set = Table1; DataSource2: Data Set = Table2;

5) для DBGrid1 и DBNavigator1: Data Source = DataSource1;

6) для DBGrid2 и DBNavigator2: Data Source = DataSource2.

He устанавливать русские наименования заголовков таблиц типа DBGrid!

Отбор данных из двух таблиц осуществляется с помощью компонента Query1. Установить его свойство SQL:

SELECT * FROM STUD, USPEV WHERE STUD.FIO = USPEV.FIO

В соответствии с ним в одну строку формируемого набора данных будут ото­браны значения из 1-й и 2-й таблиц, у которых совпадают значения полей с фамилиями, т.е. STUD.FIO = USPEV.FIO.

В процессе настройки компонентов DBGrid не изменять заголовки столбцов, установленные по умолчанию.

Запустить приложение и заполнить таблицы несколькими записями с помо­щью компонентов DBNavigator1 и DBNavigator2.

6.2.3. Метод для объединения данных двух таблиц

С помощью метода ButtonIClick надо:

- определить типизированную константу С из массива строк с наименованиям заголовков компонента DBGrid1, в котором будут отражены значения полей отобранных и сформированных строк данных;

- активизировать компонент Query1 оператором: Query1.ACTIVE := TRUE

- подключить Query1 к компоненту DataSource1 для отображения отобранных данных оператором: DataSource1.DataSet := Query1;

- вывести тексты заголовков столбцов таблицы из массива С оператором:

DBGrid1.Columns[i].Title.Caption := C[i].

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

Вид формы после объединения данных двух таблиц на этапе выполнения приложения дан на рис.6.11.

В верхней таблице-компоненте (DBGrid1) в каждой строке представлены данные из 1-й и 2-й таблиц о каждом студенте, фамилия которого есть ив 1-й, и во 2-й таблице.

Рис. 6.10. Вид формы после настройки компонентов и заполнения таблиц

Рис. 6.11. Вид формы после объединения данных двух таблиц

Листинг 6.5. Текст модуля основной формы приложения для объединения данных двух таблиц

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DBTables, DBCtrls, Grids, DBGrids, DB, ExtCtrls,

XPMan, Buttons;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

DataSource2: TDataSource;

Table1: TTable;

Table2: TTable;

Query1: TQuery;

XPManifest1: TXPManifest;

Panel1: TPanel;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

DBNavigator1: TDBNavigator;

DBNavigator2: TDBNavigator;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

Const C: Array[0..7] of string[10] =

('Фио', 'Адрес', 'Год Рожд', 'Телефон', '' , 'Матем', 'Физика', 'Прогр' );

Var i:byte;

begin

if Query1.Active = false then Query1.Active := true;

DataSource1.DataSet:=Query1;

DBGrid1.Columns[4].Visible:=False;

for i:=0 To 7 do

DBGrid1.Columns[i].Title.Caption:=C[i];

end; end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]