Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_РАБ_СО_ СТР_ДАН_doc.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
538.11 Кб
Скачать

6. Данные по пациентам ветеринарной лечебницы для кошек.

Создать форму, содержащую:

1) список 1 с полом и кличками,

2) список 2 с датой последнего посещения,

3) список 3 с размером последнего платежа,

4) кнопку «Добавить» и вспомогательные поля,

5) кнопку для удаления кошки из списка1,

6) кнопки для удаления всех кошек.

При начальной загрузке формы в списке должно быть 3 кошки:

1.Кот Мурзик,14.07.2012 , 200

2. Кошка Муся,10.05.2012 , 700

3. Кот Василий,26.06.2012 , 400

4.4. Создание таблиц данных

Таблицы являются двумерными массивами. Рассмотрим основы работы с ними в VB. Основное назначение таблиц в - обмен информацией с базами данных. Однако наряду с этим таблицы имеют самостоятельное значение как хранилище и источник структурированных данных, используемых в программных приложениях. Рассмотрим, каким образом можно создать таблицу, оформить ее должным образом и заслать в нее необходимые данные.

Пример 3. Создать форму, в которой при начальной загрузке будет создаваться

таблица с наименованием Contacts, содержащая индивидуальные данные сотрудников. Наименование ее столбцов - Last Name, First Name, Phone Number, Email Address. Она должна включать данные по 4 сотрудникам (разбивка по колонкам):

1) Jackson - Jennie - 787-878-8263 - JennieJackson@nowhere.com,

2) Kevlar - Kurt - 872-348-7263 - kurtk@militant.com,

3) Llama - Linda - lllama@weaver.com,

4) Mandrake - Marcus - 398-787-4764 - marcus@marcusrocks.com.

Указания к выполнению.

I. Выполним предварительные действия. Создаем новый проект с именем PR_Tab, так же, как и ранее (Глава 3). Переходим в автоматически созданную пустую форму Form1. В списке ToolBox разворачиваем пункт Data (данные), в котором собраны элементы управления необходимые для работы с базами данных.

II. В пункте Data выбираем элемент DataGridView (рис 4.4). Он обеспечивает отображения информации из БД в виде таблицы. Перетаскиваем его на свободное место формы Form1.

Рис.4.4. Выбор в списке ToolBox пункта Data и его элемента DataGridView

III. После переноса элемента на форму, появится всплывающая панель (рис. 4.5).

Рисунок 4.5. Всплывающая панель при создании элемента управления

Ее пункт «Choose Data Source(Выберите источник данных)» определяет источник данных для создаваемой таблицы. Это позволяет связать элемент DataGridView с базой данных уже на стадии проектирования формы. Однако в нашем случае этот пункт необходимо оставить без изменений, т.к. целью данной работы является создание таблицы данных непосредственно во время выполнения программы. Пункты «Edit Columns(редактировать столбцы)» и « Add Column( добавить столбец)» позволяют изменить имена загруженных в DataGridView столбцов или же добавить свои столбцы. Ниже идут пункты “Enable Adding (разрешить добавление)”, “Enable editing(разрешить изменение)”, “Enable deleting (разрешить удаление)” и “Enable Column Reordering(Разрешить изменения столбцов)” . Они определяют можно ли будет пользователю, во время выполнения программы , соответственно добавлять, изменять, удалять данные, а так же перемещать столбцы относительно друг друга. Оставьте все поля без изменения. Нажмите «Dock in parent container (закрепить в родительском контейнере)». В данном случае «Родительским» является вся форма. Поэтому, при выборе этого пункта, элемент DataGridView всегда будет по размеру совпадать с размерами клиентской области окна. Это удобно, т.к. в случае большого количества данных в таблице пользователь сможет просто потянуть за границу формы и размер таблицы изменится вместе с ней. Данную панель можно всегда вызвать нажатием на маленький треугольник на верхней границе элемента управления.

IV. В свойствах изменяем свойство Name для элемента DataGridView1 на значение DgContacts.

V. Перейдите к редактору программного кода формы (например, двойным щелчком по ней). Поскольку таблица должна формироваться и заполнялась данными при загрузке формы (событие “Load”), необходимо перейти к обработчику данного события. Для этого в верхней левой части редактора кода выберем «Form1 Events», в правой верхней части выберем событие «Load». Сгенерируется пустая процедура Form1_Load, которая будет выполняться каждый раз при запуске программы. Добавьте в эту процедуру следующий код:

Dim data_table As New DataTable("Contacts")

‘ создание нового экземпляра класса DataTable с именем Contacts

' Определяем стобцы.

data_table.Columns.Add("Last Name", GetType(String))

data_table.Columns.Add("First Name", GetType(String))

data_table.Columns.Add("Phone Number", GetType(String))

data_table.Columns.Add("Email Address", GetType(String))

' вносим данные.

AddTableRow(data_table, "Иванов", "Сергей", "787-878-8263", "SIvanov@mail.ru")

