简体   繁体   English

使用datetimepicker过滤Crystal报表中的数据

[英]Filter data in crystal report using datetimepicker

I'm working on a report in Crystal Reports C# windows application.i fetch the data from localhost server to crystal report. 我正在使用Crystal Reports C#Windows应用程序中的报表进行工作。我从本地服务器获取数据到Crystal报表。 I have 2 datetimepicker in my form. 我的表格中有2个datetimepicker。

datetimepicker1 = dtpfrom datetimepicker1 = dtpfrom

datetimepicker2 - dtpto datetimepicker2-dtpto

在此处输入图片说明

Crystalreport Crystalreport

在此处输入图片说明

Now I want that, when selecting some date in from and the to datetimepicker the between data is show in the crystal report please help me to solve i don't know how to start. 现在,我想要的是,当在from和to datetimepicker中选择某个日期时,水晶报表中将显示之间的数据,请帮助我解决我不知道如何开始的问题。 i'm searching through googling i didn't get any thing about between data in datetimepicker show in crystal report. 我正在搜索谷歌搜索,我在水晶报表的datetimepicker显示中的数据之间没有任何了解。 Any ideas? 有任何想法吗?

Here my try: 这是我的尝试:

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();

But i'm getting an error 但是我遇到一个错误

An unhandled exception of type 'CrystalDecisions.CrystalReports.Engine.DataSourceException' occurred in CrystalDecisions.ReportAppServer.DataSetConversion.dll CrystalDecisions.ReportAppServer.DataSetConversion.dll中发生了类型为'CrystalDecisions.CrystalReports.Engine.DataSourceException'的未处理异常

Additional information: Failed to load database information. 附加信息:无法加载数据库信息。

On line: 在线:

objcr.SetDataSource(dt);

@divi @divi

filter data in report using datetimepicker is not done for your coding 您的编码未使用datetimepicker筛选报表中的数据

Do the following: 请执行下列操作:

create a new parameter fromdate, todate in Field Explorer -> Parameter Field(Right Click)-> New 在字段资源管理器->参数字段(右键单击)->新建中创建一个从日期到日期的新参数 在此处输入图片说明

like this make todate also 像这样使迄今为止

在此处输入图片说明

then right click the report. 然后右键单击该报告。

Select Report -> Selection Formula -> Record... 选择报告->选择公式->记录...

Do following 跟随

在此处输入图片说明

then click save and close button in that form. 然后点击该表单中的保存并关闭按钮。

Know this: 知道这个:

Right Click the report -> Database -> Set Datasource Location... 右键单击报告->数据库->设置数据源位置...

在此处输入图片说明

Now Code 现在代码

 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();

Hope This helps to solve your problem. 希望这有助于解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM