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中所有的表是否啓用