我正在使用Crystal Reports C#windows application.i中的报告从localhost服务器获取数据到crystal report。我的表格中有2个datetimepicker。
datetimepicker1 = dtpfrom
datetimepicker2 - dtpto
Crystalreport
现在我想要的是,当从中选择一些日期和到datetimepicker时,数据之间的数据显示在水晶报告中请帮我解决我不知道如何开始。我正在通过谷歌搜索搜索我没有得到水晶报告中的datetimepicker显示数据之间的任何事情。有什么想法吗?
我的尝试:
MySqlConnection conn = new MySqlConnection(MyCon);
CrystalReport1 objcr = new CrystalReport1();
MySqlDataAdapter da = new MySqlDataAdapter("select * from data where date>='" + DateTime.Parse(dtpfrom.Text) + "' and date<='" + DateTime.Parse(dtpto.Text) + "' ", conn);
DataTable dt = new DataTable();
da.Fill(dt);
objcr.SetDataSource(dt);
crystalReportViewer1.ReportSource = objcr;
crystalReportViewer1.RefreshReport();
但是我收到了错误
未处理的类型异常 发生'CrystalDecisions.CrystalReports.Engine.DataSourceException' 在CrystalDecisions.ReportAppServer.DataSetConversion.dll
中其他信息:无法加载数据库信息。
在线:
objcr.SetDataSource(dt);
答案 0 :(得分:6)
@divi
使用datetimepicker过滤报告中的数据不适用于您的编码
执行以下操作:
在字段资源管理器中创建一个新参数fromdate,todate - &gt;参数字段(右键单击) - &gt;新
像这样使得todate也
然后右键单击报告。
选择报告 - &gt;选择公式 - &gt;记录......
请执行以下操作
然后单击该窗体中的“保存并关闭”按钮。
了解这一点:
右键单击报告 - &gt;数据库 - &gt;设置数据源位置...
现在代码
ReportDocument report = new ReportDocument();
report.Load("C:\\Users\\Desktop\\CrystalReport1.rpt");
TableLogOnInfo Table = new TableLogOnInfo();
ConnectionInfo Connection = new ConnectionInfo();
Tables Tables;
ParameterFieldDefinitions Parameters;
ParameterFieldDefinition Parameter;
ParameterValues Values = new ParameterValues();
ParameterDiscreteValue DiscreteValue = new ParameterDiscreteValue();
DiscreteValue.Value = dateTimePicker1.Text;
Parameters = report.DataDefinition.ParameterFields;
Parameter = Parameters["fromdate"];
Values = Parameter.CurrentValues;
Values.Clear();
Values.Add(DiscreteValue);
Parameter.ApplyCurrentValues(Values);
DiscreteValue.Value = dateTimePicker2.Text;
Parameters = report.DataDefinition.ParameterFields;
Parameter = Parameters["todate"];
Values = Parameter.CurrentValues;
Values.Add(DiscreteValue);
Parameter.ApplyCurrentValues(Values);
Connection.ServerName = "Your servername in Set Datasource Location";
Connection.DatabaseName = "Your databasename in Set Datasource Location";
Connection.UserID = "your username";
Connection.Password = "your password";
Tables = report.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in Tables)
{
Table = table.LogOnInfo;
Table.ConnectionInfo = Connection;
table.ApplyLogOnInfo(Table);
}
crystalReportViewer1.ReportSource = report;
crystalReportViewer1.Refresh();
希望这有助于解决您的问题。