Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пос_БД_SQL_Server_Access.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.41 Mб
Скачать

Пример 3. Рассчитать суммарную поставку по каждому индексу товара в таблице поставка.

Dim dbs As Database

Dim rst As Recordset

Dim it As Integer

Dim Sp As Integer

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Поставка", dbOpenTable)

rst.Index = "Индекс товара"

it = rst![Индекс товара]

Sp = 0

Do While Not rst.EOF

If it = rst![Индекс товара] Then

Sp = Sp + rst![Количество]

Else

MsgBox "Индекс товара " & it & Chr(13) &_

"Суммарная поставка " & Sp, vbOKOnly

it = rst![Индекс товара]

Sp = 0

Sp = Sp + rst![Количество]

End If

rst.MoveNext

Loop

MsgBox "Индекс товара " & it & Chr(13) & _

"Суммарная поставка " & Sp, vbOKOnly

Пример 4. Создать новую таблицу Продукты из двух полей Индекс товара и Название, обеспечить ввод данных в эту таблицу.

On Error GoTo Err_Кнопка_Click

Dim dbs As DAO.Database

Dim rst As DAO.TableDef

Dim Fiel1 As DAO.Field

Dim Fiel2 As DAO.Field

Dim rstt As DAO.Recordset

Dim indi As DAO.Index

Set dbs = CurrentDb()

'создание таблицы

Set rst = dbs.CreateTableDef("Продукты")

'описание первого поля Fiel1

Set Fiel1 = rst.CreateField("Индекс товара", dbInteger)

'добавление поля Fiel1 в семейство полей таблицы tb1

rst.Fields.Append Fiel1

'описание второго поля Fiel2

Set Fiel2 = rst.CreateField("Название", dbText, 20)

'добавление поля Fiel2 в семейство полей таблицы tb1

rst.Fields.Append Fiel2

'добавление таблицы в семейство таблиц

dbs.TableDefs.Append rst

'создание индекса с именем ИндексПродукт

Set indi = rst.CreateIndex("ИндексПродукт")

'задание поля, по которому строится индекс

indi.Fields.Append indi.CreateField("Индекс товара")

'добавление индекса в семейство индексов

rst.Indexes.Append indi

MsgBox "Таблица Продукты создана", vbOKOnly

zzz:

Set rstt = dbs.OpenRecordset("Продукты")

Do While MsgBox("Будем вводить данные", vbOKCancel) = vbOK

'добавление пустой записи

rstt.AddNew

rstt![Индекс товара] = InputBox("Введите индекс товара")

rstt![Название] = InputBox("ВВедите название")

'запись введенных данных в таблицу

rstt.Update

Loop

'описание ошибочной ситуации

Exit_Кнопка_Click:

Exit Sub

Err_Кнопка_Click:

If Err.Number = 3010 Then

MsgBox "Таблица уже существует", vbOKOnly

GoTo zzz

Else

MsgBox Err.Description

End If

Resume Exit_Кнопка_Click

Пример 5. В форме Поставщики_Города при выборе города из списка выводить на экран форму Поставщики со списком поставщиков из выбранного города.

Исходные данные:

таблица Поставщики (Код поставщика, Поставщик, Город, Воронежский), таблица Города (Город).

Поле Город в таблице Поставщики является полем с раскрывающимся списком, источником списка является таблица Города. Имеется форма Поставщики.

Для решения задачи необходимо создать форму Поставщики_Города нижеследующего вида и связать с ней процедуру.

Вкладка Формы, кнопка Создать, Конструктор, источник данных таблица Поставщики, ОК.

Добавить заголовок формы (Вид, Заголовок/примечание формы) и внести в заголовок формы надпись «Выборка поставщиков по заданному городу».

В области данных создать элемент – поле со списком (использовать кнопку Поле со списком; значение выбирается из таблицы; источник данных – таблица Города; выбрать поле Города; задать нужную ширину столбца или согласиться с предложенной; значение Запомнить; ввести подпись поля Город, кнопка Готово).

Выделить созданное поле, открыть окно свойств, выбрать вкладку События, выбрать событие После обновления, кнопка (Построить), Программа, ОК.

Внести текст процедуры.

'Определение строковых переменных

Dim StrDocName As String

Dim StrLinkCriteria As String

Dim Otvet As String

Otvet = MsgBox("Вас интересуют поставщики из города " & Me![ПолеСоСписком4] & "?", vbOKCancel)

If Otvet = vbCancel Then

Exit Sub

End If

StrDocName = "Поставщики"

StrLinkCriteria = "[Город] = Forms![Поставщики_Города]![ПолеСоСписком4]"

'Открытие формы, имя которой и условие

'отбора записей указано параметрами

DoCmd.OpenForm StrDocName, , , StrLinkCriteria

Exit Sub