次の手順に従って、テーブルからレコードをクエリしてレポートを表示しようとしています。
http://www.codeproject.com/Articles/166291/Generate-a-report-using-Crystal-Reports-in-Visual
行でエラーがスローされます
ds.Tables [0] .Merge(dt);
'Tables'の定義が含まれておらず、型の最初の引数を受け入れる拡張メソッド'Tables'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
以下のコードで。助けてください。
Empは、データセットが含まれるxsdファイル名(Emp.xsd)です。
protected void Page_Load(object sender, EventArgs e)
{
ReportDocument rptDoc = new ReportDocument();
Emp ds = new Emp(); // Emp is the xsd file name (Emp.xsd)
DataTable dt = new DataTable();
// Just set the name of data table
dt.TableName = "EmployeeStats";
dt = AB.GetEEmpStats((int)Session["EmpID"]); //Call function to get the employee statistics
ds.Tables[0].Merge(dt); <<<<<<<<<<<<<<<<<<< Error at this line
// .rpt file path
rptEmpStat.Load(Server.MapPath("EmpStats.rpt"));
//dataset to the report viewer.
rptDoc.SetDataSource(ds);
Emp.ReportSource = rptDoc;
Emp.RefreshReport();
}
GetEEmpStatsのコードは以下のとおりです
public DataTable GetEEmpStats(int ID)
{
//Connection string
//string sqlCon = <***************>;
SqlConnection Con = new SqlConnection(sqlCon);
SqlCommand cmd = new SqlCommand();
DataSet ds = null;
SqlDataAdapter adapter;
try
{
Con.Open();
//Stored procedure
cmd.CommandText = "sp_getEmpDetails";
cmd.CommandType = CommandType.StoredProcedure;
// input parameter
SqlParameter parameter1 = new SqlParameter();
parameter1.ParameterName = "@ID";
parameter1.SqlDbType = SqlDbType.Int;
parameter1.Direction = ParameterDirection.Input;
parameter1.Value = ID;
// Add the parameter to the Parameters collection.
cmd.Parameters.Add(parameter1);
cmd.Connection = Con;
ds = new DataSet();
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "EmpDet");
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
if (Con.State != ConnectionState.Closed)
Con.Close();
}
return ds.Tables[0];
}