Смекни!
smekni.com

Проектирование базы данных интернет-магазина в СУБД MS ACCESS (стр. 4 из 6)

Аналогичным образом ограничение на данное поле контролируется в таблице «доставка»

19. Поле «Дата_заказа» в таблице «Заказ» должно быть определенного вида, который контролируется маской ввода. По умолчанию выставляется дата добавления заказа и также контролируется невозможность ввода даты, превышающей текущую

20. Поле «Время_заказа» в таблице «Заказ» должно быть определенного вида, который контролируется маской ввода. По умолчанию выставляется время добавления заказа.

21. Поле «Статус_заказа» в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком подстановки

22. Поле «Способ_оплаты» в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком подстановки

23. Поле «Способ_получения» в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком подстановки

24. Поле «Табельный_номер» в таблице «Заказ» содержит фиксированный набор значений, источником которых является таблица «Сотрудник»

Аналогичным образом ограничение на данное поле контролируется в таблице «доставка»

25. Поле «Удаленность_МКАД» в таблице «Доставка» содержит ограничение на дальность расстояния осуществляемой доставки. Доставка ограничена радиусом 60-ти км. От МКАД

26. Поле «Статус_доставки» в таблице «Доставка» содержит фиксированный набор значений, контролируемый списком подстановки

27. Поле «Вид_доставки» в таблице «Доставка» содержит фиксированный набор значений, контролируемый списком подстановки

Ограничения, контролируемые на формах посредством Visual Basic:

1. Для организации ограничений на доступ определенных сотрудников к различным таблицам через формы на них предусмотрен ввод пароля (1111)

Private Sub Кнопка8_Click()

On Error GoTo Err_Кнопка8_Click

Dim stDocName As String

Dim stLinkCriteria, pas As String

pas = InputBox("Введите пароль", "Пароль")

If pas = "1111" Then

stDocName = ChrW(1055) & ChrW(1086) & ChrW(1089) & ChrW(1090) & ChrW(1072) & ChrW(1074) & ChrW(1097) & ChrW(1080) & ChrW(1082) & ChrW(47) & ChrW(1082) & ChrW(1072) & ChrW(1090) & ChrW(1077) & ChrW(1075) & ChrW(1086) & ChrW(1088) & ChrW(1080) & ChrW(1103)

DoCmd.OpenForm stDocName, , , stLinkCriteria

Else

MsgBox ("Пароль неверный")

EndIf

2. При редактировании формы «Доставка» осуществляется пересчет всех вычисляемых полей (Стоимость, Суммарный вес, Суммарный объем) при смене номера заказа, а также определяется вид доставки в зависимости от влияющих на его выбор факторов (Стоимость, Суммарный вес, Суммарный объем)

Private Sub №_заказа_Click()

Суммарный_вес_заказа.Requery

Суммарный_вес_заказа = Суммарный_вес_заказа.ItemData(0)

Суммарный_объем_заказа.Requery

Суммарный_объем_заказа = Суммарный_объем_заказа.ItemData(0)

Стоимость_заказа.Requery

Стоимость_заказа = Стоимость_заказа.ItemData(0)

If Удаленность_МКАД_км.Value = 0 Then Вид_доставки.Value = "Курьер"

If (Стоимость_заказа.Value > 30000) Or (Суммарный_вес_заказа.Value >= 2.5) Or (Суммарный_объем_заказа.Value > 4000) Then Вид_доставки.Value = "Легковой транспорт"

If (Суммарный_вес_заказа.Value >= 23) Or (Суммарный_объем_заказа.Value > 25000) Then Вид_доставки.Value = "Грузовой транспорт"

If Вид_доставки.Value = "Курьер" Then Стоимость_доставки.Value = 250

If Вид_доставки.Value = "Легковой транспорт" Then Стоимость_доставки.Value = 350 + Удаленность_МКАД_км.Value * 15

If Вид_доставки.Value = "Грузовой транспорт" Then Стоимость_доставки.Value = 450 + Удаленность_МКАД_км.Value * 20

