Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Клиенты", dbOpenDynaset)
rst.FindFirst "Город = ‘Омск’"
If rst.NoMatch Then
Else
MsgBox "Первый клиент Из Омска - " & rst![ Название]
End If
2. В окне отладки введите ? Поиск().
1. Создайте функцию (в стандартном модуле):
Function Copir(tForm As Form, tPole As String)
Dim tDB As Database, tTB As Recordset
Set tDB = CurrentDb()
Set tTB = tDB.OpenRecordset("Товары", dbOpenTable)
tTB.Index = "КодТовара"
tTB.Seek "=", tPole
tForm.[Цена] = tTB![Цена]
tTB.Close
End Function
2. В ячейке свойства После обновления поля КодТовара формы Заказанный товар введите
= Copir(Forms![Заказанный товар], Forms![Заказанный товар]![КодТовара]).
Примечание.
Для передачи информации в функцию используются два
параметра. Первый – название формы, в которую нужно скопировать поле. Это поле Цена в форме Заказанный товар. Второй параметр – поле формы, по которому производится поиск в таблице Товары. Во второй строке модуля объявляются переменные, соответствующие базе данных и таблице. Третья строка устанавливает переменную tTB на текущую открытую БД. В четвертой строке открывается таблица. В пятой строке задается индекс по полю Код товара. В шестой строке осуществляется поиск в таблице Товары поля с кодом товара, который выбран в форме. Седьмая строка производит копирование цены из таблицы в форму. В восьмой строке таблица закрывается.
Открытие объекта Recordset типа Table позволяет быстро найти запись в таблице при помощи метода Seek. Этот метод можно применять только к объекту Recordset типа Table, если поле таблицы, содержащее искомое значение, проиндексировано.
Еще один способ – использование функции DLookup. Процедура должна выглядеть следующим образом:
Private Sub КодТовара_AfterUpdate()
Dim strFilter As String
strFilter = "КодТовара=" & Me![КодТовара]
Me![Цена] = DLookup("Цена", "Товары", strFilter)
End Sub
Создание процедуры подсчета числа заказов на определенную дату
Создайте функцию подсчета количества заказов, сделанных в определенный день. Данная функция осуществляет подсчет заказов, оформленных 26 марта 2000 года.
Function Zakaz ()
Dim tDB As Database, rs As Recordset, dc As Integer
Set tDB = CurrentDb()
Set rs = tDB.OpenRecordset("Заказы", dbOpenTable)
rs.Index = "ДатаРазмещения"
rs.Seek "=", "26.03.00"
If rs.NoMatch Then
MsgBox "Нет заказов в этот день "
Else
Do
dc = dc + 1
rs.MoveNext
If rs.EOF Or rs![ДатаРазмещения] <> "26.03.00" Then
Exit Do
End If
Loop
MsgBox "Всего" & Str$(dc) & "заказов 26 марта."
End If
End Function
Создание процедуры возврата в окно базы данных
1. В кнопочную форму, созданную ранее, в режиме конструктора при отключенном мастере добавьте кнопку Окно базы даных.
2. Процедура:
Private Sub Окно_базы_данных_Click()
Dim dn As String
dn = "Заказы"
DoCmd.Close
DoCmd.SelectObject acTable, dn, True
End Sub
Данная процедура откроет окно базы данных и маркирует таблицу Заказы.
1. Откройте форму Заказы в режиме конструктора.
2. В свойстве Ограничиться списком поля КодКлиента формы Заказы выберите значение -Да
3. В свойстве события Отсутствие в списке поля со списком КодКлиента введите следующую процедуру:
Private Sub КодКлиента_NotInList(NewData As String, Response As Integer)
Dim intReturn As Integer
intReturn = MsgBox(" Клиента с таким кодом в списке нет. Хотите добавить ?", vbQuestion + vbYesNo)
If intReturn = vbYes Then
DoCmd.OpenForm FormName:="НовыйКлиент", DataMode:=acFormAdd, WindowMode:=acDialog
Response = acDataErrAdded
Exit Sub
End If
Response = acDataErrDisplay
End Sub
Примечание.
Данная процедура выводит окно сообщения, в котором можно подтвердить, что вы хотите добавить информацию о новом клиенте.
Рис.6.2. Форма для ввода нового клиента, созданная в лабораторной работе №3
Если нажать Да, процедура откроет форму НовыйКлиент в режиме диалога, используя метод DoCmd.OpenForm. Форма показана на рисунке 6.2.
Access передает два аргумента процедуре обработки события NotInList. Первый, NewData, содержит строку символов, введенную в поле со списком. Второй, Response, определяет реакцию Access на это событие.
После ввода новых данных нажмите кнопку Сохранить, чтобы они добавились в таблицу. Процедура присваивает аргументу Response константу acDataErrAdded. Access обновляет поле со списком и снова наличие введенного значения со списком. Если вы не сохранили введенные данные о новом клиенте, Access не найдет его в списке и выведет стандартное сообщение для этого события.
Если в окне сообщения была нажата кнопка Нет, аргументу Response присвоится константа acDataErrAdded, и Access отобразит стандартное сообщение.
4. Запустите форму Заказы и в поле КодКлиента введите код, которого нет в списке.
5. Перейдите к другому полю или нажмите Enter и проверьте работу процедуры.
Создать процедуры обработки событий для отбора данных при открытии отчета
1. Создайте простую модальную форму Диалог следующего содержания :
2. Для кнопок Просмотр отчета и Отмена напишите процедуры:
Private Sub Отмена_Click()
DoCmd.Close
End Sub
Private Sub Просмотр_отчета_Click()
Me.Visible = False
End Sub
3. Откройте ОтчетОКлиентах в режиме конструктора.
4. Откройте запрос – источник записей отчета.
5. В строке Условие отбора поля ДатаРазмещения введите условие:
Between Forms![Диалог]![С какой даты] And Forms![Диалог]![По какую дату]
6. В заголовок отчета добавьте поля и надписи:
|
7. Для открытия и закрытия отчета создайте процедуры:
Private Sub Report_Close()
Dim strDocName As String
strDocName = "Диалог"
DoCmd.Close acForm, strDocName
End Sub
Private Sub Report_Open()
Dim strDocName As String
strDocName = "Диалог"
DoCmd.OpenForm strDocName, , , , , acDialog
End Sub
8. Откройте отчет в режиме предварительного просмотра и проверьте правильность выбранных данных.
1. Тема лабораторной работы.
2. Цель лабораторной работы.
3. Результаты работы программ.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.