ФЕДЕРАЛЬНОЕАГЕНСТВО ПО АТОМНОЙ ЭНЕРГИИСАРОВСКИЙ ГОСУДАРСТВЕННЫЙФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ (СарФТИ)
ФАКУЛЬТЕТИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ЭЛЕКТРОНИКИ
КАФЕДРАВЫЧИСЛИТЕЛЬНОЙ И ИНФОРМАЦИОННОЙ ТЕХНИКИ
ЗАДАНИЕ
на курсовое проектирование
по курсу: Базы данных
наименование дисциплины
СтудентКоптелов Алексей Юрьевич
фамилия, имя, отчество
Группа ВТ-43д
индекс группы
Руководитель проекта ЛогуноваЕлена Сергеевна
должность, ученая степень, звание,фамилия, имя, отчество
САРОВ, 2007
Наименование темы Разработка прикладнойинформационной системы “Курсовые работы кафедры ВИТ” средствами СУБД MicrosoftVFP9.0
Место выполнения СарФТИФИТЭ кафедра ВИТ Исходные данные IntelCeleron4 2.4 Gz, 256 MBОЗУ, HDD80GB, клавиатура, мышь, MSWindowsXP, MicrosoftVisualFoxPro9.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. Добавление, удалениеинформации о курсовых работах
3. Создание необходимыхотчетов
4. Просмотр отчетов наэкране и вывод на печать.
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 DocumentInterface) интерфейсов для управления оконнымиформами. Добавлено средство проектирования контекстного меню (Shortcut Menu Designer). Новый редактор облегчаетпрограммирование, обеспечивая форматирование программного кода и выделениецветом.
- Введены новыемастера и дополнены старые. Новый мастер Application Wizard позволяет создавать рабочее пространство проекта.
- Продвинутовнедрение OLE-технологии. Поддерживается работа сновыми элементами управления ActiveX,являющимися OLE-объектами.
- Улучшенотладчик.
- Введены новыекоманды и функции.
3. Практическая часть
/>/>/>3.1Определение этапов разработки программного обеспечения
В процессе обучения мнойбыли получены навыки проектирования задач, что и было применено в даннойкурсовой работе. Таким образом, задача была разбита на следующие этапы:
ü Разработка модели представленияданных
ü Разработка структуры интерфейса
ü Проектирование входных и выходныхформ
ü Программирование приложения
ü Проверка функциональности наконтрольном примере./>/>/>3.2Принципы реализации программного обеспечения
При создании программногообеспечения был применен принцип разделения, то есть все функционально разныечасти вынесены в отдельные клиентские формы.
Программированиепроизводилось путем описания методов и событий активных элементов форм.
Доступ к данным, хранимымв базе данных, осуществлялся через SQL – запросы.
SQL – команды позволили осуществить добавлениеи удаление данных из базы.
3.3 Руководство Пользователя
После запускапроекта на экране появляется главное окно программы, с которого начинаетсядальнейшая работа.
/>
Данная форма «Учеткурсовых работ кафедры ВИТ» содержит информацию о студенте и о курсовой работе.Для получения необходимой информации, в списке «Группа» выбираем любую группукафедры ВИТ. После выбора группы в поле «ФИО» появляются все студенты,принадлежащие данной группе. При выборе студента происходит вывод информации предмете:в списке «Предмет» появляется название предмета (или предметов), по которомупроводится курсовая работа. При дальнейшем выборе предмета из списка происходитзаполнение следующей информации о курсовой работе: тема курсовой работы,оценка, дата сдачи и преподаватель.
/>
При нажатии накнопку «Добавить» появляется форма «Добавление информации о студенте и курсовойработе» с пустыми полями, в которые необходимо заполнить, чтобы занести информациюо студенте и о его курсовой работе в нашу базу данных:
/>
В разделе«Информация о студенте» можем добавить группу с помощью кнопки «Добавитьгруппу». Вводим название группы, нажимаем кнопку «Добавить группу», это полеавтоматически очищается для дальнейшего добавления групп, а только чтодобавленная группа мгновенно заносится в наш список групп в поле «Группа»,выбрав которую вбиваем информацию о студенте.
Аналогичным образомработают кнопки «Добавить предмет» и «Добавить уч.степень» (Добавить ученуюстепень преподавателя). Информация заносится в списки «Предмет» и «Ученаястепень» соответственно.
/>
Дальше идет заполнениеполей: «Тема курсовой работы» — вводим тему; «Оценка» — выбираем из спискаоценок (3,4,5) нужную нам оценку; «Дата сдачи» — при нажатии на кнопку ( /> ) появляетсяформа «Выберите дату» в виде календарика:
/>
В ней при помощикнопки «Выбрать» выбираем необходимую нам дату сдачи курсовой работы изаполняем информацию о преподавателе (ФИО, ученая степень).
/>
Нажимаем основнуюкнопку «Добавить», и информация о студенте и курсовой работе заносится в нашубазу данных.
При нажатии накнопку «Добавить», также происходит проверка на выявление совпадения темыкурсовой работы. Если вводимая тема совпадает с уже существующей темой, товыводится сообщение:
/>
и вводимые данныене добавляются.
В противном случаевыводится сообщение:
/>
и вводимые данныеуспешно заносятся в базу данных.
Если мы хотим передвводом темы курсовой работы просмотреть кокой – нибудь предмет на наличие ранеевыдававшихся тем по этому предмету, то в списке «Предмет» выбираем нужный нампредмет и нажимаем кнопку «Показать темы».
В правой стороне всписке появляются список тем.
/>
Также мы можемудалять студента при помощи кнопки «Удалить» в главном окне программы (при этомтема курсовой работы не удаляется, для последующего выявления уже сданных темкурсовых работ).
/>
Если студент,которого хотим удалить, не выбран, то выводится сообщение:
/>
При выборе студентаи нажатии на кнопку «Удалить» происходит удаление студента и выводитсясообщение об успешном удалении:
/>
Кнопки «Отчет постудентам» и «Отчет по преподавателям» позволяют просмотреть информацию:
/>
1)о студенте: ФИО,по какому предмету, какую курсовую, на какую оценку, и когда он защитил;
2)о преподавателе:ФИО, ученую степень, предмет, который он вел, и какая тема курсовой работы выдаваласьим по данному предмету.
Заключение
В процессе выполнения курсовойработы мной были освоены средства написания прикладных систем управления базамиданных на основе VisualFox Pro9.0.С помощью широких возможностей программы VisualFoxPro 9.0осуществлен удобный интерфейс, легкий доступ к данным и другие возможности,освещенные в данной курсовой работе. Считаю, что возможности VisualFox Pro9.0достаточно широкие, чтобы написать программу любой сложности, но, к сожалению,в Visual FoxPro 9.0много недоработок. Поэтому VisualFox Pro9.0 совершенно не пригоден для написания серьезных программ.
Созданная система имеет удобныйинтерфейс, обеспечивающий быстрый доступ к необходимым данным. Данныйпрограммный продукт позволяет вводить и удалять различные данные.
Список литературы:
1. С. Каратыгин, А.Тихонов, Л.Тихонова Visual FoxRro К вершинам мастерства – М.: ВосточенаяКнижная Компания, 1997.
2. А.М. ВендеровПроектирование программного обеспечения экономических информационных систем:Москва “Финансы и статистика”,2000.
3. Курс лекцийМакарец.А.Б
Приложение 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 – «Учет курсовых работ кафедры ВИТ»
Инициализации формы:
SETDELETE 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;
WHEREALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=ALLTRIM(This.Value)AND t10.id_group=student.id_group;
INTO CURSORstudent3
ThisForm.text9.Value=''
ThisForm.text11.Value=''
ThisForm.text12.Value=''
ThisForm.text1.Value=''
SELECT id_professor,id_theme,id_subject,mark,datedelivery,id_student FROMcourseworks;
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 CURSORccccwork
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 FORMFORM2.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)=bAND 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;
WHEREALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=bAND 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')
doform 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 profPREVIEW
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 CURSORsubject_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 CURSORdegree_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) asm_id_student,MAX(courseworks.id_subject) asm_id_subject,MAX(courseworks.id_professor) asm_id_professor,MAX(courseworks.id_theme) as m_id_theme FROM courseworks INTOCURSOR 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 CURSORdegree_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 CURSORsubject_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 CURSORstudent_max
SELECT MAX(professor.id_professor) as m_professor FROM professor INTOCURSOR 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)
INSERTINTOcourseworks(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 INTOprofessor(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) intocursor 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