会用水晶报表crystal reports的请进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会用水晶报表crystal reports的请进相关的知识,希望对你有一定的参考价值。

两个问题第一个 水晶报表已经关联了数据库 但是如何取字段中的某个值
第二个 如何添加图片 不是固定添加的那种 算是动态添加

= =好吧 各位大牛 我可能表述的不是很清楚 哪里不清楚的我可以慢慢说 只是求能解决问题

一,水晶报表如何对字段取值:
1、将crystalReportViewer控件拖至界面2、选择报表源->新建报表源3、指定crystal报表->新建报表->输入名称并点击确定4、点击确定,在弹出的界面中,均采用默认值,点击确定5、如果用的是sql数据库,选择OLE DB(ADO)6、在弹出窗口中选择SQLserver,下一步7、输入服务器的相关信息,选择数据库,点击下一步8、点击完成9、在可用数据源里就能看到刚才添加的那个,选中数据库的要显示的表名,点击>按钮,下一步10、点击表名前面的+,可以看到表中的所有字段,选中某个后,点击>按钮,直到需展示的字段选择完,下一步11、根据提示选择分组、汇总、排序的方式,,点完成。如果不需设置,步骤10 完成之后直接点完成12、运行,就可以看到结果了。
二,水晶报表动态添加图片:要连接远程数据库,最起码要有个远程数据服务才行啊,比如SQL数据库服务,据俺所知ACCESS没那功能。如果是要连接远程数据服务,也不在RPT里,应该是在RS里,让RS打开远程数据,RPT引用RS里的数据
Dim x As PictureSet x = LoadPicture("图片路径")
Set rptProduce.Sections("Section2").Controls("报表控件名").Picture = x将动态图片转换成JPG格式就可以啦。</p>格式转换器下载地址: http://bbs.meiyatt.com/
添加新项---rdlc报表----然后为报表配置数据源----然后设计报表:点报表里的工具箱添加柱状图即可。//声明报表的数据对象
CrystalDecisions.CrystalReports.Engine.Database crDatabase;
CrystalDecisions.CrystalReports.Engine.Table crTable;
TableLogOnInfo dbConn = new TableLogOnInfo();
// 创建报表对象
CrystalReportSource oRpt = new CrystalReportSource(); //CrystalReportSource
// 加载已经做好的报表
oRpt.Load();
//连接数据库,获得相关的登陆信息
crDatabase = oRpt.Database;
//定义一个arrtables对象数组
object[] arrTables = new object[1];
crDatabase.Tables.CopyTo(arrTables, 0);
crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0];
dbConn = crTable.LogOnInfo;
//设置相关的登陆数据库的信息
dbConn.ConnectionInfo.DatabaseName = "pubs";//pubs
dbConn.ConnectionInfo.ServerName = ".";
dbConn.ConnectionInfo.UserID = "sa"; //sa
dbConn.ConnectionInfo.Password = "";
//将登陆的信息应用于crtable表对象
crTable.ApplyLogOnInfo(dbConn);
//将报表和报表浏览控件绑定
crViewer.ReportSource = oRpt;
//传递参数
setReportParameters(DropDownList1.SelectedItem.Text);private void setReportParameters(string para)

// all the parameter fields will be added to this collection
ParameterFields paramFields = new ParameterFields();
// the parameter fields to be sent to the report
ParameterField pfType = new ParameterField();
// 设置在报表中,将要接受的参数字段的名称
pfType.ParameterFieldName = "BookType";
ParameterDiscreteValue dcType = new ParameterDiscreteValue();
dcType.Value = para;
pfType.CurrentValues.Add(dcType);
paramFields.Add(pfType);
// 将参数集合绑定到报表浏览控件
crViewer.ParameterFieldInfo = paramFields;
检举
参考技术A 如果是用FineReport,关联了数据库之后,新建一个数据集,将字段直接拖拽进报表设计器即可;你说的动态添加图片是什么意思?是不是在填报中用一个上传附件的控件上传图片?这个FineReport报表也是可以实现的,设置一个文件上传控件即可实现。楼主可以看一下水晶报表是否也是类似实现的,当然也可以试一下FineReport看一下具体怎样实现,有问题还可以去“FineReport爱好者论坛”求助,很多热心的报表高手在。

ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源

【中文标题】ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源【英文标题】:Crystal Report in ASP.Net passing parameter values and no valid report source 【发布时间】:2012-09-05 04:56:37 【问题描述】:

在 ASP.Net 网页上显示 Crystal 报表时遇到问题。该网站只是一个内部网站,因此您会看到我已将文件路径编码到该网站中。我想我已经很接近让这个工作了,但我显然错过了一些东西。有人可以帮忙吗?

他是我的密码:

void BindReport()

    ReportDocument rd = new ReportDocument();

    //Report is saved on an external server which I have full access too
    rd.Load(@"\\MyServer\Reports\MyReport.rpt");
    rd.SetDatabaseLogon("UserName", "Password", "MyServer", "MyDatabase", true);
    //The Report has 2 parameter and links directly to a stored procedure on a SQL Server
    rd.SetParameterValue("@uspDateFrom", new DateTime(2012, 05, 01));
    rd.SetParameterValue("@uspDateTo", new DateTime(2012, 05, 31));
    CrystalReportViewer1.ReportSource = rd;
    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
    CrystalReportViewer1.RefreshReport();


//I call my report on a button click
protected void buttonPreviewReport_Click(object sender, EventArgs e)

    BindReport();

当报告尝试运行时,我会弹出一个对话框,询问我的参数值,即使我已经传递了它们!?即使我在对话框提示中输入它们,我也会收到一条消息,指出没有可用的有效报告源。

有人有什么想法吗?

我正在使用 ASP.Net 4.0

提前致谢

【问题讨论】:

【参考方案1】:

我在使用 Crystal Report 时遇到过同样的问题。

  ParameterFields paramFields = new ParameterFields();

  ParameterField paramField = new ParameterField();

  ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();

  paramField.ParameterFieldName = "@examid";// This is how you can send Parameter Value to the Crystal Report


 // Set the first discrete value and pass it to the parameter.
   discreteVal.Value = ddlAllExam.SelectedValue;//Value from DropDown

   paramField.CurrentValues.Add(discreteVal);

   paramFields.Add(paramField);

   CrystalReportViewer1.ParameterFieldInfo = paramFields;

   string datasource = System.Configuration.ConfigurationManager.AppSettings["Data Source"].ToString();

   string Database = System.Configuration.ConfigurationManager.AppSettings["Database"].ToString();

   string Userid = System.Configuration.ConfigurationManager.AppSettings["Userid"].ToString();

   string Password = System.Configuration.ConfigurationManager.AppSettings["Password"].ToString();

    ReportDocument report = new ReportDocument();

    report.Load(Server.MapPath("~/Reports/AllExamReport.rpt"));//Here you can give the Path of external Server

    report.SetDatabaseLogon(Userid, Password, datasource, Database);

    CrystalReportViewer1.ReportSource = report;

希望对你有帮助。!!!

【讨论】:

以上是关于会用水晶报表crystal reports的请进的主要内容,如果未能解决你的问题,请参考以下文章

C# winform 用水晶报表 如何做能显示出图中上面那2行数据?

水晶报表 如何设置水晶报表 crystal reports 的字段自动换行

Crystal Reports:根据报表用户定义预设参数

开发“crystal report”报表要用啥语言?

ASP.Net 中的 Crystal Report 传递参数值并且没有有效的报表源

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。