Загрузка данных
$desktop = [Environment]::GetFolderPath("Desktop")
$dbPath = Join-Path $desktop "Приемная комиссия.accdb"
if (Test-Path $dbPath) { Remove-Item $dbPath -Force }
$access = New-Object -ComObject Access.Application
$access.NewCurrentDatabase($dbPath)
$db = $access.CurrentDb()
# --- 1. СОЗДАНИЕ ТАБЛИЦ ---
$db.Execute("CREATE TABLE [ФАКУЛЬТЕТЫ] ([КОД_ФКТ] TEXT(2) PRIMARY KEY, [ФАКУЛЬТЕТ] TEXT(30), [ЭКЗАМЕН_1] TEXT(30), [ЭКЗАМЕН_2] TEXT(30), [ЭКЗАМЕН_3] TEXT(30))")
$db.Execute("CREATE TABLE [СПЕЦИАЛЬНОСТИ] ([КОД_СПЕЦ] TEXT(3) PRIMARY KEY, [СПЕЦИАЛЬНОСТЬ] TEXT(30), [КОД_ФКТ] TEXT(2), [ПЛАН] TEXT(255))")
$db.Execute("CREATE TABLE [АБИТУРИЕНТЫ] ([РЕГ_НОМ] TEXT(4) PRIMARY KEY, [КОД_СПЕЦ] TEXT(3), [МЕДАЛЬ] YESNO, [СТАЖ] SHORT)")
$db.Execute("CREATE TABLE [АНКЕТЫ] ([РЕГ_НОМ] TEXT(4) PRIMARY KEY, [ФАМИЛИЯ] TEXT(30), [ИМЯ] TEXT(20), [ОТЧЕСТВО] TEXT(20), [ГОРОД] TEXT(30), [ДАТА_РОЖД] DATETIME, [УЧ_ЗАВЕДЕНИЕ] TEXT(50))")
$db.Execute("CREATE TABLE [ОЦЕНКИ] ([РЕГ_НОМ] TEXT(4) PRIMARY KEY, [Оценка_1] BYTE, [Оценка_2] BYTE, [Оценка_3] BYTE)")
$db.Execute("CREATE TABLE [ИТОГИ] ([РЕГ_НОМ] TEXT(4) PRIMARY KEY, [ЗАЧИСЛЕНИЕ] YESNO)")
# --- 2. ЗАПОЛНЕНИЕ ДАННЫХ ---
# ФАКУЛЬТЕТЫ
$db.Execute("INSERT INTO [ФАКУЛЬТЕТЫ] VALUES ('01', 'экономический', 'математика', 'география', 'русский язык')")
$db.Execute("INSERT INTO [ФАКУЛЬТЕТЫ] VALUES ('02', 'исторический', 'история Отечества', 'иностранный язык', 'сочинение')")
$db.Execute("INSERT INTO [ФАКУЛЬТЕТЫ] VALUES ('03', 'юридический', 'русский язык', 'иностранный язык', 'обществознание')")
# СПЕЦИАЛЬНОСТИ
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('101', 'финансы и кредит', '01', '25')")
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('102', 'бухгалтерский учет', '01', '40')")
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('201', 'история', '02', '50')")
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('203', 'политология', '02', '25')")
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('310', 'юриспруденция', '03', '60')")
$db.Execute("INSERT INTO [СПЕЦИАЛЬНОСТИ] VALUES ('311', 'социальная работа', '03', '25')")
# АБИТУРИЕНТЫ
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('1012', '101', True, 1)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('1023', '101', False, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('1119', '102', True, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('1120', '102', True, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('2010', '201', False, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('2015', '203', False, 3)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('2054', '203', True, 2)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('2132', '201', False, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('3005', '310', False, 0)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('3034', '311', False, 1)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('3067', '310', False, 3)")
$db.Execute("INSERT INTO [АБИТУРИЕНТЫ] VALUES ('3118', '310', False, 2)")
# АНКЕТЫ
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('1012', 'Васильева', 'Ольга', 'Николаевна', 'Пермь', #1981-10-12#, 'ПТУ № 8')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('1023', 'Быков', 'Алексей', 'Ильич', 'Кунгур', #1982-04-24#, 'Школа № 7')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('1119', 'Круг', 'Борис', 'Моисеевич', 'Пермь', #1982-09-18#, 'Школа № 102')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('1120', 'Листьев', 'Дмитрий', 'Владимирович', 'Березники', #1981-12-01#, 'Школа № 5')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('2010', 'Елькин', 'Виктор', 'Алексеевич', 'Елабуга', #1982-07-20#, 'ПТУ № 1')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('2015', 'Мухин', 'Олег', 'Иванович', 'Березники', #1978-03-25#, 'Школа № 77')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('2054', 'Григорьева', 'Наталья', 'Дмитриевна', 'Пермь', #1980-02-14#, 'Школа № 3')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('2132', 'Зубова', 'Ирина', 'Афанасьевна', 'Пермь', #1981-11-22#, 'Школа № 96')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('3005', 'Анохин', 'Сергей', 'Петрович', 'Пермь', #1982-03-30#, 'Школа № 12')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('3034', 'Жакин', 'Николай', 'Якимович', 'Пермь', #1981-10-19#, 'Школа № 12')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('3067', 'Дикий', 'Илья', 'Борисович', 'Березники', #1977-12-28#, 'Школа № 3')")
$db.Execute("INSERT INTO [АНКЕТЫ] VALUES ('3118', 'Ильин', 'Петр', 'Викторович', 'Кунгур', #1980-07-14#, 'ПТУ № 8')")
# ОЦЕНКИ
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('1012', 4, 5, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('1023', 4, 4, 4)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('1119', 5, 5, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('1120', 3, 5, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('2010', 3, 2, 0)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('2015', 5, 5, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('2054', 4, 5, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('2132', 4, 3, 5)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('3005', 3, 0, 0)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('3034', 3, 3, 4)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('3067', 5, 4, 3)")
$db.Execute("INSERT INTO [ОЦЕНКИ] VALUES ('3118', 5, 5, 4)")
# ИТОГИ
foreach ($reg in @('1012','1023','1119','1120','2010','2015','2054','2132','3005','3034','3067','3118')) {
$db.Execute("INSERT INTO [ИТОГИ] VALUES ('$reg', False)")
}
# --- 3. СВЯЗИ ТАБЛИЦ (ПО СХЕМЕ «ПРОВЕРЬ СЕБЯ») ---
function New-DbRelation ($db, $relName, $pTable, $fTable, $pField, $fField) {
$rel = $db.CreateRelation($relName, $pTable, $fTable)
$rel.Attributes = 4352 # Целостность данных + каскадное обновление + каскадное удаление
$fld = $rel.CreateField($pField)
$fld.ForeignName = $fField
$rel.Fields.Append($fld)
$db.Relations.Append($rel)
}
New-DbRelation $db "ФАКУЛЬТЕТЫ_СПЕЦИАЛЬНОСТИ" "ФАКУЛЬТЕТЫ" "СПЕЦИАЛЬНОСТИ" "КОД_ФКТ" "КОД_ФКТ"
New-DbRelation $db "СПЕЦИАЛЬНОСТИ_АБИТУРИЕНТЫ" "СПЕЦИАЛЬНОСТИ" "АБИТУРИЕНТЫ" "КОД_СПЕЦ" "КОД_СПЕЦ"
New-DbRelation $db "АБИТУРИЕНТЫ_АНКЕТЫ" "АБИТУРИЕНТЫ" "АНКЕТЫ" "РЕГ_НОМ" "РЕГ_НОМ"
New-DbRelation $db "АНКЕТЫ_ОЦЕНКИ" "АНКЕТЫ" "ОЦЕНКИ" "РЕГ_НОМ" "РЕГ_НОМ"
New-DbRelation $db "ОЦЕНКИ_ИТОГИ" "ОЦЕНКИ" "ИТОГИ" "РЕГ_НОМ" "РЕГ_НОМ"
# --- 4. СОЗДАНИЕ ФОРМ ---
try {
$m = [System.Type]::Missing
# Форма АНКЕТЫ
$f1 = $access.CreateForm()
$name1 = $f1.Name
$f1.RecordSource = "АНКЕТЫ"
$y = 300
foreach ($col in @("РЕГ_НОМ","ФАМИЛИЯ","ИМЯ","ОТЧЕСТВО","ГОРОД","ДАТА_РОЖД","УЧ_ЗАВЕДЕНИЕ")) {
$lbl = $access.CreateControl($name1, 100, 0, $m, $m, 300, $y, 2200, 320)
$lbl.Caption = $col
$null = $access.CreateControl($name1, 109, 0, $m, $col, 2600, $y, 3500, 320)
$y += 420
}
$access.DoCmd.Close(2, $name1, 1)
$access.DoCmd.Rename("АНКЕТЫ", 2, $name1)
# Форма АБИТУРИЕНТЫ
$f2 = $access.CreateForm()
$name2 = $f2.Name
$f2.RecordSource = "АБИТУРИЕНТЫ"
$y = 300
foreach ($col in @("РЕГ_НОМ","КОД_СПЕЦ","МЕДАЛЬ","СТАЖ")) {
$lbl = $access.CreateControl($name2, 100, 0, $m, $m, 300, $y, 2200, 320)
$lbl.Caption = $col
$type = if ($col -eq "МЕДАЛЬ") { 106 } else { 109 }
$null = $access.CreateControl($name2, $type, 0, $m, $col, 2600, $y, 2500, 320)
$y += 420
}
$access.DoCmd.Close(2, $name2, 1)
$access.DoCmd.Rename("АБИТУРИЕНТЫ", 2, $name2)
} catch {}
$access.CloseCurrentDatabase()
$access.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($access) | Out-Null
Write-Host "`nРАБОТА ПОЛНОСТЬЮ ВЫПОЛНЕНА!" -ForegroundColor Green
Write-Host "Файл 'Приемная комиссия.accdb' сохранен на вашем Рабочем столе.`n" -ForegroundColor Cyan