AddTableRow(data_table, "Петров", "Иван", "872-348-7263", "kurtk@militant.com")

AddTableRow(data_table, "Орлова", "Ольга", "", "eagle_O@mail.ru ")

AddTableRow(data_table, "Козлова", "Ирина","398-787-4764","coz_i@yandex.ru")

' Связываем элемент управления DgContacts с нашей таблицей данных

dgContacts.DataSource = data_table

Предложенный код содержит процедуру AddTableRow, которая еще не определена. Ее необходимо поместить между строками «End Sub» и «End Class». Код процедуры:

Private Sub AddTableRow(ByVal data_table As DataTable, ByVal last_name As String, ByVal first_name As String, ByVal phone_number As String, ByVal email_address As String)

‘ создание переменной типа DataRow, представляющей собой одну строку.

Dim data_row As DataRow

data_row = data_table.NewRow() ‘создание новой строки в таблице data_table

‘ Добавление записей в строку

data_row.Item("Last Name") = last_name

data_row.Item("First Name") = first_name

data_row.Item("Phone Number") = phone_number

data_row.Item("Email Address") = email_address

‘ добавление строки к таблице

data_table.Rows.Add(data_row)

End Sub

Таким образом при запуске приложения 4 раза будет вызывается процедура AddTableRow с различными формальными параметрами. Это обеспечивает добавление 4-х строк данных в таблицу формы. Результат работы программы представлен на рис. 4.6.

Рис.1.6. Результат выполнения приложения

Пример 4. Создать форму с таблицей, в которую при начальной загрузке вводятся сведения о моделях видеокарт и их ценах. Реализовать следующие операции с таблицей:

1) добавление новой записи в таблицу,

2) удаление выбранной записи,

3) поиск самой дорогой видеокарты,

4) поиск самой дешёвой видеокарты,

5) удаление всех записей из таблицы.

Рис.4.7. Общий вид формы

Для добавления записи используются компоненты TextBox.

Для выполнения действий используются компоненты Button.

Для выбора варианта поиска используются компоненты RadioGroup.

Указания к выполнению.

1) Разместить на форме необходимые компоненты.

2) Добавить код, исполняемый при начальной загрузке формы, а также процедуру для добавления новой строки в таблицу.

Dim data_table As New DataTable("Components")

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

data_table.Columns.Add("Videocard", GetType(String))

data_table.Columns.Add("Memory", GetType(String))

data_table.Columns.Add("Manufacturer", GetType(String))

data_table.Columns.Add("Price", GetType(Integer))

AddTableRow(data_table, "GeForce GTX560Ti", "1280Mb", "Palit", 8699)

AddTableRow(data_table, "GeForce GTX560Ti", "2Gb", "MSI", 8521)

AddTableRow(data_table, "Radeon HD6970 880M", "2Gb", "XFX", 11273)

AddTableRow(data_table, "RADEON HD6850", "1Gb", "ASUS", 5059)

dgComponents.DataSource = data_table

End Sub

Private Sub AddTableRow(ByVal data_table As DataTable, ByVal video As String, ByVal memory As String, ByVal manuf As String, ByVal price As String)

' создание переменной типа DataRow, представляющей собой одну строку.

Dim data_row As DataRow

data_row = data_table.NewRow() 'создание новой строки в таблице data_table

' Добавление записей в строку

data_row.Item("Videocard") = video

data_row.Item("Memory") = memory

data_row.Item("Manufacturer") = manuf

data_row.Item("Price") = price

' добавление строки к таблице

data_table.Rows.Add(data_row)

End Sub

3) Код для кнопки «Добавить запись». Для добавления используется процедура AddTableRow.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

AddTableRow(data_table, TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text)

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

End Sub

4) Код для кнопки «Удалить запись».

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

dgComponents.Rows.Remove(dgComponents.CurrentRow)

End Sub

5) Код для кнопки «Удалить всё». Удаление реализовано в цикле: по очереди удаляется каждая запись таблицы.

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim i As Integer

For i = 1 To dgComponents.RowCount - 1

dgComponents.Rows.RemoveAt(0)

Next

End Sub

6) Код для кнопки «Найти». Вначале проверяется, какой компонент RadioGroup выбран, далее в цикле выполняются соответствующие действия (поиск максимального или минимального значения в столбце)

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

If RadioButton1.Checked Then

Dim min, a, b As Integer

Dim i As Integer

min = Val(dgComponents.Item(3, 0).Value)

For i = 1 To dgComponents.RowCount - 2

a = dgComponents.Item(3, i).Value

If a < min Then

min = a

b = i

End If

Next

dgComponents.Rows(b).Selected = True

Else

Dim max, a, b As Integer

Dim i As Integer

max = Val(dgComponents.Item(3, 0).Value)

For i = 1 To dgComponents.RowCount - 3

a = dgComponents.Item(3, i).Value

If a > max Then

max = a

b = i

End If

Next

dgComponents.Rows(b).Selected = True

End If

End Sub