Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’objet DataSet est essentiel à la prise en charge des scénarios de données déconnectés et distribués avec ADO.NET. L’objet DataSet est une représentation résidente en mémoire des données qui fournit un modèle de programmation relationnelle cohérent, quelle que soit la source de données. Il peut être utilisé avec plusieurs sources de données différentes, avec des données XML ou pour gérer les données locales dans l’application. L’objet DataSet représente un ensemble complet de données, y compris les tables, les contraintes et les relations associées entre les tables. En raison de la polyvalence de l’objet DataSet dans le stockage et l’exposition de données, vos données peuvent souvent être traitées et transformées en objet DataSet avant que des rapports sur ces données ne se produisent.
Avec les extensions de traitement des données Reporting Services, vous pouvez intégrer tous les objets DataSet personnalisés créés par des applications externes. Pour ce faire, vous créez une extension de traitement des données personnalisée dans Reporting Services qui agit comme un pont entre votre objet DataSet et le serveur de rapports. La plupart du code pour le traitement de cet objet DataSet est contenu dans la classe DataReader que vous créez.
La première étape de l’exposition de votre objet DataSet au serveur de rapports consiste à implémenter une méthode spécifique de fournisseur dans votre classe DataReader qui peut remplir un objet DataSet . L’exemple suivant montre comment charger des données statiques dans un objet DataSet à l’aide d’une méthode spécifique au fournisseur dans votre classe 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;
}
Une fois que vous avez créé ou récupéré votre jeu de données, vous pouvez utiliser l’objet DataSet dans vos implémentations des membres Read, GetValue, GetName, GetOrdinal, GetFieldType et FieldCount de la classe DataReader.
Voir aussi
Reporting Services Extensions
Mise en œuvre d’une extension pour le traitement des données
Bibliothèque d’extensions Reporting Services