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

Ход работы.

Для создания таблицы воспользуемся утилитой DataBase DeskTop. Выбрать путь (C:/Program Files/Common Files/Borland Shared/ DataBase DeskTop/Dbd32.exe

  1. Для создания таблицы выбрать в меню программы File-New-Table.

    1. В данной СУБД будем использовать формат Paradox. Выберите его из списка в появившемся окне.

На экране появится окно создания базы данных. В столбце Field Name введите имя поля (не должно содержать пробелов).

В столбце Type выберите из контекстного меню (правый щелчок мыши) тип поля. Для строковых полей необходимо указать размер (столбец Size).

  1. Создайте таблицу следующей структуры:

    Имя поля

    Тип поля

    Описание

    Nomer

    Longlnteger

    Key

    Rayon

    Alpha[20]

    Район проживания

    Surname

    Alpha[20]

    Фамилия, инициалы

    DataBorn

    Date

    Дата рождения

    Goden

    Logical

  2. После создания таблицы нажмите кнопку SaveAs. Выберите путьСоздайте папку Военкомат  укажите имя файла maintable.db  В появившемся окне в области Alias выбрать псевдоним базы данных Standard1.

  1. Создание основного окна программы:

    1. Переименуйте главное окно программы – измените свойство Caption для Form1.

    2. Поместите на форму компонент PageControl (вкладка Win32). Установите компоненту следующее свойство:

  • Align (Выравнивание) – alClent (на все окно)

    1. Щелкните правой клавишей мышки по компоненту и создайте две новые страницы New Page(TabSheet1, TabSheet2).

    2. Переименуйте страницы соответственно – Ввод информации и Поиск информации. Для этого необходимо в раскрывающемся списке Инспектора объекта выбрать объект и изменить его свойство Caption.

    3. Поместите на форму объект MainMenu (вкладка Standard). Щелкните по компоненту два раза и создайте пункт меню Данные, который содержит следующие подпункты: Ввод информации, Поиск данных, Копирование таблицы, Выход. Для создания разделителя в меню необходимо ввести «-» - дефис.

    1. Поместите на форму (лист Ввод Информации) следующие компоненты:

  • Table (вкладка BDE);

  • DataSource (вкладка Data Access);

  • DBGrid, DBNavigator (вкладка Data Controls).

    1. Установите компонентам следующие свойства:

Table:

  • DatabaseName (псевдоним базы данных) – выбираем из списка свой Alias.

  • TableName – выбираем имя своей таблицы.

  • AutoRefresh (обновление структуры таблицы) – устанавливаем значение true.

  • Active – устанавливаем true – подключаем таблицу.

DataSource:

  • DataSet (источник данных) – выбираем Table1.

DBGrid, DBNavigator:

  • свойству DataSource устанавливаем значение DataSource1.

  • Align (выравнивание): DBGrid – alClient (на все окно), DBNavigator – alBottom (внизу окна).

    1. Двойным щелчком по компоненту Table1 вызовите редактор полей. В контекстном меню (щелчок правой клавишей по редактору), выберите пункт Добавить все поля. Если какое-нибудь поле видеть на экране не нужно, определите его свойство Visible – False. Для остальных полей в свойстве DisplayLabel напишите отображаемые заголовки столбца: Номер личного дела, Район, Ф.И.О., Дата рождения, Годен.

На данном этапе вид формы должен быть следующим:

    1. Запустите приложение и проверьте, как оно работает. Сформируйте базу данных.

    2. Перейдите на вкладку Поиск информации. Поместите на ней следующие компонентыи :

  • DBGrid (Align – Top);

  • Query (вкладка BDE)

  • DataSorce;

  • PageControl (добавьте 3 новых листа);

  • RadioGroup (вкладка Standard)

    1. Расположите компоненты следующим образом:

    1. Установите свойству Multiline компонент PageControl2 значение True. Переименуйте страницы: Список по начальной букве фамилии, Список призывников по году, Годные призывники по району.

    2. Задайте свойству Caption компонента RadioGroup1 значение: Сформировать список.

    3. Щелкните по свойству Items компонента и заполните Редактор списка строк, как показано ниже:

    1. Установим свойству ItemIndex компонента RadioGroup значение 0, чтобы по умолчанию был выбран первый переключатель.

    2. Получаем следующий вид:

    1. Щелкните по вкладке Список призывников по году. Поместите на нее компоненты Label, Edit (вкладка Standard) и BitBtn (вкладка Additional).

    2. Переименуйте и разместите компоненты следующим образом:

Для того, чтобы сделать шрифт жирным, используйте свойство Font компонента. Чтобы разместить на кнопке рисунок используйте свойство Glyph. Стандартные заготовки Delphi расположены в папке: С:\Program Files\Common Files\Borland Shared\Images. Выберите каталог Buttons файл Chek.Возможны ваши варианты.

    1. Таким же образом оформим вкладки Годные призывники по району и Список по начальной букве фамилии.

На этом «оформительская работа» закончена. Приступим к программированию.

  1. Создайте следующий обработчик события OnClick для компонента RadioGroup1:

procedure Tform1.RadioGroup1Click(Sender: Tobject);

var Kolp, Kolnp, I:integer;

begin

Case RadioGroup1.ItemIndex of

0 : begin {если выбран первый переключатель}

query1.SQL.Clear; {закрываем запрос}

query1.SQL.Add('Select *from MainTable'); {в кавычках следует SQL запрос}

query1.Open;

end;

1 : begin

query1.SQL.Clear;

query1.SQL.Add(‘Select *from MainTable where goden = true’);

query1.Open;

end;

2 : begin

Table1.First;

Kolp:=0;Kolnp:=0;

for I:=1 to Table1.RecordCount do

Begin

if (Table1.FieldByName(‘goden’).AsBoolean = true) then

Kolp:=Kolp + 1

else KolnP:=KolnP + 1;

Table1.Next;

end;

Messagedlg('Количество годных = '+IntToStr(KolP)+#13+

'Количество негодных = '+IntToStr(KolnP),mtInformation,[mbOk],0);

end;

3 : begin

query1.SQL.Clear;

query1.SQL.Add(‘Select *from MainTable order by surname ASC’);

query1.Open;

end;

4 : begin

query1.SQL.Clear;

query1.SQL.Add(‘Select *from MainTable order by surname DESC’);

query1.Open;

end;

5 : begin

query1.SQL.Clear;

query1.SQL.Add(‘Select *from MainTable where databorn = (Select min(databorn) from MainTable)’);

query1.Open;

end;

6 : begin

query1.SQL.Clear;

query1.SQL.Add(‘Select *from MainTable where databorn = (Select max(databorn) from MainTable)’);

query1.Open;

end;

end;

end;

  1. Переименуйте компонент DataSorce2 в QueryDataSorce (изменяя свойство Name). Задайте его свойству DataSet значение Query1.

  2. Свяжите компонент DBGrid2 с компонентом Query1 при помощи компонента QueryDataSorce (выберите его из списка в свойстве DataSorce компонента DBGrid2).

  3. Для компонента Query1 выберите в свойстве DateBaseName свой Alias.

  4. В свойстве SQL компонента напишите:

select * from maintable.db

  1. Задайте свойству Active компонента Query1 значение True.

  2. Двойным щелчком по компоненту Query1 вызовите редактор полей. Переименуйте поля, как это делали раньше, с компонентом Table1.

  3. Запустите программу на выполнение и посмотрите на результат.

  4. Для события OnClick кнопки «Составить список» вкладки «Список призывников по году» запишите обработчик:

procedure Tform1.BitBtn1Click(Sender: Tobject);

var sData,S:AnsiString;

begin

sData:=Edit1.Text;

if sData=’’ then

begin

ShowMessage(‘Год не введен!’);

exit

end;

S:=’Select *from MainTable where databorn <= ‘’01.01.’+ IntToStr(StrToInt(Edit1.Text)-18)+’’’’;

query1.SQL.Clear;

query1.SQL.Add(S);

query1.Open;

end;

  1. Для события OnClick кнопки «Показать» вкладки «Список по начальной букве фамилии» запишите обработчик:

procedure Tform1.BitBtn3Click(Sender: Tobject);

var S,s1,s2 : AnsiString;

begin

s2:=’%’;

s1 := ‘’’’ + Edit3.Text + s2 +’’’’;

S:=’Select *from MainTable where surname Like’+s1;

query1.SQL.Clear;

query1.SQL.Add(S);

query1.Open;

end;

  1. . Для события OnClick кнопки «Вывести количество по району» вкладки «Годные призывники по району» запишите обработчик:

procedure Tform1.BitBtn2Click(Sender: Tobject);

var KolP,I:integer;

begin

Table1.First;

KolP:=0;

for I:=1 to Table1.RecordCount do

Begin

if ((Table1.FieldByName(‘goden’).AsBoolean = true) and (Table1.FieldByName(‘rayon’).AsString = Edit2.Text)) then

KolP:=Kolp + 1;

Table1.Next;

end;

Messagedlg(‘Количество годных по району ‘+ Edit2.Text+’ = ‘+IntToStr(KolP),mtInformation,[mbOk],0);

Edit2.Text:=’’;

end;

  1. 12. Обработайте событие OnClick для пунктов меню:

    1. Для подпункта Ввод информации:

procedure Tform1.N2Click(Sender: Tobject);

begin

Pagecontrol1.ActivePageIndex := 0;

end;

    1. Для подпункта Поиск данных:

procedure Tform1.N3Click(Sender: Tobject);

begin

Pagecontrol1.ActivePageIndex := 1;

end;

    1. Для подпункта Копирование таблицы:

procedure Tform1.N6Click(Sender: Tobject);

begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add(‘insert into ArhivTable select * from maintable’);

Query1.ExecSQL;

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add(‘select * from ArhivTable’);

Query1.Open;

ShowMessage('Архивная таблица создана!')

end;

    1. Для подпункта Выход:

procedure Tform1.N5Click(Sender: Tobject);

begin

close

end;

  1. В обработчике события OnCloseQuery для Form1 напишите:

procedure Tform1.FormCloseQuery(Sender: Tobject; var CanClose: Boolean);

begin

if (Messagedlg(‘Выйти из программы?’,mtConfirmation,[mbYes,mbNo],0)=mrYes) then

Canclose := true

else CanClose := false;

end;

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