Задача: в субд openOffice Base создать табличную базу данных «Gurnal»





Скачать 435.83 Kb.
НазваниеЗадача: в субд openOffice Base создать табличную базу данных «Gurnal»
страница3/5
Дата публикации09.07.2014
Размер435.83 Kb.
ТипЗадача
100-bal.ru > Информатика > Задача
1   2   3   4   5

Задание 1. Добавьте 4 страницы и назовите их Оценки, Ученики, Класс, Предмет (рис. 7.3).



Рис. 7.3.

Задание 2. Добавьте на каждую вкладку соответствующие компоненты, что бы получилось следующее (рис. 7.4 – рис. 7.7):



Рис. 7.4. Вкладка «Оценки»



Рис. 7.5. Вкладка «Ученики»



Рис. 7.6. Вкладка «Класс»



Рис. 7.7. Вкладка «Предмет»

Задача. Создать выпадающий список, содержащий имена всех учеников.

Ход выполнения.

1. Чтобы легче было находить нужную информацию, применяются выпадающие списки. Создадим выпадающий список, в котором будут выводиться имена всех учеников. Для начала заполним этот список. Для этого создадим процедуру InitUchenik без параметров, которую будем вызывать каждый раз при добавлении, изменении, удалении любых данных из базы данных, и в которой будут инициализироваться все всплывающие списки. Нужно добавить на форму компонент SQLQuery и поменять его имя на UQuery для удобства. Данный компонент мы будем испоьзовать для всех запросов, которые касаются таблицы Uchenik. Конечно, вы можете для каждого запроса добавить свой компонент SQLQuery, но тогда может получиться путаница. В каждом компоненте SQLQuery нужно в свойстве Database написать Form1.MySQL50Connection1, чтобы связать с базой данных.

2. Теперь вернёмся к заполнению Combobox1 именами учеников.

В Unit2 пишем в разделе Type после перечисления всех компонентов:

Procedure initUchenik;

А в разделе implementation после слова {TForm2} пишем следующую процедуру:

Procedure TForm2.initUchenik;

Var s,i:integer;

Begin

Combobox1.clear; // очищаем список

Combobox4.clear;

UQuery.SQL.Clear; // очищаем строку запроса

UQuery.SQL.Append(‘select FIO, ID_uch from Uchenik;’); // добавляем запрос

UQuery.Active:=true; // делаем запрос активным

s:=UQuery.Fields.Fields[0].DisplayText; // присваиваем переменной s первую найденную запись, Field[0] означает, что берется только запись из первого поля запроса, то есть FIO.

k:= UQuery.RecordCount; // считаем, сколько всего записей найдено по данному запросу

// цикл используется для добавления каждой найденной записи в Combobox

for i:=1 to k do begin

Combobox1.Items.Append(UQuery.Fiels.Fields[0].DisplayText);

Combobox4.Items.Append(UQuery.Fiels.Fields[1].DisplayText);

UQuery.Next; // переход к следующей найденной записи

End;

UQuery.Active:=false; // делаем запрос не активным

UQuery.SQL.Clear; // очищаем строку запроса

End;

В Combobox4 хранятся уникальные номера ученика (ID_uch). В дальнейшем данные уникальные номера нам пригодятся. Когда мы будем выбирать имя из выпадающего списка, то в Combobox4 будет выбираться соответствующий уникальный номер. Именно с этим номером мы и будем работать.

Примечание: Combobox4 нужно сделать невидимым, для этого в свойстве Visible выбираем False.

Задание 2. Создать процедуры InitKlass, InitPredmet, которые будут заполнять выпадающие списки Combobox2 (Combobox6 для ID_kl) и Combobox3 (Combobox8 для ID_pred) соответственно. Combobox6 и Combobox8 сделать невидимыми.

Замечание: Добавьте на форму ещё два компонента SQLQuery, назовите их PQuery и KQuery, один будет использоваться для таблицы Predmet, другой для таблицы Klass.

Практическая работа № 8.

Создание форм для ввода, редактирования и удаления для таблиц Klass, Predmet с использованием DBGrid и DBNavigator

Цель работы: научиться создавать формы для изменения записей в базе данных.

Аппаратное и программное обеспечение: компьютер с установленной операционной системой Linux.

Задача: Создать форму для модификации данных из таблицы Klass.

