在水晶报道中,即使在不同的查询中我总是得到相同的结果
var command="Select ID,Nam,Family From Info where ID=2";
var connection=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");
var dt=new DataTable();
using (var da = new OleDbDataAdapter(command, Connect))
da.Fill(dt);
var report=new Report();//prebuilt report
report.SetDataSource(dt);
CrystalReportViewer.ReportSource=report;
“dt”有正确的数据,但我不知道为什么报告会显示所有记录
知道问题出在哪里?
答案 0 :(得分:0)
经过大量搜索,我找到了答案:
我应该使用DataSet而不是DataTable
var command="Select ID,Nam,Family From Info where ID=2";
var connection=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");
var dt=new DataSet();//Here was the problem
using (var da = new OleDbDataAdapter(command, Connect))
da.Fill(dt);
var report=new Report();//prebuilt report
report.SetDataSource(dt);
CrystalReportViewer.ReportSource=report;
实际上,如果你想使用DataTable,你应该这样做:
report.Database.Tables[0].SetDataSource(dataTable);