1.报表模板设计
2.c# 代码
using FastReport;
using Oracle.ManagedDataAccess.Client;
using Sunny.UI;
using System;
using System.Data;
using System.Windows.Forms;
namespace WinPrint
{
public partial class Form1 : UIForm
{
private DataSet ds = null;
public Form1()
{
InitializeComponent();
ds=new DataSet();
}
private void uiButton1_Click(object sender, EventArgs e)
{
Report rp=new Report();
rp.Clear();
rp.Load(@"c:\reports\rp1.frx"); //加载报表模板
rp.RegisterData(ds,"tb1",true); //注册数据集 第一个参数是数据集 第二个参数是使用数据集中那个表,这里是 tb1 第三个参数是是否使用数据集ds中的所有表
DataBand band=rp.FindObject("Data1") as DataBand; //查找报表中的对象Data1 即DataBand
band.DataSource = rp.GetDataSource("tb1"); //设置DataBand 的数据集为当前报表注册的数据集中的表(并非具体的表,可以是一个查询或者视图)
if (rp.Prepare()) { //准备报表
rp.ShowPrepared(); //显示报表
}
}
private void uiButton2_Click(object sender, EventArgs e)
{
string connStr = "Data Source=localhost:1521/ORCL;User Id=**;Password=****";
using (OracleConnection conn = new OracleConnection(connStr)) {
try {
conn.Open();
OracleCommand cmd= conn.CreateCommand();
cmd.Parameters.Clear();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText = "mypackage.pr_getEmployee";
cmd.Parameters.Add("res", OracleDbType.RefCursor, 50, ParameterDirection.Output);
OracleDataAdapter oda=new OracleDataAdapter(cmd);
oda.Fill(ds, "tb1" );
uiDataGridView1.DataSource = ds.Tables[0];
}
catch(Exception ex) {
MessageBox.Show(ex.Message);
}
}
}
}
}
注意事项
rp.RegisterData(ds,"tb1",true)
这里如果缺省了第三个参数,就会导致报表只显示第一行,虽然这参数是控制数据DataSet中所有的表是否启用