Ход выполнения.

  1. В предыдущей лабораторной работе вы создали интерфейс для базы данных. Откроем вкладку Класс. На ней расположен компонент DBGrid. В неё будем выводить содержимое таблицы Klass. Для того, чтобы связать компонент DBGrid с компонентом запроса SQLQuery, добавим на форму компонент источника данных Datasource, назовём его DatasourceK. Осуществите связь между данными компонентами, как показано в практической работе № 6.

  2. Добавим в конец процедуры InitKlass код для заполнения DBGrid названиями классов:

KQuery.SQL.Text:=’select * from Klass;’;

KQuery.Open;

DBGrid1.Colums.Items[0].Visible:=false; // сделали невидимым первый столбец

DBGrid1.Colums.Items[1].Title.Caption:=’Класс’; // изменили название второго столбца

  1. Добавление данных в таблицу будем осуществлять через компонент Edit1, то есть вводим в Edit1 название нового класса и нажимаем кнопку Добавить. По нажатию данной кнопки происходит добавление названия нового класса в таблицу Klass и соответственно в DBGrid1. Напишем следующий код в процедуре нажатия на кнопку Добавить:

Procedure TForm2.Button2Click(Sender:TObject);

begin

KQuery.Close;

KQuery.SQL.Clear;

KQuery.SQL.Add(‘insert into Klass(ID_kl, Kl) values (null, :p1);’);

KQuery.Params.Items[0].AsString:=edit1.text; // в качестве параметра берём данные из Edit1

KQuery.ExecSQL;

Edit1.text:=’’; // очищаем содержимое Edit1

initKlass; // вызываем данную процедуру, чтобы обновить содержимое выпадающих списков и DBGrid.

end;

Замечание: Обратите внимание на запрос. В запросе мы написали null, так как MySQL сама сгенерирует уникальное число (когда мы создавали базу данных, то для этого поля писали auto_increment), а :p1 – это обычный параметр и в качестве параметра мы берём содержимое Edit1.

  1. До этого мы рассматривали реляционный способ доступа к данным, теперь рассмотрим навигационный способ. Навигационный способ подразумевает последовательную работу с записями(строками) таблицы, содержащейся в наборе данных. На навигационном способе доступа основана работа визуальных компонент из вкладки «Data Controls». На данной вкладке располагается компонент DBNavigator. С помощью навигатора можно перемещаться по набору данных отображенных в таблице DBGrid. Можно добавлять, изменять, удалять данные. Но когда мы закроем программу, все сделанные нами изменения будут отброшены. Для того, чтобы сохранить произведённые изменения необходимо вызвать метод ApplyUpdates:

SQLQuery1.ApplyUpdates;

Существуют следующие методы класса TSQLQuery для навигации по базе данных:

  • TSQLQuery.Next – перейти на запись вперед

  • TSQLQuery.Prior – перейти на запись назад

  • TSQLQuery.First – перейти на первую запись

  • TSQLQuery.Last – перейти на последнюю запись

  • TSQLQuery.Insert – добавить новую запись

  • TSQLQuery.Delete – удалить запись

  • TSQLQuery.Edit – перевести набор данных в режим редактирования

  • TSQLQuery.Post – сохранить сделанные изменения в набор данных

  • TSQLQuery.Refresh – обновить таблицу

Замечание: Не каждый набор данных можно редактировать навигационным способом. Чтобы получить в результате SQL запроса редактируемый набор (то есть такой, что внесенные изменения можно было сохранить в базу данных), необходимо выполнение следующих условий:

  • данные отбираются только из одной таблицы;

  • таблица допускает модификацию;

  • в запросе не используется DISTINCT и статические функции;

  • в запросе не применяются соединения таблиц;

  • в запросе отсутствуют подзапросы и вложенные запросы;

  • не используется группирование данных;

  • сортировка применяется только к индексным полям;

Сейчас наша задача состоит в том, чтобы изменить данные в таблице Klass. Чтобы изменить запись в таблице, мы должны сначала нажать на кнопку Редактировать. После этого сделать необходимые изменения и для сохранения изменений нажать на кнопку Сохранить.

  1. Нажимаем дважды на кнопку Редактировать и в обработчике кнопки пишем:

KQuery.Edit;

В обработчике кнопки Сохранить пишем:

KQuery.Post;

KQuery.ApplyUpdates;

Initklass;

Соответственно для кнопки удалить пишем следующее:

KQuery.delete;

KQuery.ApplyUpdates;

Initklass;

Замечание: При нажатии на кнопку Удалить будет удалена текущая запись в DBGrid. Чтобы пользователь нечаянно не удалил нужные данные, дополним код, так чтобы получилось следующее (рис. 8. 1.):

If MessageDlg('Удалить запись?', mtConfirmation, [mbYes, mbNo], 0)=mrYes then

Begin

