Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Объект DataSet является центральным для поддержки отключенных сценариев распределенных данных с ADO.NET. Объект DataSet — это резидентное представление данных, которое обеспечивает согласованную реляционную модель программирования независимо от источника данных. Его можно использовать с несколькими различными источниками данных, с XML-данными или для управления локальными данными в приложении. Объект DataSet представляет полный набор данных, включая связанные таблицы, ограничения и связи между таблицами. Из-за универсальности объекта DataSet при хранении и предоставлении данных данные часто обрабатываются и преобразуются в объект DataSet перед созданием отчетов об этих данных.
С помощью модулей обработки данных служб Reporting Services можно интегрировать любые пользовательские объекты DataSet , созданные внешними приложениями. Для этого необходимо создать настраиваемое расширение обработки данных в службах Reporting Services, которое действует как мост между объектом DataSet и сервером отчетов. Большая часть кода для обработки этого объекта DataSet содержится в создаваемом классе DataReader .
Первым шагом в предоставлении объекта DataSet серверу отчетов является реализация конкретного метода поставщика в классе DataReader , который может заполнить объект DataSet . В следующем примере показано, как загрузить статические данные в объект DataSet с помощью метода для конкретного поставщика в классе DataReader .
'Private members of the DataReader class
Private m_dataSet As System.Data.DataSet
Private m_currentRow As Integer
'Method to create a dataset
Friend Sub CreateDataSet()
' Create a dataset.
Dim ds As New System.Data.DataSet("myDataSet")
' Create a data table.
Dim dt As New System.Data.DataTable("myTable")
' Create a data column and set various properties.
Dim dc As New System.Data.DataColumn()
dc.DataType = System.Type.GetType("System.Decimal")
dc.AllowDBNull = False
dc.Caption = "Number"
dc.ColumnName = "Number"
dc.DefaultValue = 25
' Add the column to the table.
dt.Columns.Add(dc)
' Add 10 rows and set values.
Dim dr As System.Data.DataRow
Dim i As Integer
For i = 0 To 9
dr = dt.NewRow()
dr("Number") = i + 1
' Be sure to add the new row to the DataRowCollection.
dt.Rows.Add(dr)
Next i
' Fill the dataset.
ds.Tables.Add(dt)
' Use a private variable to store the dataset in your
' DataReader.
m_dataSet = ds
' Set the current row to -1.
m_currentRow = - 1
End Sub 'CreateDataSet
// Private members of the DataReader class
private System.Data.DataSet m_dataSet;
private int m_currentRow;
// Method to create a dataset
internal void CreateDataSet()
{
// Create a dataset.
System.Data.DataSet ds = new System.Data.DataSet("myDataSet");
// Create a data table.
System.Data.DataTable dt = new System.Data.DataTable("myTable");
// Create a data column and set various properties.
System.Data.DataColumn dc = new System.Data.DataColumn();
dc.DataType = System.Type.GetType("System.Decimal");
dc.AllowDBNull = false;
dc.Caption = "Number";
dc.ColumnName = "Number";
dc.DefaultValue = 25;
// Add the column to the table.
dt.Columns.Add(dc);
// Add 10 rows and set values.
System.Data.DataRow dr;
for(int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr["Number"] = i + 1;
// Be sure to add the new row to the DataRowCollection.
dt.Rows.Add(dr);
}
// Fill the dataset.
ds.Tables.Add(dt);
// Use a private variable to store the dataset in your
// DataReader.
m_dataSet = ds;
// Set the current row to -1.
m_currentRow = -1;
}
public bool Read()
{
m_currentRow++;
if (m_currentRow >= m_dataSet.Tables[0].Rows.Count)
{
return (false);
}
else
{
return (true);
}
}
public int FieldCount
{
// Return the count of the number of columns, which in
// this case is the size of the column metadata
// array.
get { return m_dataSet.Tables[0].Columns.Count; }
}
public string GetName(int i)
{
return m_dataSet.Tables[0].Columns[i].ColumnName;
}
public Type GetFieldType(int i)
{
// Return the actual Type class for the data type.
return m_dataSet.Tables[0].Columns[i].DataType;
}
public Object GetValue(int i)
{
return m_dataSet.Tables[0].Rows[m_currentRow][i];
}
public int GetOrdinal(string name)
{
// Look for the ordinal of the column with the same name and return it.
// Returns -1 if not found.
return m_dataSet.Tables[0].Columns[name].Ordinal;
}
После создания или получения набора данных можно использовать объект DataSet в реализации класса DataReader, Read, GetValue, GetName, GetOrdinal, GetFieldType и FieldCount.
См. также
Расширения служб Reporting Services
Реализация модуля обработки данных
Библиотека расширений служб Reporting Services