Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание клиент-серверных приложений.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
4.13 Mб
Скачать

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