KQuery.delete;

KQuery.ApplyUpdates;

Initklass;

showmessage('Данные были успешно удалены!');

end;



Рис. 8.1.

Задание. Создайте форму для модификации данных таблицы Predmet.

Практическая работа № 9.

Создание форм для ввода, редактирования и удаления для таблицы Uchenik с использованием TDBEdit и TDBMemo

Цель работы: научиться создавать формы для изменения записей в базе данных с помощью компонента TSQLQuery.

Аппаратное и программное обеспечение: компьютер с установленной операционной системой Linux.

Задача: Создать форму для ввода для таблицы ученик, используя реляционный метод доступа к данным..

Ход выполнения.

    1. Создайте новую форму. Свяжите её с Form2. Добавьте компоненты, как показано на рисунке (рис. 9.1):



Рис. 9.1.

Combobox1 является списком для выбора пола ученика. Для заполнения данного списка необходимо заполнить свойство Items компонента Combobox1 (рис. 9.2).



Рис. 9.2.

Задание 1. Аналогичным образом заполнить выпадающий список Изучаемый язык.

Задание 2. Заполните выпадающий список Класс. Выпадающий список класс заполняется данными из таблицы Klass, поэтому его заполняем в процедуре InitKlass.

    1. При нажатии на кнопку добавить происходит добавление новой записи. В обработчике нажатия кнопки необходимо написать следующий код:

Procedure TForm3.Button1Click(Sender:TObject);

BEGIN

If (edit1.text=’’) and (edit2.text=’’) and (edit3.text=’’) and (edit4.text=’’) then showmessage(‘Заполнены не все поля!’)

Else

Begin

Form2.UQuery.close;

Form2.UQuery.SQL.Clear;

Form2.UQuery.SQL.Add(‘insert into Uchenik(ID_uch, FIO, Data_r, Adres, Tel, Pol, Jazik, Roditeli, ID_kl) values (null, :p1, :p2, :p3, :p4, :p5, :p6, :p7, (select ID_kl from Klass where Kl=:p8));’);

Form2.UQuery.Params.Items[0].asstring:=edit1.text;

Form2.UQuery.Params.Items[1].asstring:=edit2.text;

Form2.UQuery.Params.Items[2].asstring:=edit3.text;

Form2.UQuery.Params.Items[3].asstring:=edit4.text;

Form2.UQuery.Params.Items[4].asstring:=combobox1.text;

Form2.UQuery.Params.Items[5].asstring:=combobox2.text;

Form2.UQuery.Params.Items[6].asstring:=memo1.text;

Form2.UQuery.Params.Items[7].asstring:=Combobox3.text;

Form2.UQuery.ExecSQL;

Form2.initUchenik;

Edit1.text:=’’;

Edit2.text:=’’;

Edit3.text:=’’;

Edit4.text:=’’;

End;

END;

В данной процедуре проверяется, заполнены ли все поля, и если да, то данные добавляются, иначе выводится сообщение «Заполнены не все поля!».

Внутри запроса используется вложенный запрос, который возвращает уникальный код класса ID_kl. Так как мы добавили новую запись, то необходимо обновить выпадающие списки, содержащие имена учеников, поэтому вызвали процедуру InitUchenik.

    1. Создадим форму для редактирования ученика. Для этого создадим новую форму и разместим на ней компоненты следующим образом (рис. 9.3):



Рис. 9. 3.

На странице Data Access находятся визуальные компоненты, предназначенные для организации доступа к данным:

  • TDBNavigator – навигационный интерфейс. Навигатор позволяет перемещаться по набору записей вперед и назад, переходить к первой и последней записи и выполнять ряд других функций. Обычно размещается на форме под компонентом TDBGrid.

  • TDBText – надпись, позволяет отображать содержимое отдельного поля записи;

  • TDBEdit – однострочный редактор (поле редактирования), позволяет редактировать значение отдельного поля текущей записи.

  • TDBMemo – многострочный редактор (панель редактирования), отображает содержимое двоичного поля записи;

  • TDBImage – графический образ (изображение), воспроизводит на экране рисунки, хранящиеся в БД;

  • TDBListBox – простой список;

  • TDBComboBox – комбинированный список;

  • TDBCheckBox – независимый переключатель;

  • TDBRadioGroup – группа зависимых переключателей;

  • TDBCalendar – показывает на экране дату из базы данных, виде листа календаря;

  • TDBGroupBox – используется для создания нескольких групп переключателей.

