当初做WINCE程序时,需要通过webservice调用打印机 来打印, 中间传了一些参数取数据,用到水晶报表
架构:VS2005+WINCE5+ORACLE9I +水晶报表
public int PrintLabel(string doc52no,string printername,string rfno,int p_uid,out string errmsg)
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rd;
conn.Open();
DataSet ds = new DataSet();
OracleCommand cmd = new OracleCommand("RF_GET01DOCPRT",conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("P_DOC52NO", OracleType.VarChar, 20);
cmd.Parameters["P_DOC52NO"].Value = doc52no;
cmd.Parameters.Add("P_UID", OracleType.Int32);
cmd.Parameters["P_UID"].Value = p_uid;
OracleParameter p_ds = cmd.Parameters.Add("P_CUR", OracleType.Cursor);
p_ds.Direction = ParameterDirection.Output;
OracleDataAdapter adp = new OracleDataAdapter(cmd);
try
{
adp.Fill(ds, "printdata");
}
finally
{
conn.Close();
adp.Dispose();
}
errmsg = "";
try
{
rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
rd.Load(Server.MapPath("~") + "/BCD.rpt"); //因为是webservice,所以这样取路径。
rd.SetDataSource(ds.Tables[0]);
//rd.PrintOptions.PrinterName = @"\\192.168.0.20\HP LaserJet P1008";
//rd.PrintOptions.PrinterName = "Zebra 170XiIII Plus (300dpi)";
string Printer = printername;
if (Printer == "")
{
errmsg = "指定的打印机无效!";
return 0;
}
rd.PrintOptions.PrinterName = Printer;
rd.PrintToPrinter(1, false, 0, 0);
return 1;
}
catch (Exception E1)
{
errmsg = E1.Message;
return 0;
}
finally
{
rd.Dispose();
}
}