Загрузка данных


$dbPath = "$HOME\Desktop\ТБ Ромашка.accdb"

# Удаляем старый пустой файл, если он остался
if (Test-Path $dbPath) {
    Remove-Item $dbPath -Force
}

Write-Host "Создание базы данных и заполнение данных..." -ForegroundColor Cyan

# Запускаем Access
$app = New-Object -ComObject Access.Application
$app.NewCurrentDatabase($dbPath)
$app.DoCmd.SetWarnings($false) # Отключаем подтверждения для автозаполнения

# 1. Создание таблиц
$app.DoCmd.RunSQL("CREATE TABLE [Клиенты] ([№ клиента] LONG CONSTRAINT PK_Clients PRIMARY KEY, [Фамилия] TEXT(100), [Адрес] TEXT(150), [Телефон] TEXT(50));")
$app.DoCmd.RunSQL("CREATE TABLE [Товары] ([№ товара] COUNTER CONSTRAINT PK_Products PRIMARY KEY, [Товар] TEXT(100), [Количество] LONG, [Цена] CURRENCY, [Срок годности] DATETIME);")
$app.DoCmd.RunSQL("CREATE TABLE [Заказы] ([№ заказа] COUNTER CONSTRAINT PK_Orders PRIMARY KEY, [№ товара] LONG, [№ клиента] LONG, [Количество] LONG, [Дата заказа] DATETIME);")

# 2. Заполнение таблицы «Клиенты»[span_0](start_span)[span_0](end_span)[span_1](start_span)[span_1](end_span)
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (1, 'Сахаренко А.П.', 'Ул, Ложевая, д. 17, кв. 4', '555-55-55')")
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (2, 'Аксенов И. И.', 'ул. Лермонтовская, д. 5, кв. 7', 'нет')")
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (3, 'Климова В. С.', 'Газетный проезд, д.41, кв. 6', '14-45-78')")
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (4, 'Бережной Т. О.', 'ул. Гагарина, д. 5, кв.102', '23-14-00')")
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (5, 'Соколова К. В.', 'ул. Пушкинская, д. 56, кв. 99', '789-12-44')")
$app.DoCmd.RunSQL("INSERT INTO [Клиенты] ([№ клиента], [Фамилия], [Адрес], [Телефон]) VALUES (6, 'Петренко Г. В.', 'ул. Новая, д. 20, кв. 10', 'нет')")

# 3. Заполнение таблицы «Товары»[span_2](start_span)[span_2](end_span)[span_3](start_span)[span_3](end_span)
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Кофе', 100, 45.00, #2010-08-15#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Чай', 200, 28.50, #2010-08-15#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Сок яблочный', 120, 24.00, #2009-10-16#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Уксус', 30, 8.00, #2011-01-04#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Мука', 100, 10.00, #2001-02-05#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Соль', 50, 3.00, #2011-02-05#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Макароны', 150, 12.00, #2009-05-01#)")
$app.DoCmd.RunSQL("INSERT INTO [Товары] ([Товар], [Количество], [Цена], [Срок годности]) VALUES ('Пшено', 140, 8.00, #2009-01-01#)")

# 4. Заполнение таблицы «Заказы»[span_4](start_span)[span_4](end_span)[span_5](start_span)[span_5](end_span)
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (3, 5, 15, #2009-07-07#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (2, 2, 12, #2009-07-12#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (5, 3, 65, #2009-08-19#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (8, 2, 5, #2009-09-21#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (7, 6, 80, #2009-09-22#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (1, 1, 30, #2009-05-21#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (4, 4, 10, #2009-05-07#)")
$app.DoCmd.RunSQL("INSERT INTO [Заказы] ([№ товара], [№ клиента], [Количество], [Дата заказа]) VALUES (6, 3, 3, #2009-10-20#)")

# 5. Установка связей с целостностью данных[span_6](start_span)[span_6](end_span)
$db = $app.CurrentDb
$rel1 = $db.CreateRelation("FK_Заказы_Клиенты", "Клиенты", "Заказы", 1)
$rel1.Attributes = 1
$field1 = $rel1.CreateField("№ клиента")
$field1.ForeignName = "№ клиента"
$rel1.Fields.Append($field1)
$db.Relations.Append($rel1)

$rel2 = $db.CreateRelation("FK_Заказы_Товары", "Товары", "Заказы", 1)
$rel2.Attributes = 1
$field2 = $rel2.CreateField("№ товара")
$field2.ForeignName = "№ товара"
$rel2.Fields.Append($field2)
$db.Relations.Append($rel2)

$app.DoCmd.SetWarnings($true)
$app.RefreshDatabaseWindow()
$app.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($app) | Out-Null

Write-Host "Готово! Файл 'ТБ Ромашка.accdb' теперь со всеми таблицами и данными." -ForegroundColor Green