存储过程操作水晶报表
这是存储数据库存存储过程
ALTER proc [dbo].[sp_getpictureinformation]
(
@CustID varchar(10),
@RefNo char(8)
)
as
begin
select * from(
select A.*,A_User.CompanyName,A_User.CustID from(
select O_OrderWovenLabel.RefNo, O_OrderWovenLabel.ItemNo,O_OrderWovenLabel.Color,O_OrderWovenLabel.Size,
O_OrderWovenLabel.OrderQty,O_OrderWovenLabel.Seq,O_OrderImg.imgpath
from O_OrderWovenLabel join O_OrderImg
on O_OrderWovenLabel.ItemNo=O_OrderImg.imgItemNO )A,A_User where A_User.CustID=@CustID
)K
join M_HBTL
on K.ItemNo=M_HBTL.ItemNo and K.Color=M_HBTL.Color and K.Size=M_HBTL.Size
where RefNo=@RefNo
end
这是你连接数据存储过程得到的字段(如字段commany,RefNo)
把字段拖放到Details上
这是代码操作
public static void GetBindReportData(string CutsID, string RefNo, CrystalReportViewer crystalReportViewer1)
{
SqlConnection Conn=null;
try
{
ParameterFields paramFields = new ParameterFields(); //参数字段 防止不要自已在网页中手动输入参数
ParameterField paramField1 = new ParameterField();
ParameterField paramField2 = new ParameterField();
ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue();
ParameterDiscreteValue discreteVal2 = new ParameterDiscreteValue();
paramField1.ParameterFieldName = "@CustID";
discreteVal1.Value = CutsID;
paramField1.CurrentValues.Add(discreteVal1);
paramFields.Add(paramField1);
paramField2 = new ParameterField();
paramField2.ParameterFieldName = "@RefNo";
discreteVal2.Value = RefNo;
paramField2.CurrentValues.Add(discreteVal2);
paramFields.Add(paramField2);
//将参数字段集合放入查看器控件。
crystalReportViewer1.ParameterFieldInfo = paramFields;
ReportDocument rd = new ReportDocument();
rd.Load(@"E:\WebSiteTest\Admin\CrystalReport2.rpt"); //你要载入的报表
Conn = OpenConn(strConn);
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.CommandText = "sp_getpictureinformation";
Cmd.Connection = Conn;
Cmd.Parameters.Add("@CustID", SqlDbType.VarChar);
Cmd.Parameters["@CustID"].Value = CutsID;
Cmd.Parameters.Add("@RefNO", SqlDbType.Char);
Cmd.Parameters["@RefNo"].Value = RefNo;
SqlDataAdapter da = new SqlDataAdapter(Cmd);
DataSet ds = new DataSet();
da.Fill(ds, "Throughput");
rd.SetDataSource(ds.Tables["Throughput"]); //这里一定要写好,否则它人弹出提示框叫你输入数据库的用户名和密码的,你可以写ds.table[0]
crystalReportViewer1.ReportSource = rd;//绑定上去
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
}
finally
{
CloseConn(Conn);
}
}
写到这里,本人也是这段时间做项目刚刚接触一点,希望对朋友们有些帮助!!!