ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО АТОМНОЙ ЭНЕРГИИ
САРОВСКИЙ ГОСУДАРСТВЕННЫЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ (СарФТИ)
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ЭЛЕКТРОНИКИ
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ И ИНФОРМАЦИОННОЙ ТЕХНИКИ
ЗАДАНИЕ
на курсовое проектирование
по курсу: Базы данных
наименование дисциплины
Студент Коптелов Алексей Юрьевич
фамилия, имя, отчество
Группа ВТ-43д
индекс группы
Руководитель проекта Логунова Елена Сергеевна
должность, ученая степень, звание, фамилия, имя, отчество
САРОВ, 2007
Наименование темы Разработка прикладной информационной системы “Курсовые работы кафедры ВИТ” средствами СУБД Microsoft VFP 9.0
Место выполнения СарФТИ ФИТЭ кафедра ВИТ Исходные данные Intel Celeron 4 2.4 Gz, 256 MB ОЗУ, HDD 80GB, клавиатура, мышь, MS Windows XP, Microsoft Visual Fox Pro 9.0
Содержание работы 1. Постановка задачи. 2. Уяснение поставленной задачи, формирование ТЗ, заполнение задания на курсовую работу. 3. Выбор и обоснование инструментальных и программных средств. 4. Разработка модели представления данных. 5. Разработка структуры интерфейса. 6. Проектирование входных и выходных форм. 7. Программирование приложения. 8. Проверка функциональности на контрольном примере. 9. Оформление пояснительной записки, разработка руководства пользователя, сдача системы в опытную эксплуатацию. 10. Сдача курсовой работы.
Экспериментальная часть 1. Освоение инструментальных средств. 2. Программная и интерактивная реализация разделов системы. 3. Формирование контрольного примера.
Допуск к защите
К защите представляется:
пояснительная записка страниц
чертежно-графический материал листов
иллюстрационный материал листов
экспериментальные макеты шт.
приложение страниц
Студент ВТ-43Д Коптелов Алексей Юрьевич допущен к защите
индекс группы, фамилия, имя, отчество
Руководитель (Макарец А.Б.)
дата, подпись
Работа защищена с оценкой
Аннотация
Назначение данной курсовой работы – это разработка и реализация прикладной информационной системы «Курсовые работы кафедры ВИТ», позволяющей автоматизировать процессы учета курсовых работ.
Система имеет удобный интерфейс, что обеспечивает быстрый доступ к необходимым данным, позволяет хранить, добавлять и удалять различные данные о курсовой работе. Доступ к объектам системы осуществляется весьма просто, с помощью кнопок на формах. Все необходимые данные хранятся в настоящей базе данных в виде таблиц, к которым имеется доступ в любой момент времени.
Данная работа выполнена средствами СУБД Visual FoxPro 9.0 на основании технического задания.
Содержание
Введение
1.Постановка задачи
Общие сведения
1.2. Входные данные представляют собой
1.3.Требования к программному обеспечению
2. Выбор и обоснование инструментальных средств
3. Практическая часть
3.1. Определение этапов разработки программного обеспечения
3.2. Принципы реализации программного обеспечения
3.3. Руководство пользователя
Список литературы
Заключение
Приложение1.Разработка и реализация модели представления данных
Приложение2.
Листинг программы
Введение
В процессе учета курсовых работ часто требуется быстро найти информацию о курсовой работе и о студенте, выполнившем её.
База данных, представленная в данной работе, позволит автоматизировать работу по ведению учета за курсовой работой, что значительно экономит время. Ввод информации, ее редактирование будут осуществляться достаточно быстро и эффективно. Также, данная программа будет позволять выявлять совпадение тем курсовых работ. Таким образом, данная база данных позволит руководителям выдавать неповторяющиеся темы курсовых работ.
Для реализации базы данных будет использована СУБД Visual FoxPro 9.0. Это одна из наиболее популярных систем разработки приложений баз данных, мощный продукт, позволяющий применять при разработке приложений баз данных всю гибкость объектно-ориентированного программирования.
1.Постановка задачи
1.1.Общие сведения.
Полное наименование работы: создать прикладную информационную систему по вводу и редактированию информации о курсовых работах кафедры ВИТ.
Результатом работы должен быть законченный работоспособный программный продукт, который будет использоваться для получения, хранения и редактирования информации о курсовой работе кафедры ВИТ.
1.2 Входные данные представляют собой:
Группа
ФИО студента
Предмет
Тема
Оценка
Дата сдачи
ФИО преподавателя
Ученая степень
1.3 Требования к программному обеспечению.
Программное обеспечение должно осуществлять выполнение следующих функций:
1. Ведение списка курсовых работ кафедры ВИТ
2. Добавление, удаление информации о курсовых работах
Создание необходимых отчетов
Просмотр отчетов на экране и вывод на печать.
2. Выбор и обоснование инструментальных средств
Системы СУБД позволяют быстро и эффективно разработать самые разнообразные приложения. Они имеют развитые возможности по созданию пользовательского интерфейса, широкий набор функций, методов и свойств для решения прикладных задач.
Данный курсовой проект выполнен на СУБД Visual FoxPro 9.0. Visual FoxPro является объектно-ориентированным, визуально программируемым языком, управляемым по событиям и в полной мере соответствует требованиям, предъявляемым к современным средствам проектирования.
Visual FoxPro 9.0 является системой управления реляционными базами данных, которые в настоящее время являются наиболее распространенными, и фактически стали промышленным стандартом. Visual FoxPro позволяет использовать SQL-операторы и функции поддержки OLE-технологии.
Наряду с традиционным хранением данных в виде отдельных DBF-файлов в Visual FoxPro поддерживается хранение данных в базе данных. База данных содержит все включенные в нее таблицы, их индексы, постоянные связи между таблицами, длинные имена таблиц, комментарии и заголовки полей, хранимые процедуры и триггеры, правила проверки и многое другое. Обеспечивается поддержка значения NULL для полей базы данных, что является очень важным при работе с SQL-базами данных. Используются четыре типа индексов: первичный, кандидат, уникальный и простой, отвечающие производственным стандартам работы с базами данных. Представлены средства переноса базы данных Visual FoxPro на SQL-сервер. Можно вводить для полей элементы управления, маску ввода и формат, которые будут использованы по умолчанию для отображения значений этих полей.
Одновременно с сохранением возможности процедурного пошагового программирования Visual FoxPro предоставляет средства разработки объектно-ориентированных приложений. Класс содержит информацию о внешнем виде и поведении объекта. Управление объектом осуществляется посредством обрабатываемых им событий. В настоящей версии дополнительно Visual FoxPro предлагает полноценную модель управления событиями, включая обработку событий Windows.
Дальнейшее развитие графического интерфейса пользователя привело к созданию гибкого и мощного инструментария, обеспечивающего в любой момент времени взаимнооднозначное соответствие программного кода и разрабатываемых экранных форм. Совершенно новый подход к организации проекта с применением диспетчера проекта, представляющего весь проект в виде иерархического дерева, позволяет разработчику переключаться между различными компонентами приложения и средствами разработки этих компонент по простому щелчку мыши. Свое дальнейшее развитие получило применение мастеров и построителей.
В настоящей версии Visual FoxPro графический интерфейс пользователя включает в себя: поддержку технологии перемещения таблиц и полей данных в экранные формы непосредственно из диспетчера проекта или из окна проектирования базы данных; использование контекстного меню; всеобъемлющий характер наборов инструментария и многое другое.
Visual FoxPro поддерживает работу с OLE-объектами, позволяя как встраивать такие объекты в экранные формы, так и сохранять их в полях базы данных. Дополнительно Visual FoxPro предоставляет библиотеку OLE-объектов.
Версия Visual FoxPro 9.0 обладает рядом новых возможностей:
Более удобная работа с проектом и управлением базой данных.
Упрощены процедуры проектирования таблиц и расширены возможности словаря базы данных. Введено создание для видов внешних соединений; определение псевдонимов для столбцов таблицы базы данных; назначения полям элементов управления, маски ввода и формата.
Расширены возможности построения запросов и проектирования видов.
Упрощено проектирование форм и значительно расширены функциональные возможности. Поддерживается применение MDI (Multiple Document Interface) и SDI (Single Document Interface) интерфейсов для управления оконными формами. Добавлено средство проектирования контекстного меню (Shortcut Menu Designer). Новый редактор облегчает программирование, обеспечивая форматирование программного кода и выделение цветом.
Введены новые мастера и дополнены старые. Новый мастер Application Wizard позволяет создавать рабочее пространство проекта.
Продвинуто внедрение OLE-технологии. Поддерживается работа с новыми элементами управления ActiveX, являющимися OLE-объектами.
Улучшен отладчик.
Введены новые команды и функции.
3. Практическая часть
3.1 Определение этапов разработки программного обеспечения
В процессе обучения мной были получены навыки проектирования задач, что и было применено в данной курсовой работе. Таким образом, задача была разбита на следующие этапы:
Разработка модели представления данных
Разработка структуры интерфейса
Проектирование входных и выходных форм
Программирование приложения
Проверка функциональности на контрольном примере.
3.2 Принципы реализации программного обеспечения
При создании программного обеспечения был применен принцип разделения, то есть все функционально разные части вынесены в отдельные клиентские формы.
Программирование производилось путем описания методов и событий активных элементов форм.
Доступ к данным, хранимым в базе данных, осуществлялся через SQL – запросы.
SQL – команды позволили осуществить добавление и удаление данных из базы.
3.3 Руководство Пользователя
После запуска проекта на экране появляется главное окно программы, с которого начинается дальнейшая работа.
Данная форма «Учет курсовых работ кафедры ВИТ» содержит информацию о студенте и о курсовой работе. Для получения необходимой информации, в списке «Группа» выбираем любую группу кафедры ВИТ. После выбора группы в поле «ФИО» появляются все студенты, принадлежащие данной группе. При выборе студента происходит вывод информации предмете: в списке «Предмет» появляется название предмета (или предметов), по которому проводится курсовая работа. При дальнейшем выборе предмета из списка происходит заполнение следующей информации о курсовой работе: тема курсовой работы, оценка, дата сдачи и преподаватель.
При нажатии на кнопку «Добавить» появляется форма «Добавление информации о студенте и курсовой работе» с пустыми полями, в которые необходимо заполнить, чтобы занести информацию о студенте и о его курсовой работе в нашу базу данных:
В разделе «Информация о студенте» можем добавить группу с помощью кнопки «Добавить группу». Вводим название группы, нажимаем кнопку «Добавить группу», это поле автоматически очищается для дальнейшего добавления групп, а только что добавленная группа мгновенно заносится в наш список групп в поле «Группа», выбрав которую вбиваем информацию о студенте.
Аналогичным образом работают кнопки «Добавить предмет» и «Добавить уч.степень» (Добавить ученую степень преподавателя). Информация заносится в списки «Предмет» и «Ученая степень» соответственно.
Дальше идет заполнение полей: «Тема курсовой работы» - вводим тему; «Оценка» - выбираем из списка оценок (3,4,5) нужную нам оценку; «Дата сдачи» - при нажатии на кнопку ( ) появляется форма «Выберите дату» в виде календарика:
В ней при помощи кнопки «Выбрать» выбираем необходимую нам дату сдачи курсовой работы и заполняем информацию о преподавателе (ФИО, ученая степень).
Нажимаем основную кнопку «Добавить», и информация о студенте и курсовой работе заносится в нашу базу данных.
При нажатии на кнопку «Добавить», также происходит проверка на выявление совпадения темы курсовой работы. Если вводимая тема совпадает с уже существующей темой, то выводится сообщение:
и вводимые данные не добавляются.
В противном случае выводится сообщение:
и вводимые данные успешно заносятся в базу данных.
Если мы хотим перед вводом темы курсовой работы просмотреть кокой – нибудь предмет на наличие ранее выдававшихся тем по этому предмету, то в списке «Предмет» выбираем нужный нам предмет и нажимаем кнопку «Показать темы».
В правой стороне в списке появляются список тем.
Также мы можем удалять студента при помощи кнопки «Удалить» в главном окне программы (при этом тема курсовой работы не удаляется, для последующего выявления уже сданных тем курсовых работ).
Если студент, которого хотим удалить, не выбран, то выводится сообщение:
При выборе студента и нажатии на кнопку «Удалить» происходит удаление студента и выводится сообщение об успешном удалении:
Кнопки «Отчет по студентам» и «Отчет по преподавателям» позволяют просмотреть информацию:
1)о студенте: ФИО, по какому предмету, какую курсовую, на какую оценку, и когда он защитил;
2)о преподавателе: ФИО, ученую степень, предмет, который он вел, и какая тема курсовой работы выдавалась им по данному предмету.
Заключение
В процессе выполнения курсовой работы мной были освоены средства написания прикладных систем управления базами данных на основе Visual Fox Pro 9.0. С помощью широких возможностей программы Visual FoxPro 9.0 осуществлен удобный интерфейс, легкий доступ к данным и другие возможности, освещенные в данной курсовой работе. Считаю, что возможности Visual Fox Pro 9.0 достаточно широкие, чтобы написать программу любой сложности, но, к сожалению, в Visual Fox Pro 9.0 много недоработок. Поэтому Visual Fox Pro 9.0 совершенно не пригоден для написания серьезных программ.
Созданная система имеет удобный интерфейс, обеспечивающий быстрый доступ к необходимым данным. Данный программный продукт позволяет вводить и удалять различные данные.
Список литературы:
С. Каратыгин, А . Тихонов, Л.Тихонова Visual FoxRro К вершинам мастерства – М.:Восточеная Книжная Компания, 1997.
А.М. Вендеров Проектирование программного обеспечения экономических информационных систем: Москва “Финансы и статистика”,2000.
Курс лекций Макарец.А.Б
Приложение 1. Разработка и реализация модели представления данных.
Типовым шагом при разработке таких задач, является оптимизация хранения данных. В реляционной модели наиболее лучшим вариантом является разбиение хранимой информации на категории.
В данном проекте информация была разбита на следующие категории :
Основная таблица (courseworks.dbf)
Справочник по предмету (subject.dbf)
Справочник по студенту (student.dbf)
Справочник по группе (group.dbf)
Справочник по преподавателю (professor.dbf)
Справочник по ученой степени преподавателя (degree.dbf)
Справочник по теме курсовой работы (theme.dbf)
Список файлов системы
courseworks.exe - запускаемый файл
Файлы базы данных.
1.dbc
courseworks.dbf
subject.dbf
student.dbf
group.dbf professor.dbf
degree.dbf
theme.dbf
Файлы форм.
form1.scx - главная форма (Учет курсовых работ кафедры ВИТ)
form2.scx – форма добавления данных
getdataform.scx – форма по выбору даты
Файлы отчетов.
prof.frx – отчет по преподавателям
st.frx – отчет по студентам
Файлы помощи
Help.hlp
Файлы программ.
main.prg
quit.prg
Приложение 2. Листинг программы.
Form1 – «Учет курсовых работ кафедры ВИТ»
Инициализации формы:
SET DELETE on
SELECT namegroup FROM group INTO CURSOR group1
ThisForm.Combo1.RowSourceType= 2
ThisForm.Combo1.RowSource='group.namegroup'
Выборе группы из списка (Combo1):
gg=TRIM(THISFORM.Combo1.Value)
SELECT Group.id_group;
FROM 1!group;
WHERE TRIM(Group.namegroup)==gg;
INTO CURSOR t10
SELECT surname,name,patronymic;
FROM student;
WHERE student.id_group=t10.id_group;
INTO CURSOR clici
ThisForm.text9.Value=''
ThisForm.text11.Value=''
ThisForm.text12.Value=''
ThisForm.List1.RowSourceType= 2
ThisForm.List1.Value=''
ThisForm.List1.RowSource='ALLTRIM(clici.surname)+SPACE(1)+ALLTRIM(clici.name)+SPACE(1)+ALLTRIM(clici.patronymic)'
ThisForm.List2.RowSourceType= 2
ThisForm.List2.RowSource=''
Выбор студента (List1):
SELECT surname,name,patronymic,id_student FROM student;
WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=ALLTRIM(This.Value) AND t10.id_group=student.id_group;
INTO CURSOR student3
ThisForm.text9.Value=''
ThisForm.text11.Value=''
ThisForm.text12.Value=''
ThisForm.text1.Value=''
SELECT id_professor,id_theme,id_subject,mark,datedelivery,id_student FROM courseworks;
WHERE courseworks.id_student=student3.id_student INTO CURSOR cwork
SELECT Subject.id_subject, Subject.namesubject, Courseworks.id_student,;
Courseworks.id_subject, Courseworks.id_professor,;
Courseworks.datedelivery, Courseworks.mark, Courseworks.id_theme;
FROM ;
1!subject ;
INNER JOIN 1!courseworks ;
ON Subject.id_subject = Courseworks.id_subject;
INTO CURSOR ccwork
SELECT * FROM ccwork;
where ccwork.id_student=cwork.id_student INTO CURSOR cccwork
ThisForm.List2.RowSourceType=2
ThisForm.List2.Value=''
ThisForm.List2.RowSource='ALLTRIM(cccwork.namesubject)'
Выбор предмета(List2):
SELECT * FROM cccwork;
where ALLTRIM(cccwork.namesubject)=ALLTRIM(this.value) INTO CURSOR ccccwork
ThisForm.text11.Value=ccccwork.mark
ThisForm.text12.Value=ccccwork.datedelivery
SELECT surname,name,patronymic,id_degree FROM professor;
WHERE professor.id_professor=ccccwork.id_professor INTO CURSOR professor2
SELECT degree,id_degree FROM degree;
WHERE degree.id_degree=professor2.id_degree INTO CURSOR deg
ThisForm.text1.Value=ALLTRIM(professor2.surname)+SPACE(1)+ALLTRIM(professor2.name)+SPACE(1)+ALLTRIM(professor2.patronymic)+SPACE(3)+ALLTRIM(deg.degree)
SELECT nametheme,id_theme FROM theme;
WHERE theme.id_theme=ccccwork.id_theme INTO CURSOR tema
ThisForm.text9.Value=ALLTRIM(tema.nametheme)
Кнопка «Добавить»:
SET PATH TO ('FORMS')
do FORM FORM2.Scx
Кнопка «Удалить»:
b=TRIM(ThisForm.List1.Value)
IF THISFORM.list1.ListIndex!=0 THEN
SELECT * from Student;
WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=b AND t10.id_group=student.id_group;
into cursor stu
SELECT * from courseworks;
WHERE courseworks.id_student=stu.id_student;
into cursor cour
SELECT * from professor;
WHERE professor.id_professor=cour.id_professor;
into cursor pro
DELETE FROM Student;
WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=b AND t10.id_group=student.id_group
DELETE FROM courseworks;
WHERE courseworks.id_student=stu.id_student
DELETE FROM subject;
WHERE subject.id_subject=cour.id_subject
DELETE FROM professor;
WHERE professor.id_professor=cour.id_professor
DELETE FROM degree;
WHERE pro.id_degree=degree.id_degree
THISFORM.List1.InteractiveChange()
THISFORM.Combo1.InteractiveChange()
MESSAGEBOX(" Студент удален!")
ELSE
MESSAGEBOX(" Студент не выбран!")
ENDIF
И в менеджере проекта Code/Programs
main:
ON shutdown do quit.prg
SET DELETED ON
SET PATH TO('\FORMS')
do form form1.scx
read event
quit:
Clear windows
CLOSE DATABASES ALL
SET PATH TO ('DATA\')
SET DELETED ON
OPEN DATABASE 1
PACK courseworks
PACK degree
PACK group
PACK professor
PACK student
PACK subject
PACK theme
PACK DATABASE
CLOSE DATABASES ALL
QUIT
Нажатие на кнопку «Отчет по студентам»:
SET PATH TO('REPORTS\')
REPORT FORM st PREVIEW
Нажатие на кнопку «Отчет по преподавателям»:
SET PATH TO('REPORTS\')
REPORT FORM prof PREVIEW
Form2 – «Добавление информации о студенте и курсовой работе»
Инициализации формы:
SELECT namegroup FROM group INTO CURSOR group2
ThisForm.Combo1.RowSourceType= 2
ThisForm.Combo1.RowSource='group2.namegroup'
SELECT namesubject FROM subject INTO CURSOR subject2
ThisForm.Combo2.RowSourceType= 2
ThisForm.Combo2.RowSource='subject2.namesubject'
ThisForm.Combo4.RowSourceType= 2
ThisForm.Combo4.RowSource='subject2.namesubject'
SELECT degree FROM degree INTO CURSOR degree222
ThisForm.Combo5.RowSourceType= 2
ThisForm.Combo5.RowSource='degree222.degree'
ThisForm.Combo3.AddItem("3")
ThisForm.Combo3.AddItem("4")
ThisForm.Combo3.AddItem("5")
Нажатие на кнопку «Добавить группу»:
SELECT MAX(group.id_group) as m_group FROM group INTO CURSOR group_max2
INSERT INTO group(id_group,namegroup);
VALUES (group_max2.m_group+1,ALLTRIM(ThisForm.text7.Value))
SELECT namegroup FROM group INTO CURSOR group2
ThisForm.Combo1.RowSourceType= 2
ThisForm.Combo1.RowSource='group2.namegroup'
ThisForm.text7.Value=''
Нажатие на кнопку «Добавить предмет»:
SELECT MAX(subject.id_subject) as m_subject FROM subject INTO CURSOR subject_max2
INSERT INTO subject(id_subject,namesubject);
VALUES (subject_max2.m_subject+1,ALLTRIM(ThisForm.text8.Value))
SELECT namesubject FROM subject INTO CURSOR subject22
ThisForm.Combo1.RowSourceType= 2
ThisForm.Combo1.RowSource='subject22.namesubject'
ThisForm.text8.Value=''
Нажатие на кнопку «»:
SET PATH TO ('Forms\')
DO FORM getdataform
Нажатие на кнопку «Добавить уч.степень»:
SELECT MAX(degree.id_degree) as m_degree FROM degree INTO CURSOR degree_max2
INSERT INTO degree(id_degree,degree);
VALUES (degree_max2.m_degree+1,ALLTRIM(ThisForm.text10.Value))
SELECT degree FROM degree INTO CURSOR degree22
ThisForm.Combo5.RowSourceType= 2
ThisForm.Combo5.RowSource='degree22.degree'
ThisForm.text10.Value=''
Нажатие на кнопку «Добавить»:
SELECT MAX(courseworks.id_student) as m_id_student,MAX(courseworks.id_subject) as m_id_subject,MAX(courseworks.id_professor) as m_id_professor,MAX(courseworks.id_theme) as m_id_theme FROM courseworks INTO CURSOR courseworks_save
SELECT * FROM subject INTO CURSOR subject_save
SELECT * FROM student INTO CURSOR student_save
SELECT * FROM professor INTO CURSOR professor_save
SELECT * FROM degree INTO CURSOR degree_save
SELECT MAX(degree.id_degree) as m_degree FROM degree INTO CURSOR degree_max
SELECT MAX(group.id_group) as m_group FROM group INTO CURSOR group_max
SELECT MAX(subject.id_subject) as m_subject FROM subject INTO CURSOR subject_max
SELECT MAX(theme.id_theme) as m_theme FROM theme INTO CURSOR theme_max
SELECT MAX(student.id_student) as m_student FROM student INTO CURSOR student_max
SELECT MAX(professor.id_professor) as m_professor FROM professor INTO CURSOR professor_max
SELECT * FROM theme INTO CURSOR theme_save
SELECT * FROM group INTO CURSOR group_save
SELECT * FROM group WHERE group.namegroup=ALLTRIM(THISFORM.combo1.Value) INTO CURSOR selectgr
SELECT COUNT(*) as ct;
FROM 1!theme;
WHERE LOWER(TRIM(Theme.nametheme))==LOWER(TRIM(THISFORM.text9.value))
INTO CURSOR ttt1
IF ttt1.ct!=0 THEN
MESSAGEBOX(" Такая тема есть!!!")
ELSE
SELECT * FROM courseworks;
where ALLTRIM(courseworks.mark)=ALLTRIM(thisform.Combo3.value);
INTO CURSOR wer
INSERT INTO student(id_student,surname,name,patronymic,id_group);
VALUES (courseworks_save.m_id_student+1,ALLTRIM(ThisForm.text1.Value),ALLTRIM(ThisForm.text2.Value),ALLTRIM(ThisForm.text3.Value),selectgr.id_group)
INSERTINTO courseworks(id_student,id_subject,id_professor,datedelivery,mark,id_theme);
VALUES (courseworks_save.m_id_student+1,courseworks_save.m_id_subject+1,courseworks_save.m_id_professor+1,(Thisform.text12.Value),wer.mark,courseworks_save.m_id_theme+1)
INSERT INTO degree(id_degree,degree);
VALUES (degree_max.m_degree+1,ALLTRIM(ThisForm.Combo5.Value))
INSERT INTO professor(id_professor,surname,name,patronymic,id_degree);
VALUES (courseworks_save.m_id_professor+1,ALLTRIM(ThisForm.text4.Value),ALLTRIM(ThisForm.text5.Value),ALLTRIM(ThisForm.text6.Value),degree_max.m_degree+1)
INSERT INTO theme(id_theme,nametheme);
VALUES (courseworks_save.m_id_theme+1,ALLTRIM(ThisForm.text9.Value))
MESSAGEBOX(" готово!!! ")
ENDIF
Нажатие на кнопку «Показать темы»:
SELECT * FROM subject;
where ALLTRIM(thisform.combo4.value)=ALLTRIM(subject.namesubject) into cursor subfind
SELECT theme.id_theme, theme.nametheme, Courseworks.id_student,;
Courseworks.id_subject, Courseworks.id_professor,;
Courseworks.datedelivery, Courseworks.mark, Courseworks.id_theme;
FROM ;
1!theme ;
INNER JOIN 1!courseworks ;
ON theme.id_theme = Courseworks.id_theme;
INTO CURSOR corrwork
SELECT * FROM corrwork;
WHERE subfind.id_subject=corrwork.id_subject INTO CURSOR corwork
ThisForm.List1.RowSourceType=2
ThisForm.List1.Value=''
ThisForm.List1.RowSource='ALLTRIM(corwork.nametheme)'
Getdataform – «Выбор даты»
Нажатие кнопки «Выбрать»:
y=YEAR(THISFORM.olecontrol1.SelEnd)
m=MONTH(THISFORM.olecontrol1.SelEnd)
ch=DAY(THISFORM.olecontrol1.SelEnd)
form2.text12.Value=DATE(y,m,ch)
THISFORM.Release