Sub Find ()
'--------------------------------------------------------
' Поиск записей в таблице " tblPeoples "
' Будем искать записи, у которых в поле LastName
' находиться значение "Иванова"
' и печатать в окне отладки ID _ People найденных записей
' и их количество
' Проход по всей таблице.
' ЭТОТ МЕТОД НЕ ЯВЛЯЕТСЯ ОПТИМАЛЬНЫМ!!!
'--------------------------------------------------------
Dim db As Database
Dim rs As Recordset
Dim str As String
Dim lngRecordCount As Long
'Счетчик найденных записей
Set db = CurrentDb
Set rs = db . OpenRecordset (" tblPeoples ", dbOpenDynaset )
str = ""
lngRecordCount = 0
If rs . RecordCount <> 0 Then
rs . MoveFirst
Do Until rs . EOF
'Если текущая запись удовлетворяет условию...
If rs ![ LastName ] = "Иванова" Then
'Инкримируем счетчик найденных записей
lngRecordCount = lngRecordCount + 1
str = str & rs ![ ID _ People ] & ", "
End If
rs . MoveNext
Loop
str = str & vbCrLf & "Всего найдено записей: " & _
lngRecordCount
Else
str = "Таблица "" tblPeoples "" не содержит записей."
End If
Debug . Print str
rs. Close
db. Close
End Sub
Option Compare Database
Option Explicit
Sub Cycle01_1()
'--------------------------------------------------------
' Цикл по записям таблицы "tblPeoples" от начала до конца
'--------------------------------------------------------
'База данных
Dim db As Database
'Набор записей
Dim rs As Recordset
'Строка
Dim str As String
'Количество записей в наборе записей
Dim lngRecordCount As Long
' db - текушая база данных
Set db = CurrentDb
Set rs = db.OpenRecordset("tblPeoples", dbOpenDynaset)
' rs - набор записей на основе таблицы "tblPeoples"
' При инициализации набора записей мы можем точно
' определить, есть ли в этом наборе записи или нет.
' Свойство " RecordCount " набора записей посли его
' инициализации, по идее, должна сождержать количество
' записей набора, однако это не так. Если в наборе есть
' записи это свойство отлично от нуля, но не содержит
' их количество. Для определения количества записей
' необходимо перейти на последнюю запись набора, и после
' этого в свойстве " RecordCount " будет находиться
' количество записей набора.
'Если в наборе rs есть записи...
If rs . RecordCount <> 0 Then
rs . MoveLast
' Переходим на последнюю запись (чтобы " RecordCount "
' содержало верное значение)
lngRecordCount = rs . RecordCount
' Считываем количество записей в переменную
rs . MoveFirst 'Переходим на первую запись набора
' Заполняем текстовую переменную str количеством записей
str = "Количество записей в таблице "" tblPeoples "": " & lngRecordCount & vbCrLf
'Свойство EOF ( End Of File ) набора записей становиться истинным ПОСЛЕ последней 'записи набора,точно как и свойство BOF ( Begin Of File ) становиться истинным ПЕРЕД 'первой записью набора.
'Цикл "Пока не кончатся записи в наборе rs "
Do Until rs . EOF
'Добавляем в переменную str имнена полей, их
' значения и символ перевода строки
str = str & " ID _ People : " & rs ![ ID _ People ] & vbCrLf
str = str & " ID _ RecordStatus : " & rs ![ ID _ RecordStatus ] & vbCrLf
str = str & " LastName : " & rs ![ LastName ] & vbCrLf
str = str & " FirstName : " & rs ![ FirstName ] & vbCrLf
str = str & " MiddleName : " & rs ![ MiddleName ] & vbCrLf
str = str & " PeopleSex : " & rs ![ PeopleSex ] & vbCrLf
str = str & " BirthDate : " & rs ![ BirthDate ] & vbCrLf
str = str & "------------" & vbCrLf
rs . MoveNext
'Переходим на следующую запись
Loop
'Конец цикла
Else
'Если записей нет...
' Заполняем текстовую переменную str сообщением об
' отсутствии записей
str = "Таблица "" tblPeoples "" не содержит записей."
End If
'Печатаем содержимое переменной str в окне отладки
Debug . Print str
rs . Close
'Закрываем переменную набора записей
db . Close
'Закрываем переменную базы данных
End Sub
|