Программирование на Visual Basic | Microsoft Access. Поиск в таблицах, как в Excel

В этом разделе сайта находятся примеры из сборника программ "Архив файлов на Microsoft Access". В нем рассказывается о программировании форм, отчетов, таблиц и других объектов. Используйте этот архив для изучения работы с приложением Microsoft Office Access и программированием на Visual Basic for Application. Тем кто уже знаком с VBA, используйте поиск для нахождения кодов. Наберите, например, DAO, ADO, Recordset и найдете нужную ссылку для решения проблемы с программированием

Microsoft Access. Поиск в таблицах, как в Excel

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

Добавить комментарий

Loading