Для того, чтобы информация о выбранном ученике отображалась в соответствующих полях необходимо сначала составить запрос, отбирающий по имени ученика записи. В свойстве SQL компонента SQLQuery1, напишем запрос, возвращающий все данные из таблицы Uchenik:

Select * from Uchenik, Klass where Uchenik.ID_kl=Klass.ID_kl and FIO=:p1;

В обработчике нажатия кнопки Изменить/Удалить напишем следующее:

Procedure TForm2.Button7Click(Sender: TObject);

Begin

Form4.SQLQuery.Active:=false;

Form4.SQLQuery.Params.Items[0].AsString:=Combobox1.Text;

Form4.SQLQuery1.Active:=true;

Form4.EditU; // про данную процедуру будет сказано ниже

Form4.Show;

End;

Теперь добавим на форму с вкладки Data Access компоненты TDBEdit, TDBCombobox, TDBMemo. Необходимо добавить их такое количество, сколько аналогичных компонентов находится на форме, то есть рядом с Edit1 расположить DBEdit1, рядом с Combobox2 – DBCombobox2. Также эти компоненты необходимо сделать невидимыми. Делается всё это для того, чтобы данные можно было изменить. В компонентах TDBEdit, TDBCombobox, TDBMemo будет располагаться информация из базы данных, но эту информацию Lazarus (по не понятным причинам) не даёт изменять. Поэтому мы соответствующим компонентам TEdit, TCombobox, TMemo присвоим информацию из соответствующих компонентов TDBEdit, TDBCombobox, TDBMemo. А в компонентах TEdit, TCombobox, TMemo информацию можно будет спокойно изменить, а изменения в базу занести с помощью запроса.

Напишем процедуру EditU для присваивания информации из соответствующих компонентов:

Procedure TForm4.EditU;

Begin

Edit1.text:=DBEdit1.Text;

Edit2.text:=DBEdit2.Text;

Edit3.text:=DBEdit3.Text;

Edit4.text:=DBEdit4.Text;

Combobox1.text:=DBCombobox1.text;

Combobox2.text:=DBCombobox2.text;

Combobox3.text:=DBCombobox3.text;

Memo1.text:=DBMemo1.text;

End;
1   2   3   4   5

Похожие:

Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconВарианты заданий к расчетно–графической работе
Переименовать базу данных Борей, назвав ее своей фамилией. Открыть переименованную базу данных и создать в ней следующие объекты
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Субд, освоение технологических приемов по созданию запросов в среде субд, контроль уровня знаний и умений учащихся по темам «Создание,...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconУрок по информатике по теме "Системы управления базами данных. Создание...
Повторить понятие “База данных”, “поле базы данных”, “запись базы данных”, “субд”
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПроект по информатике «портфолио для успешной карьеры»
Создать базу данных профессий, изучить различные должности и развить навыки поиска работы
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconЗадания
Вопросы и задачи, подлежащие разработке: Выяснить, что входит в учет основных средств. Создать программу и базу данных, позволяющих...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПонятие информационно – коммуникационных технологий – (икт) и их роль в образовательном процессе
Повторить понятие “База данных”, “поле базы данных”, “запись базы данных”, “субд”
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Создать структуру однотабличной базы данных, содержащую сведения о странах Европы. В таблицу включить следующие сведения: страна,...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconБазы данных
Для признания исключительного права на базы данных не требуется специальной регистрации (однако предпочтительно осуществлять государственную...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconТема: Построение графиков в эт openOffice org Calc Дата
Цель: научить оформлять данные в электронных таблицах OpenOffice org Calc с помощью графиков, выполнить тест по теме «Электронная...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconСистемы управления базами данных (субд) реферат по «Основам информационных технологий»
...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПланирование и проектирование вашей базы данных в Access
Продумайте ваши данные перед тем, как создавать вашу базу данных
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconИнтерфейс доступа к базам данных
Вы инсталлируете sql сервер, проектируете базу данных авиалиний и потребуете от персонала авиалиний использования этого приложение....
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Место урока в теме – урок проводится в ходе изучения темы “Информационные системы”, после изучения понятий базы данных, видов баз...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Место урока в теме – урок проводится в ходе изучения темы “Информационные системы”, после изучения понятий базы данных, видов баз...
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconOpenOffice Текстовый процессор Writer
Данное пособие содержит методические рекомендации и инструкции для работы в текстовом процессоре Writer из пакета OpenOffice
Задача: в субд openOffice Base создать табличную базу данных «Gurnal» iconРеферат по теме: «субд access. Основные понятия. Таблицы. Запросы....
«субд access. Основные понятия. Таблицы. Запросы. Формы. Отчёты. Создание базы данных»


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск