DataSets と BindingSources を扱うのはこれが初めてなので、お手柔らかにお願いします。
より複雑なレポート システムの一部として (基本的な化身まで抽出しましたが、それでも正しく動作しません)、問題のある DataSet を使用してデータベースからデータを取得しようとしています (つまり、設定されていません)。デザイナー経由でアップ)。これが私がこれまでに持っているコードです:
// pull the data set
var dsReportData = new Reports2.ReportTest2();
dsReportData.BeginInit();
dsReportData.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema;
// bind tha data set
BindingSource bsReportBinding = new BindingSource();
((ISupportInitialize)bsReportBinding).BeginInit();
bsReportBinding.DataMember = dsReportData.Tables[0].TableName;
bsReportBinding.DataSource = dsReportData;
bsReportBinding.ResetBindings(true);
// test this stuff
dgvTester.DataSource = bsReportBinding;
dsReportData.EndInit();
((ISupportInitialize)bsReportBinding).EndInit();
これは、デザイナーを介してバインドを設定した後に .designer.cs ファイルで見たコードに基づいています。dgvTester は、デザイナーで作成された既定のプロパティを持つ単なる DataGridView です。
ReportTest2 データセットには、デザイナーを介して追加された TableAdapter が 1 つだけ含まれています。
ここで、VS で [データ] -> [データのプレビュー] に移動してReportTest2.payments.Fill,GetData ()
オブジェクトをプレビューすると、SQL Server Management Studio で TableAdapter を作成するために使用したクエリを実行した場合と同じように、データが正常に返されます。
ただし、実際のコードを実行すると、DataGridView はクエリ結果から列名を取得しますが、実際のデータは取得しません。デバッガーはそれを明らかにしますdsReportData.payments.Rows.Count == 0
(そして、そうです、dsReportData.Tables[0] は支払いです)。
最終的には BindingSource を使用して ReportViewer にデータを提供するつもりですが、まずレポートをデバッグする前に、データの取得に問題がないことを確認します。
ここで明らかな何かが欠けていることを願っています。そうだといい...