Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по Ms Access.doc
Скачиваний:
92
Добавлен:
19.05.2015
Размер:
1.86 Mб
Скачать

Приложение

Рассмотрим реализацию следующей задачи:

Для некоторой фирмы-посредника между клиентом и поставщиками создать приложение, которое будет позволять вести работу с клиентом:

А) добавлять сведения о новом клиенте

Б) добавлять сведения о новых поступлениях товара

В) формировать бланк заказа, в котором будут видны сведения о

клиенте ( название, адрес, телефон, № счета), текущая дата,

список купленных товаров с указанием цены, поставщика, количества,

ставки НДС, итоговой суммы, с указанием фамилии сотрудника данной

фирмы, оформившего заказ, с возможностью сохранения данных по

продажам в отдельных таблицах для анализа деятельности предприятия,

с возможностью вывода этого бланка на печать в качестве счета к оплате.

Этапы реализации задачи:

  1. Создать таблицу «Анализ данных» (не заполнять) с полями:

Клиент

Исполнитель

Дата_заказа

Сумма_заказа

№_заказа - тип Счётчик

  1. Создать таблицу «Анализ данных1» (не заполнять) с полями:

Поставщик

Товар

Цена

№_заказа

  1. Создать таблицу «Товары» с полями:

Товар

Поставщик

Цена

Адрес_поставщика

№_счета_поставщика

  1. Создать таблицу «Клиент» с полями :

Клиент

Телефон

Адрес_клиента

№_счета_клиента

  1. Заполнить имеющимися данными эти таблицы.

  1. Создать таблицу «Промежуточная» (не заполнять) с полями:

Товар

Поставщик

Цена

Количество

Ставка_НДС

Сумма_с_НДС

7.Создать форму «Клиент» с элементами управления:

а) поле со списком на основе таблицы «Клиент»

б) кнопка с именем «OK»

8.Создать форму «Товар» с элементами управления:

а) список на основе таблицы «Товар» (поля

Товар, Поставщик, Цена)

б) кнопка с именем «OK»

9.Создать автоформу табличную на основе таблицы «Промежуточная».

10.Создать форму «Бланк _заказа» с элементами управления:

  • Поле_со_списком (имя –Исполнитель, с фиксированным набором значений, куда заносятся фамилии сотрудников данной фирмы)

  • Текстовое поле с именем Дата

  • Текстовые поля с именами Клиент, Телефон, Адрес_клиента, №счета_клиента

  • Кнопка «Клиенты»

  • Кнопка «Товары»

  • Кнопка «Добавить клиента»

  • Кнопка «Добавить товар»

  • Кнопка «Итог»

  • Текстовое поле с именем Итого

  • Внедрить подчинённую форму «Промежуточная»

  • Кнопка «Сохранить»

Форма будет выглядеть следующим образом:

11. Создать форму «Новый _товар» с элементами управления:

  • текстовые поля с именами: Товар, Поставщик, Цена, Адрес_поставщика, №счета_поставщика

  • кнопка Добавить_данные_о_товаре

В текстовом поле Дата должна стоять текущая дата.

Для этого в свойствах этого поля:

Вкладка ДАННЫЕ/Значение по умолчанию =Date().

После открытия формы в этом поле автоматически появляется значение текущей даты.

  1. По нажатию кнопки Клиенты должна открываться форма «Клиент»:

Private Sub Клиенты_Click()

DoCmd.OpenForm ("Клиент")

End Sub

  1. По нажатию кнопки Товары должна открываться форма «Товар»:

Private Sub Товары_Click()

DoCmd.OpenForm ("Товар")

End Sub

  1. По нажатию кнопки Добавить Товар должна открываться форма

«Новый_товар».

Private Sub Добавить_товар_Click()

DoCmd.OpenForm ("Новый_товар")

End Sub

  1. По нажатию кнопки Добавить Клиента данные, введённые в текстовые поля формы «Бланк» должны заноситься в таблицу «Клиент»:

Private Sub Добавить_клиента_Click()

Dim basa As Database, nabor As Recordset

Set basa = CurrentDb

