Скачать 435.83 Kb.
|
Замечание. Не забудьте добавить описание процедуры в раздел type. Чтобы информация из базы данных отображалась в компонентах TDBEdit, TDBCombobox, TDBMemo необходимо изменить свойство Datasource на Datasource1, а в свойстве DataField написать название соответствующего поля из таблицы Uchenik. Например, для DBEdit1 в свойстве DataFields укажем FIO, для DBEdit2 – Data_r, для Combobox1 – Pol. При указании данных полей будет выдаваться ошибка (не может найти такое поле), вы не обращайте на неё внимание, просто закрывайте. Также добавьте на форму компонент DBText, который будет содержать ID_uch, сделайте данное поле невидимым. Задание. Во всех компонентах пропишите свойства Datasource и DataFields. Замечание. Не забудьте связать компонент Datasource с SQLQuery, а SQLQuery с Form1.MySQL50Connection1. Теперь напишем в обработчике кнопки Сохранить следующий код: Form2.UQuery.close; Form2.UQuery.SQL.Clear; Form2.UQuery.SQL.Add(‘update Uchenik set FIO=:p1, Data_r=:p2, Adres=:p3, Tel=:p4, Pol=:p5, Jazik=:p6, Roditeli=:p7, ID_kl=(select ID_kl from Klass where Kl=:p8) where ID_uch=:p9;’); 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.Params.Items[8].Asstring:=strtoint(DBText1.Caption); Form2.UQuery.ExecSQL; SQLQuery1.Active:=false; SQLQuery1.Params.Items[0].Asstring:=Combobox1.text; SQLQuery1.Active:=true; Form2.initUchenik; End; В обработчике кнопки Удалить напишем следующее: Procedure TForm4.ButtonClick(Sender: TObject); Begin Form2.UQuery.Close; Form2.UQuery.SQL.Clear; Form2.UQuery.SQL.Add(‘delete from Uchenik where ID_uch=:p1;’); Form2.UQuery.Params.Items[0].Asinteger:=strtoint(DBText1.Caption); Form2.UQuery.ExecSQL; SQLQuery1.Refresh; Form2.initUchenik; End; Форме у нас располагается компонент DBNavigator. Он позволяет перемещаться по записям таблицы базы данных. В свойстве Datasource нужно указать Datasource1, и сделать навигатор невидимым. Перечень видимых кнопок можно изменить в свойстве VisibleButtons. При нажатии на кнопку предыдущая будет появляться предыдущая отобранная запись (такое возможно, если в базе данных есть ученики с полностью совпадающими именами). В обработчике кнопки Предыдущая пишем: Procedure TForm4.Button3Click(Sender:TObject); Begin DBNavigator1.BtnClick(nbPrior); EditU; End; В обработчите кнопки Следующая пишем: Procedure TForm4.Button4Click(Sender:TObject); Begin DBNavigator1.BtnClick(nbNext); EditU; End; Теперь форма для редактирования ученика готова. Практическая работа № 10. Создание форм для ввода, редактирования и удаления для таблиц Urok и Ozenka с использованием TDBEdit и TDBMemo Цель работы: научиться создавать формы для изменения записей в базе данных с помощью компонента TSQLQuery. Аппаратное и программное обеспечение: компьютер с установленной операционной системой Linux. Задача: Создать форму для ввода нового урока и оценок ученика. Ход выполнения.
Рис. 10.1. Компонент UrQuery будем использовать для всех операций, которые будем производить с таблицей Urok. Аналогично и для компонента OQuery. Чтобы ввести новый урок необходимо на главной форме во вкладке Оценки выбрать из выпадающих списков класс и предмет, затем нажать кнопку Новый урок. При нажатии на данную кнопку должно проверяться условие, что выбран какой-либо класс и предмет, иначе должно выводиться соответствующее сообщение. Соответственно по нажатию на данную кнопку должна открываться форма Новый урок. Также при нажатии на кнопку в Label5 должен вписываться выбранный класс, а в Label7 – выбранный предмет. Задание 1. Напишите код для обработки кнопки Новый урок. Задание 2. Аналогично форме для ввода ученика напишите код для кнопки Добавить, для добавления урока. Изначально кнопка Изменить должна быть невидна. Она должна появляться после того, как будет создан новый урок и выставлены оценки за данный урок. По нажатию на кнопку Изменить будет появляться форма для редактирования оценок. Соответственно после добавления нового урока кнопка Добавить тоже становится невидимой или недоступной. Добавим в процедуру нажатия кнопки Добавить следующий код: // в этой части кода определяется уникальный код урока, который только что добавили UrQuery.SQL.Append(‘select max(ID_ur) from Urok;’); UrQuery.Active:=true; K:=strtoint(UrQuery.Fields.Field[0].DisplayText); //присвоили уникальный код урока ID_ur Form7.Label3.Caption:=intostr(k); UrQuery.Active:=false; UrQuery.SQL.Clear; // запрос на добавление оценок // здесь происходит определение всех человек, которые учатся в указанном классе и для каждого из них добавляется запись в таблицу Ozenka, в данной записи поле Ozenka остается пока не заполненным UrQuery.SQL.Append(‘insert into Ozenka ( ID_oz, ID_uch, ID_ur, Ozenka) values (null, :p1, :p2, null);’); Form2.UQuery.Active:=false; Form2.UQuery.SQL.Append(‘select ID_uch from Uchenik where ID_kl=:p1 order by FIO;’); Form2.UQuery.params.items[0].asinteger:=strtoint(form2.combobox6.text); Form2.UQuery.Active:=true; F:=form2.UQuery.recordCount; For i:=1 to f do begin UrQuery.params.items[0].asinteger:=strtoint(form2.UQuery.Fields.Fields[0].DisplayText); UrQuery.Params.Items[1].Asinteger:=k; UrQuery.ExecSQL; Form2.UQuery.Next; End; Form2.UQuery.Active:=false; Form2.UQuery.SQL.Clear; // данная часть кода нужна для заполнения DBGrid данными об оценках, которые получили ученики за этот урок UrQuery.Active:=false; UrQuery.SQL.Clear; UrQuery.SQL.Append(‘select Uchenik.FIO, Ozenka.Ozenka, Ozenka.ID_oz from Uchenik, Ozenka where Uchenik.ID_uch=Ozenka.ID_uch and Ozenka.ID_ur=:p1;’); UrQuery.Params.Items[0].AsInteger:=k; UrQuery.Active:=true; DBGrid1.Columns.Items[2].visibl:=false; DBGrid1.Columns.Items[0].title.Caption:=’ФИО’; DBGrid1.Columns.Items[1].Title.Caption:=’Оценка’; Form2.initUchenik; //открытие формы для выставления оценок Form7.SQLQuery1.Active:=false; Form7.SQLQuery1.Params.Items[0].asinteger:=k; Form7.SQLQuery1.Active:=true; Form7.Show; Form7.Combobox1.text:=form7.DBEdit2.text; // присвайваем значение из базы данных, чтобы его можно было потом изменить Form6.close; Как вы заметили в коде присутствует Form7, эта форма предназначена для редактирования оценок. Задание3. Создайте данную форму Выставление оценок, имеющую следующий вид (рис. 10.2): Рис. 10.2. Поле DBEdit2 необходимо сделать невидимым. В Combobox1 ввести все оценки и знак отсутствия на уроке «н». В обработчике кнопки <<Пред. Ввести следующий код: Procedure Tform7.Button1Click(Sender: TObject); Begin EditOz; // буде описана ниже SQLQuery1.Prior; Combobox1.Text:=DBEdit2.Text; End; Аналогично для кнопки След.>>, только вместо Prior ввести Next. В компоненте SQLQuery1 будет содержаться следующий запрос: Select Uchenik.FIO,Ozenka.Ozenka, Ozenka.ID_oz from Uchenik,Ozenka where Uchenik.ID_uch=Ozenka.ID_uch and Ozenka.ID_ur=:p1 order by Uchenik.FIO; Именно с этим запросом мы будем связывать компоненты DBEdit1, DBEdit2, DBText1 (хранит уникальный код оценки ID_oz). Label3 необходимо сделать невидимой, так как она хранит ID_ur. Теперь напишем процедуру EditOz: Procedure Tform7.EditOz; Begin Form6.UrQuery.Close; Form6.UrQuery.Sql.Add(‘update Ozenka set Ozenka=:p1 where ID_oz=:p2;’); Form6.UrQuery.Params.Items[0].asstring:=combobox1.text; Form6.UrQuery.Params.Items[1].asinteger:=strtoint(DBText1.Caption); Form6.UrQuery.ExecSQL; SQLQuery1.Active:=false; SQLQuery1.Params.Items[0].Asinteger:=strtoint(Label3.Caption); SQLQuery1.active:=true; End; Данная процедура предназначена для изменения таблицы Ozenka, при каждом нажатии на кнопку <<Пред. Или След.>> будет вызываться данная функция, что гарантирует сохранение сделанных изменений. При нажатии на кнопку Выход будет заполняться таблица DBGrid, находящаяся на форме Новый урок. В обработчике нажатия кнопки пишем следующий код: Form6.show; Form7.close; Form6.urquery.active:=false; Form6.urquery.sql.clear; Form6.urquery.sql.append(‘select Uchenik.FIO,Ozenka.Ozenka, Ozenka.ID_oz from Uchenik, Ozenka where Uchenik.ID_uch=Ozenka.ID_uch and Ozenka.ID_ur=:p1;’); Form6.urquery.params.items[0].asinteger:=strtoint(Label3.Caption); Form6.UrQuery.Active:=true; Form6.DBGrid1.Columns.Items[2].visible:=false; Form6.DBGrid1.Columns.Items[0].Title.Caption:=’ФИО’; Form6.DBGrid1.Columns.Items[0].Width:=280; //размер поля ФИО Form6.DBGrid1.Columns.Items[1].title.caption:=’Оценка’; По нажатию на кнопку Изменить будет открываться форма для изменения оценок, а форма Новый урок закрываться. Практическая работа № 11. Реализация запросов в приложении Цель работы: научиться осуществлять поиск записей в базе данных с использованием запросов. Аппаратное и программное обеспечение: компьютер с установленной операционной системой Linux. Задача: Создать запрос, переводящий учеников с одного класса в другой. Ход выполнения. Идея такова: из одного выпадающего списка выбираем класс из которого хотим перевести учеников, а во втором списке – класс в который хотим этих учеников перевести и нажимаем кнопку Перевести. 1. Для реализации перевода учеников в другой класс, создадим новую форму. Поместим на неё соответствующие компоненты как показано на рисунке ниже (рис. 11.1): Рис. 11.1. Combobox1 и Combobox2 содержат названия классов, поэтому их необходимо заполнить в процедуре InitKlass. В обработчике нажатия кнопки Добавить пишем следующее: Procedure TForm9.ButtonClick(Sender: TObject); Var f, i:integer; BEGIN If (Combobox1.Itemintex=-1) or (Combobox2.Itemindex=-1) then Showmessage(‘Введены не все данные!’) Else begin If messageDlg(‘Перевести из ‘+Combobox1.text+’ в ‘+Combobox2.text+’ класс?’, mtConfirmation, [mbYes,mbNo], 0)=mrYes then Begin Form2.KQuery.active:=false; Form2.KQuery.SQL.Clear; Form2.UQuery.Active:=false; Form2.UQuery.SQL.Clear; Form2.UQuery.SQL.Append(‘select ID_uch from Uchenik where ID_kl=(select ID_kl from Klass where Kl=:p1);’); // выбирает всех учеников которые учатся в данном классе Form2.UQuery.Params.Items[0].asstring:=Combobox1.text; Form2.UQuery.active:=true; Form2.KQuery.SQL.Append(‘update Uchenik set ID_kl=(select ID_kl from Klass where Kl=:p1) where ID_uch=:p2;’); // изменяем класс в котором учится ученик F:=form2.UQuery.RecordCount; // подсчитываем количество записей найденных по запросу For i:=1 to f do Begin Form2.KQuery.Params.Items[0].asstring:=Combobox2.Text; Form2.KQuery.Params.Items[1].asstring:=strtoint(form2.UQuery.Fields.Fields[0].DisplayText); Form2.KQuery.ExecSQL; Form2.UQuery.next; End; Form2.UQuery.Active:=false; Showmessage(‘Данные были успешно изменены!’); Form2.initKlass; End; End; END; Combobox1.ItemIndex=-1 означает, что из выпадающего списка ничего не выбрано. В данной процедуре сначала создаётся запрос, ищущий всех учеников из выбранного в Combobox1 класса. Затем создаем запрос, который изменяет для каждого выбранного ученика ID_kl. Не забудьте в на Form2 в кнопки Перевести написать открытие формы Перевод в другой класс. Задание 1. Создайте на форме Перевод в другой класс кнопку, при нажатию на которую все учащиеся школы будут переводиться в следующий класс. Задание2. Создайте форму, в которой будут выводиться учащиеся выбранного класса (класс выбирается в DBGrid1). В качестве параметра берём строку таблицы DBGrid1: UQuery.Params.Items[0].Asinteger:=KQuery.FieldByName(‘ID_kl’).Asinteger; Практическая работа № 12. Создание формы, являющейся аналогом страницы школьного журнала Цель работы: научиться создавать связанные таблицы данных. Аппаратное и программное обеспечение: компьютер с установленной операционной системой Linux. Задача: Создать форму, аналогичную странице школьного журнала. Ход выполнения.
Рис. 12.1. Данная форма будет являться аналогом страницы школьного журнала. В DBGrid1 будут содержаться оценки ученика, а в DBGrid2 – дата урока, тема, домашнее задание. При нажатии на определенный урок в таблице с оценками будут появляться оценки за данный урок. Данная форма должна появляться при нажатии на кнопку Изменить/Удалить, расположенную на Form2. Данная кнопка должна проверять то, что выбран класс и предмет из выпадающих списков. Также по нажатию на данную кнопку заполняется таблица DBGrid, содержащая темы всех уроков в данном классе по данному предмету. В обработчике данной кнопки пишем следующее: Procedure TForm2.Button1.Click(Sender: TObject); Begin If (Combobox2.ItemIndex=-1) and (Combobox3.ItemIndex=-1) then Showmessage(‘Выберите класс и предмет!’); Red_ur; Form8.show; End; Теперь создадим и опишем процедуру red_ur: Procedure TForm2.Red_ur; Begin Combobox6.ItemIndex:=Combobox2.ItemIndex; Combobox8.ItemIndex:=Combobox3.ItemIndex; Form8.SQLQuery2.Active:=false; Form8.SQLQuery.SQL.Clear; Form8.SQLQuery2.SQL.Append(‘select Distinct Urok.ID_ur, Urok.Data_ur as Дата, Urok.Tema as Тема, Urok.Dom_z, Urok.N_ur from Uchenik, Ozenka, Urok where Urok.ID_ur=Ozenka.ID_ur and Ozenka.ID_uch=Uchenik.ID_uch and Uchenik.ID_kl=:p1 and Urok.ID_predm=:p2;’); Form8.SQLQuery2.Params.Itams[0].AsInteger:=strtoint(Combobox6.Text); Form8.SQLQuery2.Params.Itams[1].AsInteger:=strtoint(Combobox8.Text); Form8.SQLQuery2.Active:=true; Form8.DBGrid2.Columns.Items[0].Visible:=false; Form8.DBGrid2.Columns.Items[1].width:=100; Form8.DBGrid2.Columns.Items[2].width:=250; Form8.DBGrid2.Columns.Items[3].width:=150; Form8.DBGrid2.Columns.Items[3].title.caption:=’Домашнее задание’; Form8.DBGrid2.Columns.Items[4].Title.Caption:=’№ урока’; End; Запись вида: Combobox6.ItemIndex:=Combobox2.ItemIndex означает, что порядковый номер выбранной записи из Combobox2 передаётся Combobox6, который содержит уникальные номера классов.
Procedure TForm8.DBGrid2CellClick(Column: TColumn); Begin SQLQuery1.Active:=false; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Append(‘select Uchenik.FIO as ФИО, Ozenka.ID_uch, Ozenka.Ozenka as Оценка from Uchenik,Ozenka where Uchenik.ID_uch=Ozenka.ID_uch and Ozenka.ID_ur=:p1 order by Uchenik.FIO;’); SQLQuery1.Params.Items[0].asinteger:=SQLQuery2.FieldByName(‘ID_ur’).ASInteger; SQLQuery1.active:=true; DBGrid1.Columns.Items[1].visible:=false; DBGrid1.Columns.Items[0].width:=250; End; Здесь в качестве параметра берётся текущая строка таблицы DBGrid, а точнее значение поля ID_ur, которое мы сделали невидимым (DBGrid1.Columns.Items[1].visible:=false). |
Варианты заданий к расчетно–графической работе Переименовать базу данных Борей, назвав ее своей фамилией. Открыть переименованную базу данных и создать в ней следующие объекты | Программа по формированию навыков безопасного поведения на дорогах... Субд, освоение технологических приемов по созданию запросов в среде субд, контроль уровня знаний и умений учащихся по темам «Создание,... | ||
Урок по информатике по теме "Системы управления базами данных. Создание... Повторить понятие “База данных”, “поле базы данных”, “запись базы данных”, “субд” | Проект по информатике «портфолио для успешной карьеры» Создать базу данных профессий, изучить различные должности и развить навыки поиска работы | ||
Задания Вопросы и задачи, подлежащие разработке: Выяснить, что входит в учет основных средств. Создать программу и базу данных, позволяющих... | Понятие информационно – коммуникационных технологий – (икт) и их роль в образовательном процессе Повторить понятие “База данных”, “поле базы данных”, “запись базы данных”, “субд” | ||
Программа по формированию навыков безопасного поведения на дорогах... Создать структуру однотабличной базы данных, содержащую сведения о странах Европы. В таблицу включить следующие сведения: страна,... | Базы данных Для признания исключительного права на базы данных не требуется специальной регистрации (однако предпочтительно осуществлять государственную... | ||
Тема: Построение графиков в эт openOffice org Calc Дата Цель: научить оформлять данные в электронных таблицах OpenOffice org Calc с помощью графиков, выполнить тест по теме «Электронная... | Системы управления базами данных (субд) реферат по «Основам информационных технологий» ... | ||
Планирование и проектирование вашей базы данных в Access Продумайте ваши данные перед тем, как создавать вашу базу данных | Интерфейс доступа к базам данных Вы инсталлируете sql сервер, проектируете базу данных авиалиний и потребуете от персонала авиалиний использования этого приложение.... | ||
Программа по формированию навыков безопасного поведения на дорогах... Место урока в теме – урок проводится в ходе изучения темы “Информационные системы”, после изучения понятий базы данных, видов баз... | Программа по формированию навыков безопасного поведения на дорогах... Место урока в теме – урок проводится в ходе изучения темы “Информационные системы”, после изучения понятий базы данных, видов баз... | ||
OpenOffice Текстовый процессор Writer Данное пособие содержит методические рекомендации и инструкции для работы в текстовом процессоре Writer из пакета OpenOffice | Реферат по теме: «субд access. Основные понятия. Таблицы. Запросы.... «субд access. Основные понятия. Таблицы. Запросы. Формы. Отчёты. Создание базы данных» |