PowerTools ActiveReports for .NET 11.0J > ActiveReportsユーザーガイド > 基本操作 > セクションレポートの基本操作 > セクションレポートでのデータ連結 > レポートとデータソースの連結 |
デザイン時に[レポートデータソース]ダイアログを使用して、セクションレポートをデータソースに連結することができます。[レポートデータソース]ダイアログは以下のいずれかの方法で開くことができます。
[レポートデータソース]ダイアログは、最も一般的な5種類のデータソースのタブを備えています。
次の手順は、Visual Studioのプロジェクトにセクションレポートのテンプレートが追加されていることを前提にしています。追加の詳細については、「プロジェクトにレポートを追加する」を参照してくだざい。
メモ: データの使用にはNorthWindデータベース(<User folder>\Samples\Data)へのアクセス権限が必要です。 |
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\ActiveReportsNET11\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\ActiveReportsNET11\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"); |
フィールドにデータを入力
注意: フィールドコレクションへのアクセスには、DataInitializeイベントかFetchDataイベントを使用してください。他のイベントからアクセスした場合、動作は保障されません。 |
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; } |
ヒント: 実行時にデータを表示するには、レポート上に配置したコントロールのDataFieldプロパティをコードでフィールドコレクションに追加されたフィールド名に割り当てます。 |
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; |
ヒント: 実行時にデータを表示するには、レポート上に配置したコントロールのDataFieldプロパティをコードでフィールドコレクションに追加されたフィールド名に割り当てます。 |