水晶报表公式的高级使用,急,在线等!!

sarly88 2007-08-30 05:49:04
问题描述:
水晶报表想要使用他来绑定显示一个数据表,应该如何绑定这个表的字段呢??
代码如下:
其中绑定表的代码是:CR_Document.DataDefinition.FormulaFields["paraField1"].Text = "{" + dt.Columns[0].DefaultValue + "}";

private void ConfigCrystalReports()
{
//获取表数据对公式进行数据绑定
OraDALBase BaseDAL = new OraDALBase();
string StringSql = "select it.stritemname,it.stritemname from item it";
DataTable dt = BaseDAL.OraGetTableSQL(StringSql);
for (int i = 0; i < dt.Rows.Count;i++ )
{
ArrayList Test = new ArrayList();
}
Fields_List = new ArrayList();
CrystalReportViewer1.ReportSource = Server.MapPath("~/rpt/CR_ViewBanlance.rpt");
ParameterFields ParamFields = new ParameterFields();
ParameterField ParamField1 = new ParameterField();
ParameterValues ParamValues1 = new ParameterValues();
ParameterDiscreteValue ParamValue1 = new ParameterDiscreteValue();
ParameterField ParamField2 = new ParameterField();
ParameterValues ParamValues2 = new ParameterValues();
ParameterDiscreteValue ParamValue2 = new ParameterDiscreteValue();
if (CK_Primarykey.Checked == true)
{
string FieldString = "stritemname";
FieldString = FieldString + ",";
ArrayList FieldArray = new ArrayList();
string[] FieldArray1 = FieldString.Split(',');
string strPath = 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.Columns[0].ToString();
//CR_Document.DataDefinition.FormulaFields["paraField1"].Text = "{" + dt.Columns[0].DefaultValue + "}";
CR_Document.SetDataSource(dt);
this.CrystalReportViewer1.ReportSource = CR_Document;
//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();
}
...全文
294 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanye_purple 2007-09-04
  • 打赏
  • 举报
回复
你現在具體是要想在報表中實現一個什麼功能,看看大家有沒有辦法解決。
lanye_purple 2007-09-04
  • 打赏
  • 举报
回复
原來是想加字段上去啊,。。暈。。
同意forgot的意見,要數據表中有才行。
tangserver 2007-09-03
  • 打赏
  • 举报
回复
看晕了
sarly88 2007-09-03
  • 打赏
  • 举报
回复
谢谢,楼上的兄弟!!
应该是可以的,你参考一下这个看看,不过他是c/s的,用asp.net+C#怎么实现,我研究了很就了的,但是没有真正实现,这个网址里有纤细实现的方法和源代码(http://www.cnblogs.com/babyt/archive/2005/04/21/142309.html),请帮忙看看
forgot 2007-09-03
  • 打赏
  • 举报
回复
forgot已經說過了:水晶報表不能這樣用,設計期的字段名是固化的,無法動態用.NET代碼進行賦值.

你給的例子就是驗証我這句話的范例呀:隻有在設計期間有的字段才能顯示出來。你可以不把這些字段拖拉到報表頁面上,但也一定要有這些字段,而不能無中生有!
forgot 2007-09-01
  • 打赏
  • 举报
回复
水晶報表不能這樣用,設計期的字段名是固化的,無法動態用.NET代碼進行賦值.
sarly88 2007-09-01
  • 打赏
  • 举报
回复
谢谢楼上的各位兄弟!!
现在我遇到的问题核心点是如何实现水晶报表公式字段的绑定,比如:
CR_Document.DataDefinition.FormulaFields["paraField1"].Text = "{" + ds.Tables["item"].TableName + "." + ds.Tables["item"].Columns[0].ColumnName.ToString() + "\"}"; 但是这样他会提示说字段名未知,不知道怎么回事,因为我的这个表是有数据的,而且也包含这个列,搞笑的是如果我绑定一个数值就可以跟赋数值差不多
tangserver 2007-09-01
  • 打赏
  • 举报
回复
rpt.SetParameterValue("1", "内部", "R_200707260901002D.rpt");
rpt.SetParameterValue("2", "的,发", "R_200707260901002D.rpt");
rpt.SetParameterValue("3", "得粉碎", "R_200707260901002D.rpt");
rpt.SetParameterValue("4", "惹人", "R_200707260901002D.rpt");
rpt.SetParameterValue("5", "而外", "R_200707260901002D.rpt");
这里是5个参数,12345是字段名称,第2个是他的值,最后一个是报表页面显示是
1 2 3 4 5
内部 的,发 得粉碎 惹人 而外

不知道能不能满足你的要求
tangserver 2007-09-01
  • 打赏
  • 举报
回复
那你就在页面放参数字段,后台给参数字段改名字就好了
tangserver 2007-08-31
  • 打赏
  • 举报
回复
你先设计好报表,再把table传给他就完了阿,具体要做什么你说清楚点
lanye_purple 2007-08-31
  • 打赏
  • 举报
回复
沒有明白你的意思,既然是想在報表中顯示表中字段的數據,直接在報表中拖進去不就綁定了嗎,何必在程序中寫代碼。
sarly88 2007-08-31
  • 打赏
  • 举报
回复
谢谢lanye_purple和tangserver!!
我是想实现:先设置好公式字段,然后根据我在web页面选择的字段名称动态生成我想要显示的数据字段,从而实现动态显示数据的这种功效

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