Вкладка Формы, кнопка Создать, Конструктор, источник данных таблица Поставщики, ОК.
Добавить заголовок формы (Вид, Заголовок/примечание формы) и внести в заголовок формы надпись «Выборка поставщиков по заданному городу».
В области данных создать элемент – поле со списком (использовать кнопку Поле со списком; значение выбирается из таблицы; источник данных – таблица Города; выбрать поле Города; задать нужную ширину столбца или согласиться с предложенной; значение Запомнить; ввести подпись поля Город, кнопка Готово).
Выделить созданное поле, открыть окно свойств, выбрать вкладку События, выбрать событие После обновления, кнопка … (Построить), Программа, ОК.
Внести текст процедуры.
'Определение строковых переменных
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
Пример 6. Открыть таблицу Товары, прочесть и вывести на экран все записи.
'определение объектных переменных
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Товары", dbOpenTable)
Do Until rst.EOF
MsgBox rst![Индекс товара] & " " & rst![Наименование] & _
" " & rst![Розничная цена] & " " & rst![Сортность], vbOKOnly
rst.MoveNext
Loop
Пример 7. Выбор записей из таблицы Поставка для товара с кодом 123.
Dim dbs As Database
Dim rst As Recordset
Dim sqlq As String
Set dbs = CurrentDb()
sqlq = "Select Поставка.* From Поставка WHERE [Индекс товара] = 123"
Set rst = dbs.OpenRecordset(sqlq)
If rst.RecordCount = 0 Then
MsgBox "Такой индекс товара не найден", vbOKOnly
Else
Do Until rst.EOF
MsgBox "Индекс товара " & rst![Индекс товара] & " " _
& " Количество " & rst![Количество] & " " & _
" Закупочная цена " & rst![Закупочная цена], vbOKOnly
rst.MoveNext
Loop
End If
Пример 8. Выбор данных из связанных таблиц Товары и Поставка, связанных по индексу товара.
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Select Товары.[Индекс товара],Товары.Наименование, Поставка.Количество" & _
" From Товары Inner Join Поставка On Товары.[Индекс товара] = Поставка.[Индекс товара]")
Do Until rst.EOF
MsgBox "Индекс товара " & rst![Индекс товара] & " " _
& " Наименование " & rst![Наименование] & " " & _
" Количество " & rst![Количество], vbOKOnly
rst.MoveNext
Loop
Пример 9. Выбор данных из трех связанных таблиц Товары, Поставщики и Поставка.
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb()
Set rst = dbs.OpenRecordset("Select Поставщики.Поставщик,"& _
" Товары.Наименование, Поставка.[Дата поступления]," & _
" Поставка.Количество" & _
" From Товары Inner Join (Поставщики Inner Join Поставка " & _
" On Поставщики.[Код поставщика]= Поставка.[Код поставщика])" & _
" On Товары.[Индекс товара] = Поставка.[Индекс товара]")
Do Until rst.EOF
MsgBox "Поставщик " & " " & rst![Поставщик] & _
" Наименование " & rst![Наименование] & " " _
& " Дата поступления " & rst![Дата поступления] & " " & _
" Количество " & rst![Количество], vbOKOnly
rst.MoveNext
Loop
Пример 10. Поиск записей по наименованию товара (не ключевое поле) в таблице Товары и вывод найденных записей.
'определение объектных переменных
Dim dbs As Database
Dim rst As Recordset
'определение полей для ввода ключей
Dim nt As String
'запись в dbs ссылки на текущую базу данных
Set dbs = CurrentDb()
'запись в rst ссылки на таблицу Поставка
Set rst = dbs.OpenRecordset("Товары", dbOpenTable)
'ввод названия товара для поиска
nt = InputBox("Введите название товара", "Ввод параметров поиска")
'цикл, работающий пока таблица не закончилась
Do While Not rst.EOF
'сравнение введенного наименования товара с наименованием ‘ товара из записи таблицы Товары
If nt = rst![Наименование] Then
'вывод найденной записи
MsgBox " Наименование " & rst![Наименование] & _
" Розничная цена " & rst![Розничная цена], vbOKOnly
End If
'переход на следующую запись
rst.MoveNext
'конец цикла
Loop
Пример 11. Поиск записей по дате поступления (не ключевое поле) в таблице Поставка и вывод найденных записей.
'определение объектных переменных
Dim dbs As Database
Dim rst As Recordset
'определение полей для ввода ключей
Dim dp As Date
'запись в dbs ссылки на текущую базу данных
Set dbs = CurrentDb()
'запись в rst ссылки на таблицу Поставка
Set rst = dbs.OpenRecordset("Поставка", dbOpenTable)
'ввод даты поступления для поиска
dp = InputBox("Введите дату поступления", "Ввод параметров поиска")
'цикл, работающий пока таблица не закончилась
Do While Not rst.EOF
'сравнение введенной даты поставки с датой поставки из записи таблицы
If dp = rst![Дата поступления] Then
'вывод найденной записи
MsgBox " Индекс товара " & rst![Индекс товара] & " Дата поступления " & _
rst![Дата поступления] & " Количество " & rst![Количество], vbOKOnly
End If
'переход на следующую запись
rst.MoveNext
'конец цикла
Loop
Пример 12. Поиск записей по индексу товара в таблице Товары и замена поля Розничная цена.
'определение объектных переменных
Dim dbs As Database
Dim rst As Recordset
'определение полей для поиска данных
Dim it As Integer
'запись в dbs ссылки на текущую базу данных
Set dbs = CurrentDb()
'запись в rst ссылки на таблицу Товары
Set rst = dbs.OpenRecordset("Товары", dbOpenTable)
'ввод индекса товара для поиска
it = InputBox("Введите индекс товара", "Ввод параметров поиска")
'цикл, работающий пока таблица не закончилась
Do While Not rst.EOF
'сравнение введенного индекса товара с индексом товара из записи таблицы
If it = rst![Индекс товара] Then
'вывод найденной записи
MsgBox " Индекс товара " & rst![Индекс товара] & " Розничная цена " & _
rst![Розничная цена], vbOKOnly
rst.Edit
rst![Розничная цена] = InputBox("Введите новую розничную цену")
'обновление записи
rst.Update
MsgBox "Замена розничной цены произведена", vbOKOnly
End If
'переход на следующую запись
rst.MoveNext
'конец цикла
Loop
Пример 13. Поиск записей в таблице Товары для записей, где поле Розничная цена меньше заданной.
'определение объектных переменных
Dim dbs As Database
Dim rst As Recordset
'определение полей для поиска данных
Dim cena As Currency
'запись в dbs ссылки на текущую базу данных
Set dbs = CurrentDb()
'запись в rst ссылки на таблицу Товары
Set rst = dbs.OpenRecordset("Товары", dbOpenTable)
‘ввод розничной цены для сравнения
cena = InputBox("Введите розничную цену", "Ввод параметров поиска")
‘цикл, работающий пока таблица не закончилась
Do While Not rst.EOF
'сравнение розничных цен
If rst![Розничная цена] <= cena Then
'вывод найденной розничной цены
MsgBox " Наименование " & rst![Наименование] &
" Розничная цена " & rst![Розничная цена], vbOKOnly
End If
'переход на следующую запись
rst.MoveNext
'конец цикла
Loop
УПРАВЛЕНИЕ ПРИЛОЖЕНИЕМ ПОЛЬЗОВАТЕЛЯ
Наличие большого количества объектов (таблиц, форм, запросов, отчетов, макросов, модулей), не сгруппированных по функциям приложения, затрудняет выполнение пользователем задач обработки данных в автоматизируемой предметной области.
Для организации эффективной работы пользователя нужно создать целостное приложение данной предметной области, все компоненты которого должны быть сгруппированы по функциональному назначению. При этом необходимо обеспечить удобный графический интерфейс пользователя.
Для объединения объектов в едином диалоговом приложении могут быть созданы так называемые кнопочные формы. Кнопочная форма является панелью управления приложением. Кнопки такой формы обеспечивают вызов других кнопочных форм, а также отдельных объектов: отчетов, форм, макросов, модулей. Сюда же помещаются кнопки для возврата к кнопочным формам предыдущих уровней, выхода из Access. Обычно также предусматривается кнопка для изменений самой кнопочной формы.
Создание панели управления приложением