以下のコードを使用して、結晶レポート&のレポートソースを設定します。プロジェクトに&というDataSetを追加して、そのDataSetにDataTableを追加しました。 DataTableの名前は "my_dt" &、DataSetの名前は "MyDataSet"です。 "my_dt" DataTableには、データベースの "出席"テーブルと一致する3つの列があります。 「Start Debugging」を押すと、エラーが表示されません&空白のレポートが表示されます。 "Start Without Debugging"を押すとこのエラーが出ます。何が間違っているのか分かりません。助けてください、どんな助けも大いに感謝されるでしょう。Crystal Reportを読み込む際に「インデックスが配列の境界外にあります」というエラーが表示されるのはなぜですか?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
namespace CrystalReportWithAccess
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
my_rpt objRpt;
// Creating object of our report.
objRpt = new my_rpt();
String ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\CentreDB.mdb;Jet OLEDB:Database Password=pass";
OleDbConnection myConnection = new OleDbConnection(ConnStr);
String Query1 = "SELECT * FROM [Attendance]";
OleDbDataAdapter adapter = new OleDbDataAdapter(Query1, ConnStr);
DataSet Ds = new DataSet();
// here my_dt is the name of the DataTable which we
// created in the designer view.
adapter.Fill(Ds, "my_dt");
if (Ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("No data Found", "CrystalReportWithAccess");
return;
}
// Setting data source of our report object
objRpt.SetDataSource(Ds);
CrystalDecisions.CrystalReports.Engine.TextObject root;
root = (CrystalDecisions.CrystalReports.Engine.TextObject)
objRpt.ReportDefinition.ReportObjects["txt_header"];
root.Text = "Sample Report By Using Data Table!!";
// Binding the crystalReportViewer with our report object.
crystalReportViewer1.ReportSource = objRpt;
}
}
}
私の無知を許してください。しかし、Ds.Tables.Lengthプロパティを使用するためにusingディレクティブを追加する必要がありますか?それは私が参照を欠いていると言います。 – Ramila
いいえ、 'Length'ではなく' Count'を使用する必要があります – Gabe
ああ、私はそれを使用しましたが、私はまだ同じエラーが発生しますか? – Ramila