最近,给财务处开发了一个三联发票连打程序,使用的是C#--winform实现的。下面是水晶报表的基本概括:
水晶报表的一般概念
水晶报表的两种模式:
拉 PULL:设置好数据连接之后,使用水晶报表文件中所使用的获得数据的方式,由水晶报表自己解决数据获取操作。
推 PUSH:使用DataSet装载数据,然后填充到水晶报表中,再按照水晶报表的格式来展示。
查询的关键代码:
// string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\database\\db1.mdb";
private string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
private void btnQuery_Click(object sender, EventArgs e)
{
string sql = "select * from payment where 1=1";
if (txtYear.Text != "")
{
sql += "and 学费年度='"+txtYear.Text+"'";
}
if (txtStart.Text != "")
{
sql += " and 序号>=" + txtStart.Text;
}
if (txtEnd.Text != "")
{
sql += " and 序号<=" + txtEnd.Text;
}
if (txtXueFei.Text != "")
{
sql += " and 学费>=" + txtXueFei.Text;
}
if (txtXuefei1.Text != "")
{
sql += " and 学费<=" + txtXuefei1.Text;
}
if (txtZhusufei.Text != "")
{
sql += " and 住宿费>=" + txtZhusufei.Text;
}
if (txtZhusufei1.Text != "")
{
sql += " and 住宿费<=" + txtZhusufei1.Text;
}
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(sql, conn);
DataSet paymentDataSet = new DataSet();
sda.Fill(paymentDataSet, "payment");
dataGridView1.DataSource = paymentDataSet.Tables["payment"];
}
}
打开打印窗口命令按钮的代码:
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(sql, conn);
DataSet paymentDataSet = new DataSet();
sda.Fill(paymentDataSet, "payment");
ReportForm paymentReportForm = new ReportForm(paymentDataSet.Tables["payment"]);
paymentReportForm.Show();
}
在报表窗口中
public ReportForm(DataTable PaymentTable)
{
InitializeComponent();
CrystalReport1 paymentReport = new CrystalReport1();
paymentReport.SetDataSource(PaymentTable);
crystalReportViewer1.ReportSource = paymentReport;
}
为了实现连续打印,采用以下步骤设置:
一、添加新的纸张格式
1. 开始/设置/打印机和传真机
2.选择当前的打印机后, 打开左上角的菜单,文件/服务器属性
3.打开打印服务器属性, 格式/创建新格式,添入[表格名](例如:MyRePort)
4.格式描述(尺寸),选择单位(公制、英制),纸张大小(宽度、高度),打印机区域边距(左、右、顶端、底部)
5.鼠标单击[应用],[确定] 保存新的打印纸张格式。
6.开始/设置/打印机和传真机,选择当前打印机鼠标右键/属性/常规/打印首选项/纸张/文件尺寸(例如:MyRePort)
二、设置Crystal Reports水晶报表文件使用的打印纸张
1.使用Crystal Reports水晶报表打开[*.rpt]报表文件
2.打开Crystal Reports水晶报表左上角的菜单,文件/打印机设置
3.选择纸张大小为刚才添加的新纸张格式(例如:MyRePort)[确定]保存
4.在程序加载单据时就采用了新的纸张格式。
三、采用打印窗体(和Printer设计)来打印单据
1.完成{一、添加新的纸张格式}
2.开始/设置/打印机和传真机,选择当前打印机鼠标右键/属性/常规/打印首选项/纸张/文件尺寸(例如:MyRePort)
3.鼠标单击[应用] [保存]
4.这时候打印的单据纸张就设置好了