高手看看 急得很 水晶报表动态加载显示的问题

问题描述

公式绑定,实现代码是(总是报该字段名无效,怎么回事呢!!):CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{"+ds.Tables["item"].TableName+"."+ds.Tables["item"].Columns[0].ColumnName.ToString()+""}";stringFieldString="stritemname";FieldString=FieldString+",";ArrayListFieldArray=newArrayList();string[]FieldArray1=FieldString.Split(',');stringstrPath=Server.MapPath("~/rpt/CR_ViewBanlance.rpt");CR_Document.Load(strPath);ParamValue1.Value=CK_Primarykey.Text.ToString();//参数值ParamValues1.Add(ParamValue1);ParamField1.ParameterFieldName="Parameter1";//参数名ParamField1.CurrentValues=ParamValues1;ParamFields.Add(ParamField1);//CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{"+dt+"}";CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{"+ds.Tables["item"].TableName+"."+ds.Tables["item"].Columns[0].ColumnName.ToString()+""}";CR_Document.SetDataSource(ds.Tables["item"]);this.CrystalReportViewer1.ReportSource=CR_Document;

解决方案

解决方案二:
哪个字段?
解决方案三:
表item中的stritemname字段,全部代码如下:stringConnString=ConfigurationManager.AppSettings["ConnctionString1"];OracleConnectionOraConn=newOracleConnection(ConnString);OraConn.Open();OraDALBaseBaseDAL=newOraDALBase();stringStringSql="selectstritemnamefromitem";DataSetds=BaseDAL.OraGetDataSet(StringSql);//DataSetds=newDataSet();OracleDataAdapterOraDA=newOracleDataAdapter(StringSql,OraConn);OraDA.Fill(ds,"item");DataTabledt=BaseDAL.OraGetTableSQL(StringSql);stringstrName="stritemname";Fields_List=newArrayList();CrystalReportViewer1.ReportSource=Server.MapPath("~/rpt/CR_ViewBanlance.rpt");ParameterFieldsParamFields=newParameterFields();ParameterFieldParamField1=newParameterField();ParameterValuesParamValues1=newParameterValues();ParameterDiscreteValueParamValue1=newParameterDiscreteValue();ParameterFieldParamField2=newParameterField();ParameterValuesParamValues2=newParameterValues();ParameterDiscreteValueParamValue2=newParameterDiscreteValue();if(CK_Primarykey.Checked==true){//创建一个数据表结构和读写的数据表结构一致//DataTabletest=newDataTable();//DataColumnCol_stritemname=newDataColumn();//Col_stritemname.DataType=System.Type.GetType("System.String");//Col_stritemname.ColumnName="stritemname";//stringstrColumnName=dt.Columns.Contains("stritemname").ToString();//test.Columns.Add(Col_stritemname);//for(inti=0;i<5;i++)//{//DataRowdr=test.NewRow();//dr["stritemname"]="123";//test.Rows.Add(dr);//}stringFieldString="stritemname";FieldString=FieldString+",";ArrayListFieldArray=newArrayList();string[]FieldArray1=FieldString.Split(',');stringstrPath=Server.MapPath("~/rpt/CR_ViewBanlance.rpt");CR_Document.Load(strPath);ParamValue1.Value=CK_Primarykey.Text.ToString();//参数值ParamValues1.Add(ParamValue1);ParamField1.ParameterFieldName="Parameter1";//参数名ParamField1.CurrentValues=ParamValues1;ParamFields.Add(ParamField1);CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{'"+dt.Rows[0]["stritemname"]+"'}";///CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{"+ds.Tables["item"].TableName+"."+ds.Tables["item"].Columns[0].ColumnName.ToString()+""}";CR_Document.SetDataSource(ds.Tables["item"]);this.CrystalReportViewer1.ReportSource=CR_Document;//CR_Document.DataDefinition.FormulaFields["paraField1"].Text={};//CR_Document.DataDefinition.FormulaFields("Parameter1")}else{ParamValue1.Value="";//参数值ParamValues1.Add(ParamValue1);ParamField1.ParameterFieldName="Parameter1";//参数名ParamField1.CurrentValues=ParamValues1;ParamFields.Add(ParamField1);ParamField1.AllowCustomValues=false;}if(CK_Period.Checked==true){ParamValue2.Value=CK_Period.Text.ToString();//参数值"ParamValues2.Add(ParamValue2);ParamField2.ParameterFieldName="Parameter2";ParamField2.CurrentValues=ParamValues2;ParamFields.Add(ParamField2);}else{ParamValue2.Value="";//参数值ParamValues2.Add(ParamValue2);ParamField2.ParameterFieldName="Parameter2";ParamField2.CurrentValues=ParamValues2;ParamFields.Add(ParamField2);ParamField2.AllowCustomValues=false;}CrystalReportViewer1.ParameterFieldInfo=ParamFields;CrystalReportViewer1.DataBind();
解决方案四:
stringFieldString="stritemname";FieldString=FieldString+",";ArrayListFieldArray=newArrayList();string[]FieldArray1=FieldString.Split(',');应该是这里出错stringFieldString="stritemname";这句只是给FieldString付了个常量,应该是FieldString=dr["stritemname"].ToString();
解决方案五:
tangserver.谢谢!!这样是没有办法绑定公式的,如果要实现公式的绑定,那么就应该将报表要显示的数据放到一个表里面,然后再将这个表的数据字段绑定到我在报表中设计好的公式字段,比如"paraField1",实现时这样处理的:CR_Document.DataDefinition.FormulaFields["paraField1"].Text="{"+ds.Tables["item"].TableName+"."+ds.Tables["item"].Columns[0].ColumnName.ToString()+""}";可是没有办法进行绑定,出错提示是该字段名未知!!
解决方案六:
水晶報表不能這樣用,設計期的字段名是固化的,無法動態用.NET代碼進行賦值.
解决方案七:
是的,编程要根据已有的字段进行,先得到报表字段,然后更改它的一些属性。水晶报表无法像你想的那样完全动态,因为BO公司并未开发这样的接口给我们用,只允许我们获取报表上已有的东西,这样的话,就必须先设计表样式,再编程控制!!
解决方案八:
学习
解决方案九:
谢谢,楼上的兄弟!!应该是可以的,你参考一下这个看看,不过他是c/s的,用asp.net+C#怎么实现,我研究了很就了的,但是没有真正实现,这个网址里有纤细实现的方法和源代码(http://www.cnblogs.com/babyt/archive/2005/04/21/142309.html),请帮忙看看
解决方案十:
我看晕了
解决方案十一:
呵呵,阿泰这个也不是动态加载字段,他是先在报表上放上一些空字段,再用程序去更改这些字段的内容,你就算不用公式字段,用文本字段也是一样的,但前提是你的报表上必须先有一些可供修改的字段,你不能报表上光秃秃的,就想拿程序去加载~~
解决方案十二:
我也是用了公式字段去进行绑定的,而且报表设计器里也是预先设计好了字段了的,然后再进行字段的绑定的,可绑定的时候就会报告字段未知的错误,不知究竟怎么处理才行呢
解决方案十三:
forgot已經說過了:水晶報表不能這樣用,設計期的字段名是固化的,無法動態用.NET代碼進行賦值.你給的例子就是驗証我這句話的范例呀:隻有在設計期間有的字段才能顯示出來。你可以不把這些字段拖拉到報表頁面上,但也一定要有這些字段,而不能無中生有!

