请参考这个:
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_dynamic_report_formula.exe.asp不行的话,再提出来,呵呵
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/csharp_win_dynamic_report_formula.exe.asp不行的话,再提出来,呵呵
调试欢乐多
这个例子是动态添加显示字段呀,而我想实现的是报表的列显示的是同一个字段,只是值不一样!还没有解决!!!
我想显示的格式如下: 1 2 3 4 ...
Row1
Row2
Row3
...也就是,Type有几个值,那该报表就有几个列.
Row2
Row3
...它的值是根据什么来生成的?还是没值的?
Row2
Row3
...它们的值和与Type字段一样,都是从Table1中取得的.就是想办法把Type显示出来.
set @sql = 'select 分组的列,'
select @sql = @sql + 'sum(case Type when '''+Type+'''
then 求的数量列名 else 0 end) as '''+Type+''','
from (select distinct Type from table1) as aselect @sql = left(@sql,len(@sql)-1) + ' from table1 group by 分组的列'exec(@sql)
go
宝马KJ 红色 5台 2003-03-17
宝马QR 青色 2台 2003-03-17
宝马PK 红色 10台 2003-03-17
显示结果集: 宝马KJ 宝马KR ....(注:这一行的值是根据车型)
审核日期 紫色 红色 青色 红色2003-03-17 2台 3台 5台 0台
...
set @sql = 'select 审核日期,'
select @sql = @sql + 'sum(case when 车型='''+车型+''' and 颜色='''+颜色+'''
then 台数 else 0 end) as '''+车型+'/'+颜色+''','
from (select 车型,颜色 from 原结果集 group by 车型,颜色) as aselect @sql = left(@sql,len(@sql)-1) + ' from 原结果集 group by 审核日期'exec(@sql)
go
你是使用VS.NET自带的水晶报表还是使用水晶报表工具来完成的?
xsd文件中,怎么构架数据关系。
你参考我的那篇帖子应该是可以完成的了报表的装载和查看
一.使用CrystalReportViewer跟水晶报表Crystal Report的绑定浏览;
1.Solution Explorer/Add/Add New Item…/DataSet,按照提示建立DataSet的XML架构文件(.xsd);
2.Solution Explorer/Add/Add New Item…/Crystal Report,建立报表文件;在这里完成跟存储过程数据源的连接和报表布局;
3。然后再建立一个窗体文件 CrystalReport.aspx
并在文件中建立或从工具箱中拖入一个CrystalReportViewer
4.在CrystalReport.aspx.cs中写入下列代码:(添加在Page_Load事件中)
// 设置连接信息
string myConnectionString = "data source=RAINFISH;initial catalog=car;persist security info=False;user id=sa;workstation id=RAINFISH;packet size=4096";
SqlConnection myConnection = new SqlConnection(myConnectionString);
string mySelectQuery = "select * from TbAutoDispatchBill";
SqlDataAdapter myDataAdapter = new SqlDataAdapter(mySelectQuery, myConnection);
//DataSet1为用XML 架构定义语言 (XSD) 描述的DataSet架构
DataSet1 dsBill = new DataSet1();
// 连接到数据库、从数据库中获取数据然后断开数据库连接
myDataAdapter.Fill(dsBill,"TbAutoDispatchBill");//
在这里TbAutoDispatchBill要写为你存储过程的实际名;
//实例化水晶报表
CrystalReport_Bill CR_Bill = new CrystalReport_Bill();
//将填充的数据集传递给报表
CR_Bill.SetDataSource(dsBill);
//设置报表源,将该报表对象绑定到 Web 窗体查看器
CrystalReportViewer1.ReportSource=CR_Bill;
感谢星毅!我在建立.rpt文件时,横向标题中的车型字段怎么处理!只先创建一列还是多列?
按照你上面给出的源数据来测试的审核日期 宝马KJ/红色 宝马KJ/紫色 宝马QR/红色 宝马PK/青色
2003-03-17 5 2 10 2就是说这样的结果现在也还可以,是吗?
//设置按名称指定的表的 TableLogOnInfo 对象。
TableLogOnInfo logOnInfo = new TableLogOnInfo(); //对报表中的每个表进行循环
//报表中数据集的Table 对象的个数
for(int i=0;i==Report.Database.Tables.Count-1;i++)
{
// 为报表中的表设置连接信息。
// 设置服务器或 ODBC 数据源名称、数据库名称、
logOnInfo.ConnectionInfo.ServerName = "Rainfish";
logOnInfo.ConnectionInfo.DatabaseName = "Test"; //设置用于登录到数据源的用户名
logOnInfo.ConnectionInfo.UserID = "sa";
//设置用于登录到数据源的“密码”
logOnInfo.ConnectionInfo.Password = "";
// 将连接信息应用于表。
CR_Report.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
}示例代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string myConnectionString = "ConnectionString";
SqlConnection myConnection = new SqlConnection(myConnectionString);
string mySelectQuery = "exec Up_ReportTest ";
SqlDataAdapter myDataAdapter = new SqlDataAdapter(mySelectQuery, myConnection);
//DataSet1为用XML 架构定义语言 (XSD) 描述的DataSet架构
DataSet1 dsBill = new DataSet1();
// 连接到数据库、从数据库中获取数据然后断开数据库连接
myDataAdapter.Fill(dsBill,"Up_ReportTest");
//实例化水晶报表
CrystalReport1 CR_Bill = new CrystalReport1(); //设置按名称指定的表的 TableLogOnInfo 对象。
TableLogOnInfo logOnInfo = new TableLogOnInfo(); //对报表中的每个表进行循环
//报表中数据集的Table 对象的个数
for(int i=0;i==CR_Bill.Database.Tables.Count-1;i++)
{
// 为报表中的表设置连接信息。
// 设置服务器或 ODBC 数据源名称、数据库名称、
logOnInfo.ConnectionInfo.ServerName = "Rainfish";
logOnInfo.ConnectionInfo.DatabaseName = "Test"; //设置用于登录到数据源的用户名
logOnInfo.ConnectionInfo.UserID = "sa";
//设置用于登录到数据源的“密码”
logOnInfo.ConnectionInfo.Password = "";
// 将连接信息应用于表。
CR_Bill.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
} //将填充的数据集传递给报表
CR_Bill.SetDataSource(dsBill);
//设置报表源,将该报表对象绑定到 Web 窗体查看器
CrystalReportViewer1.ReportSource=CR_Bill; }你要解决的那个问题还要好好想想才能解决
哈!