Set nabor = basa.OpenRecordset("Клиент", dbOpenTable)

With nabor

.AddNew

.Fields!клиент = Me.клиент.Value

.Fields!адрес = Me.Адрес_клиента.Value

.Fields!телефон = Me.телефон.Value

.Fields!№счета = Me.№счета_клиента.Value

.Update

.Close

End With

Set basa = Nothing

End Sub

5. По нажатию кнопки OK в форме «Клиент» выбранные данные из поля со списком должны появляться в форме «Бланк» в текстовых полях с данными клиента:

Private Sub OK_Click()

Dim basa As Database, polespisok As ComboBox, frm As Form_бланк

Set basa = CurrentDb

Set polespisok = Me.ПолеСоСписком2

Set frm = Forms!бланк

If Not IsNull(polespisok) Then

frm.клиент.Value = polespisok.Column(0)

frm.Адрес_клиента.Value = polespisok.Column(1)

frm.телефон.Value = polespisok.Column(2)

frm.№счета_клиента.Value = polespisok.Column(3)

Else

MsgBox "Не было выбора"

End If

Set basa = Nothing

DoCmd.Close acForm, "Клиент"

End Sub

6. По нажатию кнопки OK в форме «Товар» выбранные данные из списка должны появляться в таблице «Промежуточная» и автоматически в форме «Бланк» в подчиненной форме «Промежуточная»:

Private Sub OK_Click()

Dim basa As Database, spisok As ListBox, nabor As Recordset, i As Variant

Set basa = CurrentDb

Set spisok = Me.Список0

If spisok.ItemsSelected.Count > 0 Then

Set nabor = basa.OpenRecordset("Промежуточная", dbOpenTable)

With nabor

Do Until IsNull(.Fields!товар)

.Edit

.Fields!товар = Null

.Fields!поставщик = Null

.Fields!цена = Null

.Fields!количество = Null

.Fields!ставка_НДС = Null

.Fields!сумма_с_НДС = Null

.Update

.MoveNext

Loop

.MoveFirst

For Each i In spisok.ItemsSelected

.Edit

.Fields!товар = spisok.Column(0, i)

.Fields!поставщик = spisok.Column(1, i)

.Fields!цена = spisok.Column(2, i)

.Update

.MoveNext

Next i

Me.Refresh

.Close

Set basa = Nothing

End With

Else

MsgBox "Список пустой"

End If

DoCmd.Close acForm, "Товар"

End Sub

7. Данные в поле Количество, Ставка_НДС вводятся с клавиатуры.

8. Для того чтобы автоматически просчитывалась стоимость заказа по каждому виду товара, и это значение появлялось в поле Сумма_с_НДС, пишем процедуру по событию для поля ставка_НДС – после обновления:

Private Sub ставка_НДС_AfterUpdate()

Me.Сумма_с_НДС = Me.цена * Me.количество + Me.цена * Me.ставка_НДС / 100

End Sub

9. По нажатию кнопки Добавитиь_данные_о_товаре в форме «Новый_товар» данные, введённые в текстовые поля формы должны заноситься в таблицу «Товар»:

Private Sub Добавить_данные_о_товаре_Click()

Dim basa As Database, nabor As Recordset

Set basa = CurrentDb

Set nabor = basa.OpenRecordset("Товар", dbOpenTable)

With nabor

.AddNew

.Fields!товар = Me.товар.Value

.Fields!поставщик = Me.поставщик.Value

.Fields!Адрес_поставщика = Me.Адрес_поставщика.Value

.Fields!цена = Me.цена.Value

.Fields!№счета_поставщика = Me.№счета_поставщика.Value

.Update

.Close

End With

Set basa = Nothing

DoCmd.Close acForm, "Новый_товар"

End Sub

10. По нажатию кнопки Итог в текстовом поле Итого должно

печататься значение суммарной стоимости заказа:

Private Sub итог_Click()

Dim basa As Database, nabor As Recordset, s As Currency

Set basa = CurrentDb

Set nabor = basa.OpenRecordset("Промежуточная", dbOpenForwardOnly)

With nabor

Do Until.EOF