时间: 2024-12-03 20:43:13

高手看看 急得很 水晶报表动态加载显示的问题的相关文章

vs2013使用水晶报表 动态加载图片不显示

问题描述 WIN10操作系统+VS2013使用CrystalReportsCRforVS_13_0_13在项目中添加了一个数据集DataTable1其中有三列S_Id,S_Name,S_Imgs其中S_imgs为Byte[]动态读取数据库数据,填充到该数据集,数据存中的S_Imgs为一个图片URL地址,下段代码将URL转换为Byte[]foreach(DataRowdrintables.Rows){using(varstreams=WebRequest.Create("http://qiniu/

VS2010加载水晶报表时报加载数据库失败 求解!!!

问题描述 1.水晶报表模板是通过PULL模式获取字段名,创建的.2.报表数据源是PUSH模式赋值的(SetDataSource(newdatatable))3.疑问:为什么报表模板在程序加载时提示加载数据库失败?如果在PC机安装了数据库就不会有这个问题 解决方案 解决方案二:你要看什么地方报错了

水晶报表分页导出PDF时动态加载的图片、控件未更新

问题描述 我用VS2005+水晶报表Web版做了一个每页显示一项详细植物信息.图片的报表.例如:Plant表中保存了PlantName,LeafColor,PlantImageUrl三个字段.在报表中使用子报表动态加载PlantImageUrl字段中记录的图片然后根据LeafColor字段中保存的颜色数据(如"|#CCCCCC||#DDDDDD|"),经过字符串处理后,更改两个BoxObject的FillColor,来表示不同阶段的颜色.在浏览器中直接浏览都显示正确,每次翻页,图片和B

Windows CE下流驱动的动态加载

    我想很多WinCE的开发人员,尤其是刚入门并且做驱动开发的工程师,都曾碰到这样一个问题,要编写一个外围设备的驱动,拿最简单的GPIO驱动来说,编写驱动本身可能只花了一会儿功夫,可要把编译生成的DLL打包到先前做好的操作系统映像当中,最简单也得MakeImg一下,还要修改BIB文件.注册表文件,以让系统启动的时候就加载该驱动,所有工作都做完了,还得花几分钟下载整个操作系统到内存去运行,这也得要个好几分钟.能力强的人一次成功,不走回头路也就算了.如果驱动编写得有问题,那又得改代码,重新编译,

水晶报表动态合并列单元格

问题描述 给水晶报表动态生成的分组,合并分组内对应的某列值如:配货号品牌数量(需要合并的列)001A10001B8001C7002A11(根据配货号在同一页内新生成的一组数据)002B20002C0...(如未满页,下面的生成和上面类似的分组)合并后效果配货号品牌数量(需要合并的列)001A001B25001C002A002B31002C...急!!! 解决方案 本帖最后由 gekaitiantia 于 2015-10-23 07:26:32 编辑解决方案二:up!!!!解决方案三:设置相同则抑

在vb中动态加载水晶报表rpt文件的方法

动态|加载|水晶报表 这个问题在很多论坛里边都有问到.但是一直没找到满意的答案.下边写出一个解决办法 Dim sql As String Dim rstLiuShui As New ADODB.Recordset Dim Rpt As New CRAXDDRT.Report Dim PrintApp As New CRAXDDRT.Application If Option2.Value = True Then sql = "select * from n_ihbill where datedi

水晶报表 抑制显示-水晶报表如何实现抑制显示Section

问题描述 水晶报表如何实现抑制显示Section 当水晶报报表没有数据的时候,我不想显示Detail 和 Report Footer两个Section 请问如何实现这个功能 谢谢(没什么分 请见谅)

急,急!!!!!请大家帮忙,如何根据TREEVIEW选择项的不同,动态加载控件,谢谢.

问题描述 如题, 解决方案 解决方案二:用框架可以实现解决方案三:根据TREEVIEW选择项的不同,动态加载控件是不是动态加载结点啊解决方案四:TreeViewtreeView1ButtonbtnOktreeView1.SelectObject=btnOK;试试这个将相应的控件实力复制给SelectObject就行了解决方案五:这个上面有

《简单实现Crystal Report动态加载》补遗

动态|加载 在<简单实现Crystal Report动态加载>中,所提供的方法有时候并不能很好的工作.于是通过不断的实验和资料查询,终于发现了更好的方法.核心代码如下 CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1; String path = Server.MapPath("./"); path = path + @"\Report\Report.rpt"; path = pa