4. Создание запросов
Для запросов в приложении создана специальная форма, которая называется «Запросы». Для удобства использования все запросы расположены на объекте с закладками SSTab.
Для создания запросов на каждой вкладке размещаем объект Adodc (для создания запросов), DataGrid (для отображения результатов запросов), текстовое поле Text (для запросов с параметрами) и кнопки CommandBatton (для запуска запросов).
Для создания запроса без параметров нажимаем правой клавишей мыши на объекте Adodc1. В появившемся контекстном меню щелкаем по строке ADODC Properties. В появившемся диалоговом окне Property Page выбираем вкладку RecordSource. Щелкаем на поле с ниспадающим списком Command Type и выбираем команду 1-adCmdTxt. В поле CommandText (SQL) записываем SQL-запрос (рис. 4.1). Для объекта DataGrid1 свойству DataSource присваиваем значение Adodc1. Аналогично и для остальных запросов.
Рис. 4.1. Создание запроса
Таким образом, получаем три запроса без параметров.
Первый запрос отбирает пять самых дорогих заказов:
SELECT DISTINCTROW TOP 5 [Заказы].[Вид услуги] AS [Самые дорогие заказы], [Заказы].[Сумма] AS Стоимость, [Заказы].[Дата заказа] FROM Заказы ORDER BY [Заказы].[Сумма] DESC
Результаты запроса показаны на рис. 4.2.
Рис. 4.2
Второй запрос выводит список услуг, стоимостью не менее 1000 рублей:
SELECT Заказы.[Дата заказа], Заказы.[Вид услуги], Заказы.Сумма FROM Заказы WHERE Сумма >=1000
Результаты запроса показаны на рис. 4.3.
Рис. 4.3
Третий запрос выводит список работ, выполненных специалистами (запрос на объединение таблиц):
SELECT Заказы.Исполнитель, Заказы.[Вид услуги], Услуги.Материал FROM Заказы LEFT JOIN Услуги ON Заказы.[Вид услуги]=Услуги.Наименование ORDER BY Заказы.Исполнитель
Результат запроса показан на рис. 4.4.
Рис. 4.4
Запросы с параметрами создаем написанием программного кода. Применение SQL-запросов в коде программы, работающей с базой данных, имеет свои преимущества — это просто, наглядно и весьма эффективно. Однако из-за различия типов данных Visual Basic и SQL при передаче переменных из кода программы в SQL-запрос могут возникать неприятные нюансы. Чтобы избежать их, перед тем, как передать строковую переменную в SQL-запрос, ее нужно ограничить одинарными кавычками, для чего рекомендуется применять соответствующую функцию:
Private Function Quote(strVariable As String) As String
Quote = “ ‘ “ & strVariable & “ ‘ “
End Function
Для четвертого запроса, выводящего список заказов, выполненных определенным специалистом, имеем следующий программный код:
Private Sub Command1_Click()
Dim strName As String
If txtName.Text <> Empty Then
strName = Trim(txtName.Text)
With Adodc4
.ConnectionString = "Рекламное агентство Records"
.RecordSource = "SELECT * FROM Заказы WHERE Заказы.Исполнитель LIKE" & Quote(strName)
.Refresh
End With
Set DataGrid4.DataSource = Adodc4
Else
MsgBox "Введите значение текстового поля!", vbOKOnly
txtName.SetFocus
End If
End Sub
Результат выполнения запроса показан на рис. 4.5.
Рис. 4.5
Программный код для выполнения пятого запроса, отбирающего заказы, сделанные определенным заказчиком:
Private Sub Command2_Click()
Dim strZ As String
If txtZ.Text <> Empty Then
strZ = Trim(txtZ.Text)
With Adodc5
.ConnectionString = "Рекламное агентство Records"
.RecordSource = "SELECT * FROM Заказы WHERE Заказы.Заказчик LIKE" & Quote(strZ)
.Refresh
End With
Set DataGrid5.DataSource = Adodc5
Else
MsgBox "Введите значение текстового поля!", vbOKOnly
txtZ.SetFocus
End If
Результат выполнения показан на рис. 4.6.
Рис. 4.6
Для шестого запроса, определяющего сумму выручки за определенный день:
Private Sub Command4_Click()
Dim strD As String
If txtDate.Text <> Empty Then
strD = Trim(txtDate.Text)
With Adodc6
.ConnectionString = "Рекламное агентство Records"
.RecordSource = "SELECT Sum(Сумма)As [Выручка за день] FROM Счет WHERE Счет.Дата LIKE" & Quote(strD)
.Refresh
End With
Set DataGrid6.DataSource = Adodc6
Else
MsgBox "Введите значение текстового поля!", vbOKOnly
txtDate.SetFocus
End If
End Sub
Результат выполнения на рис. 4.7.
Рис. 4.7
Для седьмого запроса, выводящего сумму самого дорогого заказа за определенный день:
Private Sub Command3_Click()
Dim strM As String
If txtM.Text <> Empty Then
strM = Trim(txtM.Text)
With Adodc7
.ConnectionString = "Рекламное агентство Records"
.RecordSource = "SELECT max(Сумма) As [Сумма заказа] FROM Счет Where Счет.Дата LIKE" & Quote(strM)
.Refresh
End With
Set DataGrid7.DataSource = Adodc7
Else
MsgBox "Введите значение текстового поля!", vbOKOnly
txtM.SetFocus
End If
End Sub
Результат выполнения на рис. 4.8.
Рис. 4.8
ЗАКЛЮЧЕНИЕ
Создано приложение в Visual Basic для работы с базой данных, разработанной в СУБД Microsoft Access, с возможностью использования SQL-запросов.
Руководство пользователю:
1) После запуска приложения загружается главная форма. Для выбора определенной таблицы нужно нажать на соответствующую ее названию кнопку.
2) Для возврата к главной форме из формы с таблицей нужно нажать кнопку «Назад».
3) Для добавления данных в таблицу нужно нажать кнопку «Добавить», подтвердить команду добавления и внести новые данные в поля таблицы.
4) Для удаления данных из таблицы нужно выбрать соответствующую запись, нажать на кнопку «Удалить» и подтвердить команду удаления.
5) Для того чтобы воспользоваться запросами, нужно на главной форме нажать кнопку «Запросы».
6) Первые три запроса в форме «Запросы» - без параметров, поэтому предназначены только для просмотра.
7) Запросы с четвертого по седьмой – с параметрами. Чтобы ими воспользоваться, нужно в текстовое поле ввести необходимую информацию и нажать на кнопку «Запуск» для выполнения запроса.
8) Для повторного использования запроса нужно удалить информацию из текстового поля, ввести новые данные и снова нажать на кнопку «Запуск».
9) Для выхода из приложения нужно нажать кнопку «Выход» на главной форме.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Разработка баз данных в системе Microsoft Access: учебник. – 2-е изд. – М.: ФОРУМ: ИНФА-М, 2007. – 224 с.: ил. – (Профессиональное образование)
Microsoft Visual Basic 6.0 для профессионалов. Шаг за шагом: Практ. пособ./Пер. с англ. – М.: Издательство ЭКОМ, 2004. – 720 с.: илл.
Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: Учебник для высших учебных заведений/ Под ред. проф. А. Д. Хомоненко. – 4-е изд., доп. и перераб. – СПб.: КОРОНА принт, 2004. – 736 с.
Брайан Сайлер «Использование Visual Basic 6»: специальное издание/Сайлер, Брайан, Споттс, Джефф – М: Вильямс, 2005. – 830с.
Евангелос Петрусос «Visual Basic 6: руководство разработчика»: пер. с англ./под ред. Ю.М. Зорина. – Киев: Ирина: BHV, 2000. – 1071 с.
