分类:
2009-05-08 15:38:28
所谓拉模式就是用水晶报表直接绑定数据库中的表,不需要写任何代码。优点:操作简单;缺点:不灵活。操作方法:添加新项-》选择Crystal报表;在aspx页面中添加CrystalReportViewer控件,选择报表源。在pagelode中添加CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "sa", @".", "zjwhjg");来解决每次打开都提示登陆的问题。
所谓推模式就是写代码从数据库中取数据,然后填充数据集。再把水晶报表和数据集绑定。需要写代码。优点:灵活,功能强大。缺点:操作较繁琐。操作方法:添加新项-》选择数据集,给数据集添加列。添加新项-》选择Crystal报表;在aspx页面中添加CrystalReportViewer控件,选择报表源。绑定的方法:string sql = "exec report_ClientSatate";
string DBConfig_sql = @"Data Source=.;Initial Catalog=zjwhjg;User ID=sa;Password=sa";
DataSet ds = new DataSet();
SqlConnection sqlCon = new SqlConnection(DBConfig_sql);
SqlCommand sqlCmd = new SqlCommand(sql, sqlCon);
SqlDataAdapter sqlAd = new SqlDataAdapter();
sqlAd.SelectCommand = sqlCmd;
sqlAd.Fill(ds, "sql");
CrystalReportSourceClient.ReportDocument.Load(Server.MapPath("CrystalReportClient.rpt"));
//注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”
CrystalReportSourceClient.ReportDocument.SetDataSource(ds.Tables["sql"]);
//{?}中的参数可以不用赋值,即使赋了值也不起作用。
// CrystalReportSource1.ReportDocument.ParameterFields["Parm"].CurrentValues.AddValue("1234567");
//CrystalReportSource1.ReportDocument.ParameterFields["Title"].CurrentValues.AddValue("这时推模式的报表样例!");
//CrystalReportSource1.DataBind();CrystalReportViewer2.ReportSource = CrystalReportSourceClient;
CrystalReportViewer2.DataBind();存储过程:CREATE PROCEDURE report_ClientSatateAS
begin
declare @num int
declare @state nvarchar(20)
declare @numAll int
CREATE TABLE #Test
(
state varchar(50),
num int
)
set @state='在线'
select @num= count(*) from currentusers
insert into #Test(state,num)values(@state,@num)
set @state='全部'
select @numAll=sum(ComputerAmount) from BarInfo
insert into #Test(state,num)values(@state,@numAll)
set @state='离线'
insert into #Test(state,num)values(@state,@numAll-@num)
select * from #Test
drop table #Test
end
GO
需要注意的是查询出的数据集的字段要与自己定义的数据集的字段相同。