
Задания_заоч / Лабораторные / Лаб раб 15 Программирование в MS Access часть 5
.doc
Семенова
И.И. БД. -
Создание SQL команд в среде VBA.
Связь результатов запроса SELECT с формой
В созданном приложении должна присутствовать таблица Клиенты, которая создана с помощью мастера. Создайте новую форму с названием SQLКлиенты. Добавьте на форму три свободных поля, у которых измените надписи на Фамилия, Имя, Отдел, а имена полей замените на ПолеФамилия, ПолеИмя, ПолеОтдел. Режим по умолчанию формы сделайте «Ленточные формы», у формы свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
Полю в разделе Примечание присвоить имя ПолеЗапрос.
Задание 1. На кнопку Простой запрос напишите в событии Нажатие кнопки следующий код:
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
Заполните таблицу Клиенты парой записей. Запустите форму, проверьте работу кнопки.
Задание 2. На кнопку Запрос по коду клиента напишите в событии Нажатие кнопки следующий код:
Dim sql_text As String
Dim rst1 As ADODB.Recordset
Set rst1 = New ADODB.Recordset
Me.RecordSource = rst1.Source
sql_text = "select ФамилияКонтакта, ИмяКонтакта, ОрганизацияИлиОтдел "
sql_text=sql_text +" from клиенты where "
sql_text=sql_text +" trim(ФамилияКонтакта)=trim( cstr( ' " & Me.ПолеЗапрос & " ' ) ) "
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
Me.ПолеЗапрос = ""
Запустите форму, в ПолеЗапрос введите полностью фамилию, которая есть в таблице, проверьте работу кнопки.
Задание 3. На кнопку Запрос по Фамилии напишите в событии Нажатие кнопки следующий код:
Dim sql_text As String
Dim rst1 As ADODB.Recordset
Set rst1 = New ADODB.Recordset
Me.RecordSource = rst1.Source
sql_text = "select ФамилияКонтакта, ИмяКонтакта, ОрганизацияИлиОтдел "
sql_text=sql_text +" from клиенты where "
sql_text=sql_text +" КодКлиента= cint( ' " & Me.ПолеЗапрос & " ' ) "
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
Me.ПолеЗапрос = ""
Запустите форму, в ПолеЗапрос введите полностью фамилию, которая есть в таблице, проверьте работу кнопки.
Таблица преобразований типов Из неопределенного к нужному:
в строку |
CStr(expression) |
К Integer |
CInt(expression) |
К длинному целому |
CLng(expression) |
К булевскому (логическому) |
CBool(expression) |
К числу в диапазоне от 0 до 255 |
CByte(expression) |
К типу Денежный (Currency) |
CCur(expression) |
К типу дата |
CDate(expression) |
И т.д., остальное в Help.
Индивидуальные задания
Вариант 1
В текущий проект скопировать из проекта, в котором выполнялись лаб. раб. № 1 – 8, таблицу ТОВАРЫ с данными.
Создайте новую форму с названием SQLТовары. Добавьте на форму в область данных столько свободных полей, сколько полей в таблице Товары. У добавленных полей измените надписи на соответствующие название полей из таблицы Товары и перенесите их в раздел Заголовок формы, а имена полей замените на Поле1, Поле2 и т.д. Режим по умолчанию формы сделайте «Ленточные формы», у формы свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
В раздел Примечание добавить Поле и присвоить ему имя ПолеЗапрос.
На форму добавить 2 кнопки с названиями: Запрос по дате, Запрос по числовому значению.
По кнопке Запрос по дате должен быть выполнен следующий запрос: «Вывести все сведения о товаре с датой поступления больше введенной в ПолеЗапрос».
По кнопке Запрос по числовому значению должен быть выполнен следующий запрос: «Вывести только наименования товаров с ценой меньше или равной введенной в ПолеЗапрос».
Вариант 2
В текущий проект скопировать из проекта, в котором выполнялись лаб. раб. № 1 – 8, таблицу Комплектующие с данными.
Создайте новую форму с названием SQLКомплектующие. Добавьте на форму в область данных столько свободных полей, сколько полей в таблице Комплектующие. У добавленных полей измените надписи на соответствующие название полей из таблицы Комплектующие и перенесите их в раздел Заголовок формы, а имена полей замените на Поле1, Поле2 и т.д. Режим по умолчанию формы сделайте «Ленточные формы», у формы свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
В раздел Примечание добавить Поле и присвоить ему имя ПолеЗапрос.
На форму добавить 2 кнопки с названиями: Запрос по дате, Запрос по числовому значению.
По кнопке Запрос по дате должен быть выполнен следующий запрос: «Вывести все сведения о комплектующих с датой приобретения меньше введенной в ПолеЗапрос».
По кнопке Запрос по числовому значению должен быть выполнен следующий запрос: «Вывести только наименования оборудования и серийные номера с периодом износа равному введенному в ПолеЗапрос».
Вариант 3
В текущий проект скопировать из проекта, в котором выполнялись лаб. раб. № 1 – 8, таблицу Лекарства с данными.
Создайте новую форму с названием SQLЛекарства. Добавьте на форму в область данных столько свободных полей, сколько полей в таблице Лекарства. У добавленных полей измените надписи на соответствующие название полей из таблицы Лекарства и перенесите их в раздел Заголовок формы, а имена полей замените на Поле1, Поле2 и т.д. Режим по умолчанию формы сделайте «Ленточные формы», у формы свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
В раздел Примечание добавить Поле и присвоить ему имя ПолеЗапрос.
На форму добавить 2 кнопки с названиями: Запрос по дате, Запрос по числовому значению.
По кнопке Запрос по дате должен быть выполнен следующий запрос: «Вывести все сведения о лекарствах с датой выпуска равной введенной в ПолеЗапрос».
По кнопке Запрос по числовому значению должен быть выполнен следующий запрос: «Вывести только наименования лекарств и форму выпуска с ценой меньше или равной введенной в ПолеЗапрос».
Вариант 4
В текущий проект скопировать из проекта, в котором выполнялись лаб. раб. № 1 – 8, таблицу Сотрудники с данными.
Создайте новую форму с названием SQLСотрудники. Добавьте на форму в область данных столько свободных полей, сколько полей в таблице Сотрудники. У добавленных полей измените надписи на соответствующие название полей из таблицы Сотрудники и перенесите их в раздел Заголовок формы, а имена полей замените на Поле1, Поле2 и т.д. Режим по умолчанию формы сделайте «Ленточные формы», у формы свойство Разрешить добавление поставить в НЕТ. Далее добавьте элементы, как показано на рисунке:
В раздел Примечание добавить Поле и присвоить ему имя ПолеЗапрос.
На форму добавить 2 кнопки с названиями: Запрос по дате, Запрос по числовому значению.
По кнопке Запрос по дате должен быть выполнен следующий запрос: «Вывести все сведения о сотрудниках с датой приема на работу больше введенной в ПолеЗапрос».
По кнопке Запрос по числовому значению должен быть выполнен следующий запрос: «Вывести только ФИО и пол сотрудников с кодом сотрудника меньшим или равным введенному в ПолеЗапрос».