存储过程操作水晶报表

这是存储数据库存存储过程

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);
            
        }
     

    }

写到这里,本人也是这段时间做项目刚刚接触一点,希望对朋友们有些帮助!!!

原文地址:https://www.cnblogs.com/yzenet/p/2473323.html