Примеры использования методов DAO
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
Программирование в формах.
Определяя имя для поля, элемента управления или объекта, полезно проверить, не совпадает ли это имя с именем свойства или другого элемента, используемого Microsoft Access; в противном случае иногда могут возникать неверные результаты. Например, при ссылке на значение поля «Name» в таблице «NameInfo» с использованием конструкции NameInfo.Name будет возвращаться значение свойства таблицы Имя (Name), а не значение поля «Name».
Простейшим способом обойти неопределенность в именах является использование оператора ! вместо оператора . (точка) в ссылках на значения полей, элементов управления и объектов:
[NameInfo]![Name]
Пример запроса, созданного как текстовая строка плюс значения текстовых переменных. Запрос выбирает из таблицы «_v2» в таблицу «_v4» те записи, значение поля nn в которых больше нуля и меньше значения переменной целого типа var_numb.
Dim S As String
S = "SELECT * INTO [_v2] FROM [_v4] WHERE (([_v4].nn<=" + Str(var_numb) + _
")and([_v4].nn>0))"
DoCmd.RunSQL S
Классическая фраза, которой приходится завершать функцию, если в результате ваших действий значения некоторых полей в форме должны измениться, а этого почему-то не видно:
Forms![Моя форма].Refresh
Работа с элементом «поле со списком» (Элемент управления на странице доступа к данным, щелчок по кнопке-стрелке которого приводит к раскрытию списка, в котором можно выбрать значение или ввести его прямо в поле с клавиатуры).
|
Установка исходных данных для поля (текст в строке свойств «источник строк»):
SELECT countries.country, countries.name_rus, countries.currency_rus FROM countries;
При этом из трёх столбцов видимым является только второй.
Установка начального значения для поля со списком из программы:
Private Sub Form_Open(Cancel As Integer)
var_country.SetFocus
var_country.SelText = "Россия"
End Sub
Реакция на событие «После обновления»:
Private Sub var_country_AfterUpdate()
info_1.Caption = var_country.Column(1)
Forms![Основная форма].Refresh
End Sub
Работа с элементом «Диаграмма»
Microsoft Graph позволяет изменить расположение компонентов диаграммы (таких как легенда), формат надписей, цвета и узоры, а также масштабы по осям. Чтобы изменить данные, используемые для создания диаграммы, следует изменить базовую таблицу или другой источник записей, либо запрос, указанный в свойстве Источник строк (RowSource).
В режиме конструктора формы или отчета создаваемая диаграмма отображает примеры данных. Чтобы увидеть реальные текущие данные, переключитесь в режим формы или предварительного просмотра либо закройте форму или отчет, а затем снова откройте их.
Дата добавления: 2015-07-30; просмотров: 783;