デザイン時に[レポートデータソース]ダイアログを使用して、セクションレポートをデータソースに連結することができます。[レポートデータソース]ダイアログは以下のいずれかの方法で開くことができます。
[レポートデータソース]ダイアログは、最も一般的な5種類のデータソースのタブを備えています。
次の手順は、Visual Studioのプロジェクトにセクションレポートのテンプレートが追加されていることを前提にしています。追加の詳細については、「クイックスタート」を参照してくだざい。
OLE DBデータソースを使用する
Select * From CUSTOMERS)。
または
[レポートデータソース]ダイアログ内のボタンをクリックしてクエリデザイナを開き、SQLクエリを作成することもできます。クエリデザイナを使用して対話的にクエリを作成する方法については、「クエリデザイナ」を参照してください。
ODBC データソースを使用する
ODBCデータソースに接続する前に、ODBCドライバをインストールしてODBCデータソースを設定する必要があります。
Provider=MSDASQL;Persist Security Info=False;DSN=MS Access Database)。
Select * From CUSTOMERS)。
SQLデータソースを使用する
Select * From CUSTOMERS)。
または
[レポートデータソース]ダイアログ内のボタンをクリックしてクエリデザイナを開き、SQLクエリを作成することもできます。クエリデザイナを使用して対話的にクエリを作成する方法については、「クエリデザイナ」を参照してください。
XMLデータソースを使用する
//CUSTOMER)。
CSVデータソースを使用する
アンバウンドデータソース、またはIEnumerableデータソースに接続するには、以下のコードを実行してください。
アンバウンドデータソースを使用する
データ接続を作成する
Visual Basic
Visual Basicコード(ReportStartイベントの上に貼り付けます) |
コードのコピー
|
---|---|
Dim m_cnnString As String Dim sqlString As String Dim m_reader As OleDbDataReader Dim m_cnn As OleDbConnection |
Visual Basicコード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
---|---|
'データソースの接続文字列を設定します。
m_cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
+ "Data Source=C:\Program Files\ActiveReportsNET18\Samples\Data\Nwind.mdb;Persist Security Info=False"
'データソースのSQLクエリを設定します。
sqlString = "SELECT * FROM categories INNER JOIN products ON categories.categoryid " _
+ "= products.categoryid ORDER BY products.categoryid, products.productid"
'DataReaderを作成します。
m_cnn = New OleDb.OleDbConnection(m_cnnString)
Dim m_Cmd As New OleDb.OleDbCommand(sqlString, m_cnn)
If m_cnn.State = ConnectionState.Closed Then
m_cnn.Open()
End If
m_reader = m_Cmd.ExecuteReader()
|
C#
C#コード(ReportStartイベントの上に貼り付けます) |
コードのコピー
|
---|---|
private static OleDbConnection m_cnn;
private static OleDbDataReader m_reader;
private string sqlString;
private string m_cnnString;
|
C#コード(ReportStartイベント内に貼り付けます) |
コードのコピー
|
---|---|
//データソースの接続文字列を設定します。
m_cnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ @"C:\Program Files\ActiveReportsNET18\Samples\Data\Nwind.mdb;Persist Security Info=False";
//データソースのSQLクエリを設定します。
sqlString = "SELECT * FROM categories INNER JOIN products"
+ " ON categories.categoryid = products.categoryid"
+ " ORDER BY products.categoryid, products.productid";
//DataReaderを作成します。
m_cnn = new OleDbConnection(m_cnnString);
OleDbCommand m_Cmd = new OleDbCommand(sqlString,m_cnn);
if(m_cnn.State == ConnectionState.Closed)
{
m_cnn.Open();
}
m_reader = m_Cmd.ExecuteReader();
|
データ接続を閉じる
Visual Basic
Visual Basicコード(ReportEndイベント内に貼り付けます) |
コードのコピー
|
---|---|
m_reader.Close() m_cnn.Close() |
C#
C#コード(ReportEndイベント内に貼り付けます) |
コードのコピー
|
---|---|
m_reader.Close(); m_cnn.Close(); |
フィールドのコレクションを作成する
Visual Basic
Visual Basicコード(DataInitializeイベント内に貼り付けます) |
コードのコピー
|
---|---|
Fields.Add("CategoryName") Fields.Add("ProductName") Fields.Add("UnitsInStock") Fields.Add("Description") |
C#
C#コード(DataInitializeイベント内に貼り付けます) |
コードのコピー
|
---|---|
Fields.Add("CategoryName"); Fields.Add("ProductName"); Fields.Add("UnitsInStock"); Fields.Add("Description"); |
フィールドにデータを入力
Visual Basic
Visual Basicコード(FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
Try m_reader.Read() Me.Fields("CategoryName").Value = m_reader("CategoryName") Me.Fields("ProductName").Value = m_reader("ProductName") Me.Fields("UnitsInStock").Value = m_reader("UnitsInStock") Me.Fields("Description").Value = m_reader("Description") eArgs.EOF = False Catch ex As Exception eArgs.EOF = True End Try |
C#
C#コード(FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
try { m_reader.Read(); Fields["CategoryName"].Value = m_reader["CategoryName"].ToString(); Fields["ProductName"].Value = m_reader["ProductName"].ToString(); Fields["UnitsInStock"].Value = m_reader["UnitsInStock"].ToString(); Fields["Description"].Value = m_reader["Description"].ToString(); eArgs.EOF = false; } catch { eArgs.EOF = true; } |
IEnumerableデータソースを使用する
Visual Basic
Visual Basicコード(レポートのクラスの内に張り付けます) |
コードのコピー
|
---|---|
Private datasource1 As IEnumerator(Of String) = Nothing Dim list As List(Of String)= Nothing |
Visual Basicコード(レポートのクラスの内に張り付けます) |
コードのコピー
|
---|---|
Private Function GetIEnumerableData() As IEnumerable(Of String) For i As Integer = 1 To 10 list.Add(String.Format("テストデータ_{0}", i.ToString())) Next Return list End Function |
C#
C#コード(レポートのクラス内に張り付けます) |
コードのコピー
|
---|---|
private IEnumerator<string> datasource = null; |
C#コード(レポートのクラス内に張り付けます) |
コードのコピー
|
---|---|
private IEnumerable<string> GetIEnumerableData() { for (int i = 1; i <= 10; i++) { yield return string.Format("テストデータ_{0}", i.ToString()); } } |
Visual Basic
Visual Basicコード(DataInitializeイベント内に貼り付けます) |
コードのコピー
|
---|---|
Me.Fields.Add("TestField") Me.list = New List(Of String) datasource1 = GetIEnumerableData().GetEnumerator() |
C#
C#コード(DataInitializeイベント内に貼り付けます) |
コードのコピー
|
---|---|
this.Fields.Add("TestField"); datasource = GetIEnumerableData().GetEnumerator(); |
Visual Basic
Visual Basicコード(FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
If datasource1.MoveNext() Then Me.Fields("TestField").Value = datasource1.Current eArgs.EOF = False Else eArgs.EOF = True End If |
C#
C#コード(FetchDataイベント内に貼り付けます) |
コードのコピー
|
---|---|
if (datasource.MoveNext()) { this.Fields["TestField"].Value = datasource.Current; eArgs.EOF = false; } else eArgs.EOF = true; |