Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das DataSet-Objekt ist zentral, um getrennte, verteilte Datenszenarien mit ADO.NET zu unterstützen. Das DataSet-Objekt ist eine speicherresidente Darstellung von Daten, die unabhängig von der Datenquelle ein konsistentes relationales Programmiermodell bereitstellt. Sie kann mit mehreren verschiedenen Datenquellen, mit XML-Daten oder lokal für die Anwendung verwaltet werden. Das DataSet - Objekt stellt einen vollständigen Satz von Daten dar, einschließlich verwandter Tabellen, Einschränkungen und Beziehungen zwischen den Tabellen. Aufgrund der Vielseitigkeit des DataSet-Objekts beim Speichern und Verfügbarmachen von Daten können Ihre Daten häufig verarbeitet und in ein DataSet-Objekt umgewandelt werden, bevor Berichte zu diesen Daten auftreten.
Mit Reporting Services-Datenverarbeitungserweiterungen können Sie alle benutzerdefinierten DataSet-Objekte integrieren, die von externen Anwendungen erstellt werden. Dazu erstellen Sie eine benutzerdefinierte Datenverarbeitungserweiterung in Reporting Services, die wie eine Brücke zwischen Ihrem DataSet-Objekt und dem Berichtsserver fungiert. Der großteil des Codes für die Verarbeitung dieses DataSet-Objekts ist in der von Ihnen erstellten DataReader-Klasse enthalten.
Der erste Schritt beim Verfügbarmachen des DataSet-Objekts auf dem Berichtsserver besteht darin, eine anbieterspezifische Methode in Ihrer DataReader-Klasse zu implementieren, die ein DataSet-Objekt auffüllen kann. Das folgende Beispiel zeigt, wie statische Daten mithilfe einer anbieterspezifischen Methode in Ihrer DataReader-Klasse in ein DataSet-Objekt geladen werden.
'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;
}
Nachdem Sie Ihr Dataset erstellt oder abgerufen haben, können Sie das DataSet-Objekt in Ihren Implementierungen der DataReader-Klasse"Read", "GetValue", "GetName", "GetOrdinal", "GetFieldType" und "FieldCount" verwenden.
Siehe auch
Reporting Services-Erweiterungen
Implementing a Data Processing Extension (Implementieren von Datenverarbeitungserweiterungen)
Erweiterungsbibliothek für Reporting Services