www.aTopSoft.net
使用报表服务器,可以实现报表模板在服务端进行定义,在设计报表模板时,模板与数据库的关联,都在模板中直接编写,从而实现应用编程和报表设计的分离。
1. 先定义模板的样式
2.这个模板要与数据库进行关联,则定义数据源, 在数据源中可以定义与数据库的关联。
数据源的定义可以是与数据库进行关联,也可以自己定义数据,如:
<DataSource>
<Report>
<DataReader Name ='Mid'>
<SubDataSet Vars='ywzl;sfxm'>
<Row><Item>1</Item> ><Item>4.5564</Item></Row>
<Row><Item>1</Item> ><Item>4.5564</Item></Row>
<Row><Item>1</Item> ><Item>4.5564</Item></Row>
</SubDataSet>
</DataReader>
</Report>
</DataSource>
3. 把当前模板导入到报表服务器中
4.接下就可以调用该模板了,设置方式有两种
a.只使用 Rptctl 中的 CreateRpt
如:
Rptctl. CreateRpt( “RptServer://127.0.0.1/aa/客户信息.rpt? DSName=Default” );
b.使用 Rptctl 中的 LoadDataSource
如:
Rptctl. CreateRpt( “RptServer://127.0.0.1/aa/客户信息.rpt”);
Rptctl.LoadDataSource( “Default” );
注:如果在数据源中有变量,如
<DataSource>
<Report>
<DataReader Name ='Mid'>
<ConnectString>Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:/demo.mdb</ConnectString>
<SQL>Select LoginName as zh, UserName as cm , Addr as dz , age as nl from Tab_User where age > [age]</SQL>
</DataReader>
</Report>
</DataSource>
其中有一个 [Age ] 的变量,则在 LoadDataSource 时,要传入变量的值,如:
1. 直接调用
Rptctl. CreateRpt( “RptServer://127.0.0.1/aa/客户信息.rpt? DSName=Default&age=20” );
2. 分别调用
Rptctl. CreateRpt( “RptServer://127.0.0.1/aa/客户信息.rpt”);
Rptctl.LoadDataSource( “Default”, “age=20” );