
- •Введение
- •1. Основные понятия архитектуры клиент-сервер
- •1.1. Преимущества архитектуры клиент-сервер
- •1.2. Основные понятия и компоненты архитектуры
- •1.3. Звенья
- •1.4. Серверы баз данных
- •2. Основные понятия, объекты и язык т-sql субд ms sql Server 2005
- •2.1. Состав и назначение баз данных в ms sql Server
- •2.2. Основные этапы работы с sql Server
- •2.3. Используемые типы данных в sql Server
- •2.4. Введение в Transact-sql (t-sql)
- •2.4.1. Выражения
- •2.4.2. Переменные
- •2.4.3. Преобразование типов
- •2.4.4. Управляющие конструкции т-sql
- •2.4.5. Описание примера базы данных
- •2.4.6. Управление данными (язык sql)
- •2.4.6.1. Типы команд sql
- •2.4.6.2. Извлечение данных
- •2.5. Представления
- •2.5.1. Создание и удаление представлений
- •2.5.2. Обновление данных в представлениях
- •2.5.3. Преимущества и недостатки представлений.
- •Независимость от данных
- •2.6. Хранимые процедуры
- •2.6.1. Понятие хранимой процедуры
- •2.6.2. Типы хранимых процедур
- •2.6.3. Создание, изменение и удаление хранимых процедур
- •2.6.4. Выполнение хранимой процедуры
- •3. Использование ms sql Server Management Studio для работы с объектами базы данных
- •3.1. Описание учебной базы данных «Realizations of goods» (Реализация товаров)
- •3.2. Создание и сохранение базы данных
- •3.3. Создание и работа с представлениями (запросы)
- •3.4. Создание и работа с хранимыми процедурами
- •4. Создание клиент-серверного приложения в Visual Basic
- •4.1. Элемент управления ms ado data Control
- •4.2. Элемент управления ms dataGrid Control
- •4.3. Клиент-серверное приложение «Реализация товаров»
- •4.3.1. Постановка задачи
- •4.3.2. Состав пользовательского интерфейса и программная реализация
- •4.3.3. Графическое формирование значений свойств элементов Adodc и DataGrid
- •5. Практические задания для самостоятельной работы
- •Вариант 1. «Жильё»
- •Вариант 2. «Жители»
- •Вариант 3. «Население»
- •Вариант 4. «Вакансии»
- •Вариант 5. «Поставщики-детали»
- •Литература
4.2. Элемент управления ms dataGrid Control
Для отображения и редактирования информации из присоединяемой на этапе выполнения базы данных удобно использовать элемент управления MS DATAGrid Control, который во многом похож на элемент MS Data Bound Grid [5]. DATAGrid является двумерной таблицей, позволяющей эквивалентно отображать таблицы реляционных баз данных. Рассмотрим основные свойства DATAGrid, необходимые для отображения и изменения данных:
Caption – задает заголовок таблицы, выводится над элементом управления DATAGrid;
DataSourse – источник данных (имя элемента ADODС).
AllowAddNew – дает возможность пользователю вводить новые записи в таблицу (по умолчанию False – ввод запрещен);
AllowDelete – признак удаления записи (по умолчанию False – удаление запрещено);
AllowUpdate – признак модификации данных (по умолчанию True – разрешено редактирование);
AllowArrows – использование клавиш управления курсором для перемещения между ячейками таблицы (True – разрешено, False – запрещено).
4.3. Клиент-серверное приложение «Реализация товаров»
4.3.1. Постановка задачи
Создать клиентское приложение для работы с описанной в разделе 3.1 базой данных «Реализация товаров» с точки зрения отображения результатов продажи товаров разных типов в некотором супермаркете. Приложение должно выполнять следующие функции:
формирование списка товаров с их реквизитами (название товара, цена приобретения, цена реализации) для заданного вида товаров,
формирование ведомости прибыли от реализации каждого товара заданного вида за определенный период.
Предусмотреть возможность изменения внешнего вида надписей, проверку корректности ввода данных, использования хранимых процедур.
4.3.2. Состав пользовательского интерфейса и программная реализация
Вид пользовательского интерфейса приложения представлен на рисунках 23 и 24.
Рис. 23. Форма приложения для формирования списка товаров заданного типа
Элементы Label на форме используются для размещения комментариев.
Для ввода значений дат отчетного периода используются элементы управления MaskedEdit с именами Text1 и Text2, у которых значение свойства Mask равно “##.##.####”.
Элементы Frame (имя Frame1) и OptionButton (имена Option1 и Option2) необходимы для выбора соответствующей хранимой процедуры получения и отображения данных. Выполнение соответствующей хранимой процедуры осуществляется по нажатию на командную кнопку с именем Command1. В приложении используются хранимые процедуры, описанные в разделе 3.4.
Для отображения и корректировки данных из таблицы «Тип Товара» (Type_goods) применяются элементы Adodc с именем Adodc1 и DataGrid с именем DataGrid1. Для элемента DataGrid1 заданы следующие значения свойств: DataSourse=Adodc1, AllowAddNew=true, AllowDelete =true, AllowUpdate.=true. Установка значений необходимых свойств элементов Adodc и имен колонок элемента DataGrid1 осуществляется графическим способом, который рассмотрим в разделе 4.3.3.
Рис. 24. Форма приложения для расчета прибыли
Для отображения результатов выполнения хранимых процедур применяются элементы Adodc с именем Adodc4 и DataGrid с именем DataGrid4. Для элемента DataGrid4 заданы следующие значения свойств: DataSourse=Adodc4, AllowAddNew=false, AllowDelete=false, AllowUpdate.=false.Установка значений свойств Caption, ConnectionString, RecordSource элемента Adodc4 осуществляется динамически при функционировании приложения, листинг которого приведен в примере 4.2.
Элемент TextBox с именем Text3 используется для отображения количества записей в элементе DataGrid4.
При загрузке формы приложения запускается на выполнение хранимая процедура формирования списка товаров для заданного вида товаров.
Пример 4.2. Исходный текст (листинг) приложения «Реализация товаров»
Option Explicit
Dim nam_par As String
Private Sub Option1_Click()
Text1.Visible = False: Text2.Visible = False
Label1.Visible = False: Label2.Visible = False
End Sub
Private Sub Option2_Click()
Text1.Visible = True: Text2.Visible = True
Label1.Visible = True: Label2.Visible = True
End Sub
Private Sub DataGrid1_BeforeColEdit(ByVal ColIndex As Integer,
ByVal KeyAscii As Integer, Cancel As Integer)
If ColIndex = 0 Then Cancel = True
End Sub
Private Sub Command1_Click()
Dim dat_b As String
Dim dat_e As String
If Option1.Value Then
'выполнение хранимой процедуры с параметрами: вид товара
Adodc4.Caption = "Процедура: proc_goods (тип тов- параметр)"
If Adodc1.Recordset.RecordCount > 0 Then
nam_par = Adodc1.Recordset.Fields(1).Value 'название вида товара
Adodc4.ConnectionString = "Provider=SQLOLEDB.1;Password=pass1;”+ _
“Persist Security Info=True;User ID=student;”+ _
“Initial Catalog=realization of goods;Data Source=SERVERX"
Adodc4.RecordSource = "EXEC proc_goods '" + nam_par + "'"
Adodc4.Refresh
Text3.Text = CStr(Adodc4.Recordset.RecordCount)
End If
Else
'хранимая процедура с параметрами: вид товара,дата начала, дата конца
Adodc4.Caption="Проц: proc_real_period (тип тов. и дата- параметры)"
If Adodc1.Recordset.RecordCount > 0 Then
nam_par = Adodc1.Recordset.Fields(1).Value 'название вида товара
If IsDate(Text1.Text) = False Then
MsgBox "Дата начала не верна!"
Text1.SetFocus
Exit Sub
End If
If IsDate(Text2.Text) = False Then
MsgBox "Дата окончания не верна!"
Text2.SetFocus
Exit Sub
End If
dat_b = Text1.Text
dat_e = Text2.Text
Adodc4.ConnectionString="Provider=SQLOLEDB.1;”+ _
“Password=pass1;Persist Security Info=True;User ID=student;”+ _
“Initial Catalog=realization of goods;Data Source=SERVERX"
Adodc4.RecordSource="EXEC proc_real_period '" + nam_par + "', '"+ _
dat_b + "', '" + dat_e + "'"
Adodc4.Refresh
Text3.Text = CStr(Adodc4.Recordset.RecordCount)
End If
End If
End Sub
Private Sub Form_Load()
Text1.Text = CStr(Date)
Text2.Text = CStr(Date)
'выполнение хранимой процедуры с параметрами: вид товара
Adodc4.Caption = "Процедура: proc_goods (тип тов.- переменный)"
If Adodc1.Recordset.RecordCount > 0 Then
nam_par = Adodc1.Recordset.Fields(1).Value 'название вида товара
Adodc4.ConnectionString="Provider=SQLOLEDB.1;Password=pass1;”+ _
“Persist Security Info=True;User ID=student;”+ _
“Initial Catalog=realization of goods;Data Source=SERVERX"
Adodc4.RecordSource = "EXEC proc_goods '" + nam_par + "'"
Adodc4.Refresh
Text3.Text = CStr(Adodc4.Recordset.RecordCount)
End If
End Sub