Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET
- Название:Обработка баз данных на Visual Basic®.NET
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2003
- Город:Москва
- ISBN:5-8459-0512-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET краткое содержание
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000. Затем рассматриваются способы использования основных объектов модели ADO.NET для доступа к данным в реляционных базах данных. Благодаря подробным примерам, читатели могут изучить способы использования основных свойств и методов, а также узнать о более сложных компонентах и технологиях. Многочисленные листинги с кодом на языке Visual Basic .NET иллюстрируют используемые концепции, а бизнес-ситуации показывают практическую область их применения.
Обработка баз данных на Visual Basic®.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:

РИС. 7.З. Окончательный вид формы frmDataViews
10. Выберите все элементы управления и скопируйте их в нижнюю часть формы frmDataViews. Переименуйте все элементы управления (за исключением надписей) так, чтобы их имена заканчивались цифрой 2, а не 1 (например, btnApply2).
11. Укажите значение DataView2 для свойства CaptionText сетки DataGrid2.
Окончательный вид формы frmDataViews показан на рис. 7.3, а ее код представлен в листинге 7.6.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class frmDataViews
Inherits System.Windows.Forms.Form
"Windows Form Designer generated code"
Private dsCustomers As New DataSet()
Private dvView2 As DataView
Private Sub frmDataViewS_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
Dim col As DataColumn
' Инициализация объекта DataAdapter.
Dim daCustomers As SqlDataAdapter = New _
SqlDataAdapter("select * from tblCustomer", _
"server=localhost;uid=sa;database=novelty")
' Вставка данных только в ОДНУ таблицу.
daCustomers.Fill(dsCustomers, "Customers")
' Создание второго объекта DataView.
dvView2 = New DataView(dsCustomers.Tables("Customer"), _
"", "LastName", DataViewRowState.CurrentRows)
' Вставка списка из имен полей.
For Each col In dsCustomers.Tables("Customers.Columns")
cboSort1.Items.Add(col.ColumnName)
cboSort2.Items.Add(col.ColumnName)
Next
' Вставка объекта DataViewRowState.
Dim names As String()
names = DataViewRowState.None.GetNames(DataViewRowState.None.GetType)
For i = 0 To names.GetUpperBound(0)
cboRowState1.Items.Add(names(i))
cboRowState2.Items.Add(names(i))
Next
' Указание значений по умолчанию.
txtFilter1.Text = ""
txtFilter2.Text = ""
cboSort1.SelectedItem = "ID"
cboSort2.SelectedItem = "ID"
chkDesc1.Checked = False
chkDesc2.Checked = False
cboRowState1.SelectedItem = "CurrentRows"
cboRowState2.SelectedItem = "CurrentRows"
dsCustomers.Tables("Customers").DefaultView.Sort = "ID"
dvView2.Sort = "ID"
' Связывание сеток данных с таблицей.
DataGrid1.DataSource = dsCustomers.Tables("Customers").DefaultView
DataGrid2.DataSource = dvView2
End Sub
Private Sub btnApply1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnApply1.Click
Dim sort As String
Dim rowState As DataViewRowState
' Указание фильтра.
dsCustomers.Tables("Customers").DefaultView.RowFilter = _
txtFilter1.Text
' Указание сортировки.
sort = cboSort1.SelectedItem
If chkDesc1.Checked Then
sort = sort & " DESC"
End If
dsCustomers.Tables("Customers").DefaultView.Sort = sort
' Указание состояния записи.
dsCustomers.Tables("Customers").DefaultView.RowStateFilter = _
rowState.Parse(rowState.GetType, cboRowState1.SelectedItem)
End Sub
Private Sub btnApply2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnApply2.Click
Dim sort As String
Dim rowState As DataViewRowState
' Указание фильтра.
dvView2.RowFilter = txtFilter2.Text
' Указание сортировки.
sort = cboSort2.SelectedItem
If chkDesc2.Checked Then
sort = sort & " DESC"
End If
dvView2.Sort = sort
' Указание состояние записи.
dvView2.RowStateFilter = rowState.Parse(rowState.GetType, _
cboRowState2.SelectedItem)
End Sub
End Class
Подпрограмма frmDataViews_Load инициализирует разные объекты формы. Сначала создается объект DataAdapter, который затем используется для загрузки данных из таблицы базы данных в таблицу Customers набора данных DataSet. Далее создаются два представления данных: одно будет содержать создаваемое по умолчанию представление, а другое — новое представление dvView2. Далее объект-представление dvView2 инициализируется для отображения всех текущих записей с сортировкой по фамилии, т.е. по полю LastName.
После этого инициализируются два набора полей со списками. В поле со списком cboSort загружается список имен полей таблицы Customers, а в поле со списком cboRowState — список значений перечисления DataViewRowState.
В Visual Basic больше не поддерживается свойство ItemData. Дело в том, что вместо него для преобразования значений перечисления в строки для загрузки их в поле со списком используется метод GetNames перечисления. Аналогично, метод Parse перечисления используется для преобразования строк в значения перечисления при присвоении избранных значений свойству RowStateFilter.
Затем для элементов управления с критериями отбора записей задаются значения по умолчанию, т.е. исходный порядок сортировки для обоих представлений задается по полю ID. Наконец, каждое представление связывается с одной из сеток данных, что приводит к отображению в них всех текущих данных.
Избранные значения критериев применяются для соответствующего представления после щелчка на кнопке Apply. Две подпрограммы btnApplyl_Click и btnApply2_Click идентичны, за исключением того, что они относятся к разным наборам элементов управления. Фильтр записей (значение свойства RowFilter) задается на основании указанного текста в текстовом поле txtFilter, порядок сортировки (значение свойства Sort) — на основании выбранного поля в поле со списком cboSort (с дополнительным модификатором DESC нисходящего порядка), а фильтр состояния записи (значение свойства RowStateFilter) — на основании значения в поле со списком cboRowState2. Изменение свойств представлений, связанных с сетками данных, приводит к автоматическому отображению данных с новыми параметрами представления.
Скомпонуем проект DataSetCode и запустим полученное приложение. Щелкните на кнопке Data Views для отображения новой формы frmDataViews. Внесите необходимые изменения в критерии сетки и щелкните на кнопке Apply для внесения этих изменений в соответствующую сетку. На рис. 7.4 показан пример отображения данных из одной таблицы в двух разных представлениях.
Попробуйте выбрать разные поля сортировки и состояния записей для организации разных представлений. Попробуйте использовать разные фильтры, например сложные выражения ID > 10 AND ID < 18 или LastName Like с. Более подробные сведения о правилах создания фильтров приводятся в разделе с описанием свойства DataColumn.Expression справки Visual Studio .NET.
Кроме того, сетки автоматически поддерживают операции вставки, изменения и удаления записей, поэтому попробуйте отредактировать записи и выбрать соответствующее состояние для отображения только измененных записей.

РИС. 7.4. Пример отображения данных из одной таблицы в двух разных представлениях формы frmDataViews
Обратите внимание, как разные представления одной таблицы данных отображаются в сетках данных. Если вставить, изменить или удалить запись в одном представлении (и применить изменение за счет перехода к следующей записи), то внесенные изменения будут автоматически отображены в другом представлении (если, конечно, эта запись соответствует заданному фильтру).
Читать дальшеИнтервал:
Закладка: