請教高手:       我現在寫水晶報表遇到了一個問題 ,那就是我要在.NET頁面上做一系列SQL查詢,然后將所查詢的結果在水晶報表里顯示出來,即查詢結果自動生成水晶報表,我考慮用存儲結構,但是具體如何寫傳參數的代碼還是不太明白、請高手 指點一下

解决方案 »

  1.   

    基于水晶报表的开发是要先设置一个DataSet,然后设计基于这个DataSet的字段的报表
    也就是报表和DataSet和报表绑定,一旦DataSet定了,程序中也就不好再动DataSet的结构
    只需将DataSet填充,然后就调用报表绑定就OK~
      

  2.   

    rpt_Travel rpt = new rpt_Travel();
    ReportDocument rptH = rpt.OpenSubreport("rpt_Header.rpt");
    ReportDocument rptL = rpt.OpenSubreport("rpt_Travel_List.rpt");
    // DataSet ds = ComCrystalGetTripTravel("ZL_SERIAL","SC"); if(Session["dsp_TripReport_Transportation"] == null)
    {
    BindData_pnlTransportation();
    } DataTable dtTravel = (DataTable)Session["dsp_TripReport_Transportation"]; DataTable dt  = new DataTable();
    dt.Columns.Add("NO");
    dt.Columns.Add("TRIP_DATE");
    dt.Columns.Add("COUNTRY_NAME");
    dt.Columns.Add("TRAVEL_BY");
    dt.Columns.Add("TRAVEl_FROM");
    dt.Columns.Add("TRAVEL_TO");
    dt.Columns.Add("CURC_CODE");
    dt.Columns.Add("AMT");
    dt.Columns.Add("LOCAL_AMT");
    dt.Columns.Add("ATTACHMENT"); if (dtTravel.Rows.Count > 0)
    {             
    for (int i = 1; i < dtTravel.Rows.Count+1; i++)
    {
    DataRow dr = dt.NewRow();
    dr["NO"] = i.ToString();
    dr["TRIP_DATE"] = dtTravel.Rows[i-1]["TRIP_DATE"].ToString();
    dr["COUNTRY_NAME"] = dtTravel.Rows[i-1]["COUNTRY_NAME"].ToString();
    dr["TRAVEL_BY"] = dtTravel.Rows[i-1]["TRAVEL_BY"].ToString();
    dr["TRAVEl_FROM"] = dtTravel.Rows[i-1]["TRAVEl_FROM"].ToString();
    dr["TRAVEL_TO"] = dtTravel.Rows[i-1]["TRAVEL_TO"].ToString();
    dr["CURC_CODE"] = dtTravel.Rows[i-1]["CURR"].ToString();
    dr["AMT"] = dtTravel.Rows[i-1]["AMT"].ToString();
    dr["LOCAL_AMT"] = dtTravel.Rows[i-1]["LOCAL_AMT"].ToString();
    dr["ATTACHMENT"] = dtTravel.Rows[i-1]["ATTACHMENT"].ToString();
    dt.Rows.Add(dr);
    }       TextObject txtCharacter = (TextObject)rptH.ReportDefinition.ReportObjects["txtCharacter"];
    TextObject txtSerialNo = (TextObject)rptH.ReportDefinition.ReportObjects["txtSerialNo"];
    TextObject txtFullName = (TextObject)rptH.ReportDefinition.ReportObjects["txtFullName"];
    TextObject txtToday = (TextObject)rptH.ReportDefinition.ReportObjects["txtToday"]; TextObject txtSumAmt = (TextObject)rpt.ReportDefinition.ReportObjects["txtSumAmt"];
    TextObject txtRe = (TextObject)rpt.ReportDefinition.ReportObjects["txtRe"]; txtCharacter.Text = "(c)";
    txtSerialNo.Text = dtTravel.Rows[0]["SERIAL_NO"].ToString();
    txtFullName.Text = dtTravel.Rows[0]["FULL_NAME"].ToString();
    txtToday.Text = DateTime.Now.ToString("yyyy/MM/dd"); double amt = 0;
    for (int i = 0; i < dtTravel.Rows.Count; i++)
    {
    amt += Double.Parse(dtTravel.Rows[i]["LOCAL_AMT"].ToString());
    }
    txtSumAmt.Text = amt.ToString() ;
    txtRe.Text = dtTravel.Rows[0]["Re"].ToString();
    }
    rptL.SetDataSource(dt); ComCrystalReport.PdfCrystalReport(rpt,this);
      

  3.   

    我知道是在DATASET 里設置,但是查詢的存儲過程怎么寫丫?
    比如我 要在几個DropDownList里寫查詢NAME\WORK\CONTENT的條件,或者只調用某個DropDownList的模糊查詢

    樓上的兄弟寫的東西我沒有看懂,不過 仍然 感謝!