水晶报表参数选择问题

xiaohua3006 2011-02-28 11:35:22
用VS2008做水晶报表遇到这样一个问题,push模式.
新建了一个DataSet.xsd来存放从Access里面取来的数据,
cs文件:

protected void CrystalReportViewer1_Init(object sender, EventArgs e)
{
//数据库连接
string connstr = System.Configuration.ConfigurationSettings.AppSettings["conn"];
OleDbConnection cn = new OleDbConnection(connstr);
//sql语句
string sqlCustomer = "select [Customer ID],[Customer Name],Country,City from Customer";
string sqlOrder = "select [Order ID],[Customer ID],[Order Amount] from Orders";
OleDbDataAdapter daCustomer = new OleDbDataAdapter(sqlCustomer, cn);
OleDbDataAdapter daOrder = new OleDbDataAdapter(sqlOrder, cn);
DataSetForAccess ds = new DataSetForAccess();
//数据填充
daCustomer.Fill(ds, "Customer");
daOrder.Fill(ds, "Orders");
ReportDocument myReport = new ReportDocument();
//获取报表路径
string reportPath = Server.MapPath("Customer.rpt");
myReport.Load(reportPath);
//报表数据源
myReport.SetDataSource(ds);
this.CrystalReportViewer1.ReportSource = myReport;
}

我在报表文件里面使用这个作为数据源,可以把这些数据读取出来,
我要用customer.country作为参数选择,但是当我新建参数选择默认值的时候居然找不到Customer.Country里面的值
请问各位,这是什么原因.
...全文
72 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohua3006 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 luols 的回复:]

关键还是要动手实践。。
边看边实践~~
[/Quote]

呵呵~~是的,在里面还是会经常遇到很多的问题,
阿双2009 2011-03-01
  • 打赏
  • 举报
回复
你这边给水晶报表设数据的代码不要放在Init中,放到一个按钮里面,并且要把报表数据源保存到缓存(如Session或ViewState等),具体可参考:http://blog.csdn.net/babyt/archive/2009/07/26/4610054.aspx

里面的第二点:小代码,大作用
xiaohua3006 2011-03-01
  • 打赏
  • 举报
回复
经过昨天的调试我发现CrystalReportViewer1_Init会在pageload前面执行,所以刚开始那样ddl是空值.
而且报表每次刷新时都要执行一次CrystalReportViewer1_Init。
而pageload执行完后会执行CrystalReportViewer1_Load这个事件,也就是这个是最后执行的,相当如最后一次的绑定数据把数据输出到页面吧.我是这样理解的.

OK谢谢luols,结贴给分,继续关注ing!
阿双2009 2011-03-01
  • 打赏
  • 举报
回复
关键还是要动手实践。。
边看边实践~~
阿双2009 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiaohua3006 的回复:]
再次感谢luols,下次一定要把你们博客关于报表的全部看完,这是我这几个月的目标!
[/Quote]
努力把阿泰关于水晶报表的文章看完,你的水晶报表“内功”就很深厚了:)
xiaohua3006 2011-03-01
  • 打赏
  • 举报
回复
再次感谢luols,下次一定要把你们博客关于报表的全部看完,这是我这几个月的目标!
xiaohua3006 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luols 的回复:]

既然是字段里面的数据,为什么要设为参数呢,用 公式控制不是更好?
[/Quote]
在预览报表的时候根据参数选择coutry,只浏览所选country下的数据。
阿双2009 2011-02-28
  • 打赏
  • 举报
回复
既然是字段里面的数据,为什么要设为参数呢,用 公式控制不是更好?
xiaohua3006 2011-02-28
  • 打赏
  • 举报
回复
第二个小问题解决了,忘记消除重复的那个单词了,汗。。。
xiaohua3006 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luols 的回复:]

引用 2 楼 xiaohua3006 的回复:
在预览报表的时候根据参数选择coutry,只浏览所选country下的数据。


直接在sql语句过滤下不就好了?
C# code
string sqlCustomer = string.Format("select [Customer ID],[Customer Name],Country,City from Customer whe……
[/Quote]

我刚才试过了,发现了几个问题:
1.当页面第一次加载CrystalReportViewer1_Init的时候报表就已经运行完毕,而用combox改变值的时候也有个selectIndexChange.应该是先有selectIndexChange才有CrystalReportViewer1_Init。但是这2个事件都是独立的.我该怎么处理呢.
2.如果我要用多个值就要用listbox,可以绑定数据库字段里面的值,但是会有重复的0-0.

请问一下,这个该怎样解决。
阿双2009 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaohua3006 的回复:]
在预览报表的时候根据参数选择coutry,只浏览所选country下的数据。
[/Quote]

直接在sql语句过滤下不就好了?
string sqlCustomer = string.Format("select [Customer ID],[Customer Name],Country,City from Customer where Country='{0}'",combobox1.Text);

4,815

社区成员

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

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