Option Compare Database

Public Sub create_data()
Dim strSQL As String
DoCmd.SetWarnings (False)

' Создание таблиц

strSQL = "create table Группа (" _
& "Код counter(1,1) primary key not null," _
& "Наименование varchar(100) not null," _
& "Курс int" _
& ")"
DoCmd.RunSQL strSQL

strSQL = "create table Студент (" _
& "Код counter(1,1) primary key not null," _
& "Фамилия varchar(50) not null," _
& "Имя varchar(50) not null," _
& "Отчество varchar(50) not null," _
& "Код_группы int not null," _
& "constraint fk_group FOREIGN KEY(Код_группы) REFERENCES Группа(Код)" _
& ")"
DoCmd.RunSQL strSQL

strSQL = "create table Дисциплина (" _
& "Код counter(1,1) primary key not null," _
& "Наименование varchar(255) not null," _
& "Семестр int" _
& ")"
DoCmd.RunSQL strSQL

strSQL = "create table Экзамен (" _
& "Код counter(1,1) primary key not null," _
& "Код_студента int not null," _
& "Код_дисциплины int not null," _
& "[Оценка] integer," _
& "Семестр int," _
& "constraint fk_student FOREIGN KEY(Код_студента) REFERENCES Студент(Код)," _
& "constraint fk_discipline FOREIGN KEY(Код_дисциплины) REFERENCES Дисциплина(Код)," _
& "CONSTRAINT UC_Exam unique(Код_студента,Код_дисциплины,Семестр,Оценка)" _
& ")"
DoCmd.RunSQL strSQL

strSQL = "create table Стипендия (" _
& "Код counter(1,1) primary key not null," _
& "Код_студента int not null," _
& "Размер float," _
& "Семестр int not null," _
& "constraint fk_student_stipend FOREIGN KEY(Код_студента) REFERENCES Студент(Код)," _
& "CONSTRAINT UC_Step unique(Код_студента,Семестр,Размер)" _
& ")"
DoCmd.RunSQL strSQL

'Заполнение таблиц
Dim ID As Variant

DoCmd.RunSQL "insert into Группа(Наименование, Курс) Values('2ИВТ','2');"
DoCmd.RunSQL "insert into Группа(Наименование, Курс) Values('3ИВТ','3');"
DoCmd.RunSQL "insert into Группа(Наименование, Курс) Values('1ИВТуск','2');"

ID = DLookup("[Код]", "Группа", "[Наименование] = '2ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Петров', 'Федор', 'Иванович'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '2ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Иванов', 'Петр', 'Исидович'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '2ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Сидоров', 'Геннадий', 'Сергеевич'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '2ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Умнов', 'Александр', 'Васильевич'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '2ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Леонова', 'Елена', 'Карловна'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '3ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Петренко', 'Ольга', 'Петровна'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '3ИВТ'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Феррейро', 'Хуан-Карлос', 'Сидорович'," & ID & ");"

ID = DLookup("[Код]", "Группа", "[Наименование] = '1ИВТуск'")
DoCmd.RunSQL "insert into Студент(Фамилия,Имя,Отчество, Код_группы) Values('Майорчук', 'Николай', 'Миронович'," & ID & ");"

DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Веб-программирование',6)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Операционные системы',6)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Компьютерные Сети',6)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Специальный курс',6)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Базы данных',5)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Программирование',4)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Иностранный язык',4)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Математическая логика',4)"
DoCmd.RunSQL "insert into Дисциплина(Наименование,Семестр) Values('Физика',4)"

' Заполняем экзамены для весенных семестров 1-4 курсов. Базы данных 5 семестра не должны попасть в таблицу
DoCmd.RunSQL "insert into Экзамен(Код_студента, Код_дисциплины, Семестр) select Студент.Код, Дисциплина.Код, Дисциплина.Семестр " _
& " from Дисциплина, Студент, Группа " _
& " where Дисциплина.Семестр in (2,4,6,8)" _
& " and Группа.Курс = Round(Дисциплина.Семестр/2+0.1)" _ ' Вычисляем курс по семестру для выбора групп
& "and Студент.Код_группы=Группа.Код" ' для студентов группы 

' Заполняем заготовку для расчета стипендий на следующий семестр после эказаменов
DoCmd.RunSQL "insert into Стипендия(Код_студента,Семестр) select distinct Студент.Код,Экзамен.Семестр+1 from Экзамен inner join Студент on Экзамен.Код_студента=Студент.Код"


End Sub

'Удаление данных
Public Sub drop_data()
Dim strSQL As String
DoCmd.SetWarnings (False)

DoCmd.RunSQL "drop table Экзамен"
DoCmd.RunSQL "drop table Стипендия"
DoCmd.RunSQL "drop table Студент"
DoCmd.RunSQL "drop table Дисциплина"
DoCmd.RunSQL "drop table Группа"
End Sub


