03. С помощью функции GetRow можно организовать поиск в таблицы без применения DAO или ADO. Если таблица небольшая считываем данные в массив и поиск организуем уже в нем. Все работает быстро, т.к. не надо обращаться к функциям чтения записей.
Option Compare Database
Option Explicit
Dim myTable As Variant 'Массив данных из таблицы
'==============================================================
' Заполнение массива
' myTable(x,y)
' х - это поля
' y - это строки
Private Sub Form_Open(Cancel As Integer)
myTable = funGetRows 'Заполняем массив
myColumn_AfterUpdate 'Отображаем данные
End Sub
'==============================================================
' Обновление строки
Private Sub myRow_AfterUpdate()
Me.myColumnRow.Caption = "Данные в ячейке (" _
Me.myColumn "," _
Me.myRow "): " _
myTable(Me.myColumn, Me.myRow)
End Sub
'==============================================================
' Обновление поля
Private Sub myColumn_AfterUpdate()
myRow_AfterUpdate
End Sub
' Заполнение массива
Public Function funGetRows() As Variant
Dim dbs As Database, rst As Recordset, i As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT * FROM [Мои книги] ORDER BY [Книга]")
If rst.RecordCount 0 Then
With rst
.MoveLast 'Заполняем запрос
.MoveFirst 'Устанавливаем строку
i = rst.RecordCount 'определяем число записей
funGetRows = rst.GetRows(i) 'Прочитываем данные
End With
End If
rst.Close 'Закрываем запрос
Set dbs = Nothing 'Закрываем базу
End Function