PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > 基本操作 > セクションレポートの基本操作 > セクションレポートでのデータ連結 > レポートとデータソースの連結 |
設計時に[レポートデータソース]ダイアログを使用し、セクションレポートをデータソースに連結できます。以下のいずれかの方法で[レポートデータソース]ダイアログを開けます。
[レポートデータソース]ダイアログは、よく使用される5種類のデータソースのタブを備えています。
次の手順は、Visual Studioのプロジェクトにセクションレポートのテンプレートを既に追加したことを前提にしています。テンプレートを追加する方法の詳細は、「プロジェクトにレポートを追加する」を参照してくだざい。
メモ: NorthWindデータベース(..\ActiveReportsNET9\Data\Nwind.mdb)へのアクセス権限が必要です。 |
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
アンバウンド、または、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\ActiveReportsNET9\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\ActiveReportsNET9\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; } |
ヒント: 実行時にデータを表示するには、レポート上に配置したコントロールのDataFieldプロパティをコードでフィールドコレクションに追加されたフィールド名に割り当てます。 |
注意: フィールドコレクションには、DataInitializeイベントまたはFetchDataイベントを使用してアクセスしてください。他のイベントからアクセスした場合、動作は保障されません。 |
IEnumerableデータソースを使用する
Visual Basic
Visual Basicコード(レポートのクラスの内に張り付けます) |
コードのコピー
|
---|---|
Private datasource1 As IEnumerator(Of String) = Nothing Dim list As List(Of String)= Nothing |
Visual Basic.NETコード(レポートのクラスの内に張り付けます) |
コードのコピー
|
---|---|
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プロパティをコードでフィールドコレクションに追加されたフィールド名に割り当てます。 |