Задания_заоч / Лабораторные / Лаб раб 16 Программирование в MS Access часть 6
.doc
Семенова
И.И. БД. -
Создание SQL команд в среде VBA. Движение и извлечение данных из ADODB.RecordSet
Из предыдущей лабораторной работы:
В созданном приложении должна присутствовать таблица Клиенты, которая создана с помощью мастера. Создайте новую форму с названием SQLКлиенты. Добавьте на форму три свободных поля, у которых измените надписи на Фамилия, Имя, Отдел, а имена полей замените на ПолеФамилия, ПолеИмя, ПолеОтдел. Режим по умолчанию формы сделайте «Ленточные формы», у форму свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
Полю в разделе Примечание присвоить имя ПолеЗапрос.
Пример 0 из предыдущей лаб. раб.: На кнопку Простой запрос напишите в событии Нажатие кнопки следующий код:
Dim sql_text As String
Dim rst1 As ADODB.Recordset
Set rst1 = New ADODB.Recordset
Me.RecordSource = rst1.Source
sql_text = " select ФамилияКонтакта, ИмяКонтакта, ОрганизацияИлиОтдел from клиенты"
sql_text = sql_text + ";"
rst1.Open sql_text, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, accmdTable
Me.RecordSource = rst1.Source
Me.Requery
Me.ПолеИмя.ControlSource = "ИмяКонтакта"
Me.ПолеФамилия.ControlSource = "ФамилияКонтакта"
Me.ПолеОтдел.ControlSource = "ОрганизацияИлиОтдел"
rst1.Close
Заполните таблицу Клиенты парой записей. Запустите форму, проверьте работу кнопки.
Создайте новую форму по примеру, как на рисунке ниже.
Пример 1. Перебор всех записей в RecordSet и вывод значений в виде сообщений на экран.
На кнопку Перебор напишите в событии Нажатие кнопки следующий код:
Dim sql_text, str As String
Dim rst1 As ADODB.Recordset
Set rst1 = New ADODB.Recordset
Me.RecordSource = rst1.Source
sql_text = " select * from клиенты"
sql_text = sql_text + ";"
rst1.Open sql_text, CurrentProject.Connection, adOpenKeyset, adLockOptimistic, accmdTable
rst1.MoveFirst
'узнаем имена полей в результате запроса
str = "Имя 1 поля: " + CStr(rst1.Fields.Item(0).Name) + Chr(13)
str = str + "Имя 2 поля: " + CStr(rst1.Fields.Item(1).Name) + Chr(13)
str = str + "Имя 3 поля: " + CStr(rst1.Fields.Item(2).Name) + Chr(13)
str = str + "Имя 4 поля: " + CStr(rst1.Fields.Item(3).Name)
MsgBox str, vbOKOnly
'узнаем типы полей в результате запроса
str = "тип 1 поля: " + CStr(rst1.Fields.Item(0).Type) + Chr(13)
str = str + "тип 2 поля: " + CStr(rst1.Fields.Item(1).Type) + Chr(13)
str = str + "тип 3 поля: " + CStr(rst1.Fields.Item(2).Type) + Chr(13)
str = str + "тип 4 поля: " + CStr(rst1.Fields.Item(3).Type)
MsgBox str, vbOKOnly
'узнаем значения полей каждой записи в результате запроса
Do While Not (rst1.EOF)
str = "1 поле: " + CStr(rst1.Fields.Item(0).Value) + Chr(13)
str = str + " 2 поле: " + CStr(rst1.Fields.Item(1).Value) + Chr(13)
str = str + " 3 поле: " + CStr(rst1.Fields.Item(2).Value) + Chr(13)
str = str + " 4 поле: " + CStr(rst1.Fields.Item(3).Value)
MsgBox str, vbOKOnly
rst1.MoveNext
Loop
rst1.Close
В той же форме добавить кнопки для запуска каждого задания, сделать запрос по таблице Клиенты, так, чтобы в результат было помещено несколько полей с разными типами данных (на ваш выбор, но полей не менее 4х), результат запроса поместить в RecordSet.
Задание 1. Посчитать все буквы «А», «И» во всех значениях текстовых полей по всем записям после выполнения запроса из RecordSet.
Задание 2. Посчитать среднее значение какоголибо числового поля после выполнения запроса из RecordSet.
Задание 3. Вывести на экран значение поля с максимальной длиной строки после выполнения запроса из RecordSet.
Задание 4. Вывести количество записей после выполнения запроса из RecordSet.