| GrapeCity ActiveReports for .NET 12.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\ActiveReportsNET12\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\ActiveReportsNET12\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プロパティをコードでフィールドコレクションに追加されたフィールド名に割り当てます。 |