在WinForm下,Crystal Report的打印是通过代码实现的,它的代码非常讲究顺序:
下面给你一个例子,你自己把它改为你要的。
string ConnText="database=bccsdb;uid=sa";
SqlConnection Conn=new SqlConnection();
Conn.ConnectionString=ConnText;
try
{
Conn.Open();
}
catch(SqlException sqlex)
{
MessageBox.Show("出错原因:"+sqlex.Message,"出错",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
Conn.Close();
}
if(this.radioButton1.Checked)
{
try
{
this.Conn1.Open();
string SelectText="SELECT UnitNo, DepositBalance, CreditBalance, DepositAverageBrow, CreditAverageBrow, DepositCreditCollate, DepositInterestRate, CreditInterestRate, RemoveIncomeBankroll, RemoveIncomeInterestRate, StairPreparativeBrow, StairPreparativeBrowInterestRate, SecondPreparativeBrow, SecondPreparativeBrowInterestRate, Cess, ChargeRate, DailyProfit, DayCount, DepositProfitRate, CreditProfitRate FROM [ThenStat.]";
SqlCommand Select=new SqlCommand();
Select.CommandText=SelectText;
Select.Connection=this.Conn1;
this.SqlDa1.SelectCommand=Select;
SqlDa1.Fill(this.ReportThenStat);
RptThenStat Rpt=new RptThenStat();
Rpt.SetDataSource(this.ReportThenStat);
this.crystalReportViewer1.ReportSource=Rpt;
}
catch(SqlException sqlex)
{
MessageBox.Show(sqlex.Message,"出错",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
finally
{
Conn1.Close();
}
}

解决方案 »

  1.   

    其中的Conn1是通过数据适配器自动生成的一个数据库连接,而RptThenStat是一个事先已经定义好的rpt文件。
      

  2.   

    to cocosoft(pengyun):我看了代码有两个问题:1.这个打印的原理是什么可以说一下么(实现的思想)?2.我没看出来在哪里执行的打印功能,可以我诉我一下么?谢谢.
      

  3.   

    打印的原理在这里面没有,打印的代码也没有,但是这段代码完成的主要功能是把报表与CrystalReportView连接在一起,并把报表的数据源确定下来。
    在完成这些功能以后,在CrystalReportView中的工具栏上有一个打印按钮,你可以单击那一个按扭就可以进行打印了。对报表的页面进行设置是在报表设计的视图中完成的。