Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задания_заоч / Лабораторные / Лаб раб 15 Программирование в MS Access часть 5

.doc
Скачиваний:
41
Добавлен:
21.05.2015
Размер:
67.07 Кб
Скачать

Семенова И.И. БД. - 4 -

Создание 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 кнопки с названиями: Запрос по дате, Запрос по числовому значению.

По кнопке Запрос по дате должен быть выполнен следующий запрос: «Вывести все сведения о сотрудниках с датой приема на работу больше введенной в ПолеЗапрос».

По кнопке Запрос по числовому значению должен быть выполнен следующий запрос: «Вывести только ФИО и пол сотрудников с кодом сотрудника меньшим или равным введенному в ПолеЗапрос».