Private Sub ReadDataMapped()
Dim daEmployees As SqlDataAdapter = New _
SqlDataAdapter("select * from tblEmployee", _
"server=localhost;uid=sa;database=novelty")
dsEmployeeInfo = New DataSet()
' Конфигурация отображений таблицы и полей.
daEmployees.TableMappings.Add("MappingName", "empDataSetTable")
With daEmployees.TableMappings("MappingName").ColumnMappings
.Add("ID", "empEmployeeID")
.Add("FirstName", "empFirstName")
.Add("LastName", "empLastName")
.Add("DepartmentID", "empDepartmentID")
.Add("Salary", "empSalary")
End With
daEmployees.Fill(dsEmployeeInfo, "MappingName")
DisplayDataSet(dsEmployeeInfo)
End Sub
По умолчанию отображение таблицы называется Table. Оно применяется в том случае, если в методе Fill (или методе Update) используется только имя объекта DataSet. Однако его можно указать явно вместе с нужным именем таблицы с помощью приведенного ниже кода.
daEmployees.TableMappings.Add("Table", "MyTableName")
daEmployees.Fill(dsEmployeeInfo)
Это приведет к созданию таблицы MyTableName и вставке данных в нее.
Объект DataView
Объект DataView позволяет одновременно создавать разные представления данных из объекта DataTable и обладает перечисленными ниже свойствами, которые позволяют настраивать способ отображения данных.
• Порядок сортировки (нисходящий или восходящий) по одному или нескольким полям.
• Выражение для фильтрации записей, которое указывает критерии отображения записей на основе значений полей.
• Фильтр состояния записи, который указывает критерии отображения записей на основе состояния записи (см. перечисление DataViewRowState, показанное в табл. 5.3).
Хотя этот способ может показаться аналогичным способу на основе использования метода Select объекта DataTable, они существенно отличаются. С одной стороны, объект DataView – это полностью динамичное представление данных. Помимо изменений значений полей, вставки и удаления записей в таблице-источнике немедленно отражаются в объекте DataView. С другой стороны, метод Select возвращает массив фиксированный длины со ссылками на записи, которые отражают изменения значений полей в таблице-источнике, но не отражают вставку и удаление записей или их упорядочение. Этот динамический аспект объекта DataView особенно эффективно применяется для создания кода, связанного с данными.
Хотя объект DataView аналогичен классическому представлению базы данных, он все же отличается от него следующим:
• не может использоваться как таблица;
• не может быть объединением нескольких таблиц;
• не может исключать поля, которые присутствуют в таблице-источнике;
• не может включать дополнительные поля (например, вычисленные поля), которых нет в таблице-источнике.
Объекты DataView используются с помощью свойства DefaultView объекта DataTable. Предположим, нужно создать представление для таблицы Customers, причем клиенты в нем должны быть упорядочены по почтовым индексам и иметь фамилии, начинающиеся с символа С. Для этого нужно использовать указанные ниже значения двух соответствующих свойств.
dsCustomers.Tables("Customers").DefaultView.RowFilter = _
"LastName = 'Like C* ' "
dsCustomers.Tables("Customers").DefaultView.Sort = "Zip"
Если необходимо отобразить в представлении текущие значения только из тех записей, которые были изменены (но еще не сохранены), то нужно указать новое значение для свойства RowFilter и значение свойства RowState.