3. При редактировании поля «Удаленность_от_МКАД_км» на форме «Доставка» осуществляется пересчет стоимости доставки в зависимости от его значения

Private Sub Удаленность_МКАД_км_LostFocus()

If Вид_доставки.Value = "Курьер" Then Стоимость_доставки.Value = 250

If Вид_доставки.Value = "Легковой транспорт" Then Стоимость_доставки.Value = 350 + Удаленность_МКАД_км.Value * 15

If Вид_доставки.Value = "Грузовой транспорт" Then Стоимость_доставки.Value = 450 + Удаленность_МКАД_км.Value * 20

End Sub

4. При обращении к форме «заказ» на основании номера заказа автоматически пересчитывается стоимость заказа

Private Sub №_заказа_Click()

Стоимость_заказа.Requery

End Sub

5. При обращении к форме «заказ» при определении способа получения заказа контролируется возможность ввода точки доставки в зависимости от его выбора

Private Sub Способ_получения_Click()

If Способ_получения.Value = "Доставка" Then

Название_точки.Value = " "

Название_точки.Visible = False

End If

If Способ_получения.Value = "Самовывоз" Then

Название_точки.Visible = True

End If

6. При обращении к форме «Корзина заказов», эмулирующей подобный функционал сайта автоматически определяется следующий номер заказа

Private Sub Form_Current()

Me![Список12].SetFocus

Список12.ListIndex = 0

Поле14.Value = Список12.Value + 1

End Sub

7. При обращении к форме «Корзина заказов», эмулирующей подобный функционал сайта контролируется возможность осуществления оформления заказа только при условии добавления в корзину хотя бы одной единицы товара, а также невозможность выбора подкатегории, не принадлежащей выбранной категории

Private Sub ПолеСоСписком2_Click()

ПолеСоСписком4.Value = ""

ПолеСоСписком6.Value = ""

If ПолеСоСписком2.Value <> "" And ПолеСоСписком4.Value <> "" And ПолеСоСписком6.Value <> "" Then

Кнопка18.Visible = True

Else

Кнопка18.Visible = False

End If

End Sub

Private Sub ПолеСоСписком4_Click()

ПолеСоСписком6.Value = ""

If ПолеСоСписком2.Value <> "" And ПолеСоСписком4.Value <> "" And ПолеСоСписком6.Value <> "" Then

Кнопка18.Visible = True

Else

Кнопка18.Visible = False

End If

End Sub

Private Sub ПолеСоСписком4_GotFocus()

Me.Refresh

End Sub

Private Sub ПолеСоСписком6_Click()

If ПолеСоСписком2.Value <> "" And ПолеСоСписком4.Value <> "" And ПолеСоСписком6.Value <> "" Then

Кнопка18.Visible = True

Else

Кнопка18.Visible = False

End If

End Sub

Private Sub ПолеСоСписком6_GotFocus()

Me.Refresh

End Sub

Аналогичным образом происходит проверка на категории и подкатегории при обращении к форме «Оценка», эмулирующей подобный функционал сайта

8. При обращении к форме «Оформление заказа», эмулирующей подобный функционал сайта, осуществляется пересчет всех вычисляемых полей (Стоимость, Суммарный вес, Суммарный объем) при смене номера заказа, а также определяется вид доставки в зависимости от влияющих на его выбор факторов (Стоимость, Суммарный вес, Суммарный объем)

Список69.Requery

Me![Список69].SetFocus

Список69.ListIndex = 0

№_заказа.Value = Список69.Value

Суммарный_вес_заказа.Requery

Me![Суммарный_вес_заказа].SetFocus

Суммарный_вес_заказа.ListIndex = 0

Суммарный_объем_заказа.Requery

Me![Суммарный_объем_заказа].SetFocus

Суммарный_объем_заказа.ListIndex = 0

Стоимость_заказа.Requery

Me![Стоимость_заказа].SetFocus

Стоимость_заказа.ListIndex = 0

If Удаленность_МКАД_км.Value = 0 Then Вид_доставки.Value = "Курьер"

If (Стоимость_заказа.Value > 30000) Or (Суммарный_вес_заказа.Value >= 2.5) Or (Суммарный_объем_заказа.Value > 4000) Then Вид_доставки.Value = "Легковой транспорт"

If (Суммарный_вес_заказа.Value >= 23) Or (Суммарный_объем_заказа.Value > 25000) Then Вид_доставки.Value = "Грузовой транспорт"

If Вид_доставки.Value = "Курьер" Then Стоимость_доставки.Value = 250

If Вид_доставки.Value = "Легковой транспорт" Then Стоимость_доставки.Value = 350 + Удаленность_МКАД_км.Value * 15

If Вид_доставки.Value = "Грузовой транспорт" Then Стоимость_доставки.Value = 450 + Удаленность_МКАД_км.Value * 20

9. При обращении к форме «Оформление заказа», эмулирующей подобный функционал сайта при редактировании поля «Удаленность_от_МКАД_км» на форме «Доставка» осуществляется пересчет стоимости доставки в зависимости от его значения

Private Sub Удаленность_МКАД_км_LostFocus()

If Вид_доставки.Value = "Курьер" Then Стоимость_доставки.Value = 250

If Вид_доставки.Value = "Легковой транспорт" Then Стоимость_доставки.Value = 350 + Удаленность_МКАД_км.Value * 15

If Вид_доставки.Value = "Грузовой транспорт" Then Стоимость_доставки.Value = 450 + Удаленность_МКАД_км.Value * 20

End Sub

10. При обращении к форме «Оформление заказа», эмулирующей подобный функционал сайта при редактировании поля «Логин» проверяется условие на его существование в БД для возможности оформления заказа

Dim i As Long, f As Boolean

Список144.Requery

Me![Список144].SetFocus

Список144.ListIndex = 0

f = False

For i = 0 To Список144.ListCount - 1

Список144.ListIndex = i

If Список144.Value = Логин.Value Then f = True

Next i

If f = False Then MsgBox ("Сначала зарегистрирутесь")

End Sub

Аналогичным образом происходит проверка при обращении к форме «Оценка товара клиентом», эмулирующей подобный функционал сайта

11. При обращении к форме «Регистрация», эмулирующей подобный функционал сайта при регистрации нового пользователя проверяются условия на обязательность заполнения определенных полей

Private Sub Кнопка70_Click()

On Error GoTo Err_Кнопка70_Click

Dim stDocName As String

stDocName = ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074) & ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) & ChrW(1088) & ChrW(1077) & ChrW(1075) & ChrW(1080) & ChrW(1089) & ChrW(1090) & ChrW(1088) & ChrW(1072) & ChrW(1094) & ChrW(1080) & ChrW(1102)

DoCmd.OpenQuery stDocName, acNormal, acEdit

stDocName = ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074) & ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) & ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092) & ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(49)

DoCmd.OpenQuery stDocName, acNormal, acEdit

If Поле92 <> "" Then

stDocName = ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074) & ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) & ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092) & ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(50)

DoCmd.OpenQuery stDocName, acNormal, acEdit

End If

If Поле100 <> "" Then

stDocName = ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074) & ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) & ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092) & ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(51)

DoCmd.OpenQuery stDocName, acNormal, acEdit

End If

If Номер_кред_карты <> "" Then

stDocName = ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074) & ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) & ChrW(1082) & ChrW(1088) & ChrW(1077) & ChrW(1076) & ChrW(1080) & ChrW(1090) & ChrW(1085) & ChrW(1091) & ChrW(1102) & ChrW(32) & ChrW(1082) & ChrW(1072) & ChrW(1088) & ChrW(1090) & ChrW(1091)

DoCmd.OpenQuery stDocName, acNormal, acEdit

End If

DoCmd.SetWarnings False

If Me.Dirty Then Me.Dirty = False

DoCmd.Close

Exit_Кнопка70_Click:

Exit Sub

Err_Кнопка70_Click:

MsgBox Err.Description

Resume Exit_Кнопка70_Click