2016-05-04 4 views
1

これは私のロードメソッドです
データソースはストアドプロシージャです。クエリから値を取得し、ストアドプロシージャのパラメータとして送信しようとしています。エラー:パラメータ値がありません。コードの何が間違っていますか?

protected void Page_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     System.Data.SqlClient.SqlConnection myConnection = 
      new System.Data.SqlClient.SqlConnection("user id=;" + 
        "password=;server=localhost;" + 
        "Trusted_Connection=yes;" + 
        "database=;" + "db;" + 
        "connection timeout=30"); 

     myConnection.Open(); 

     System.Data.SqlClient.SqlCommand myCommand_FirstName = 
      new System.Data.SqlClient.SqlCommand("SELECT [Patient-ID] " + 
       "FROM [Patient-Info] " + 
       "WHERE [First Name]='" + Request.QueryString["param3"] + 
       "' AND [Last Name]='" + Request.QueryString["param4"] + "';" 
       , myConnection); 

     String patient_ID = ""; 
     if (myCommand_FirstName.ExecuteScalar() != null) 
     { 
      patient_ID = myCommand_FirstName.ExecuteScalar().ToString(); 
     } 

     CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
     CrystalReportViewer1.RefreshReport(); 
     ParameterField paramField = new ParameterField(); 
     ParameterFields paramFields = new ParameterFields(); 
     paramField.Name = "@ID"; 
     ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue(); 
     paramDiscreteValue.Value = patient_ID; 
     paramField.CurrentValues.Add(paramDiscreteValue); 
     paramFields.Add(paramField); 

     paramField = new ParameterField(); 
     paramField.Name = "@Med"; 
     paramDiscreteValue = new ParameterDiscreteValue(); 
     paramDiscreteValue.Value = Request.QueryString["param1"]; 
     paramField.CurrentValues.Add(paramDiscreteValue); 
     paramFields.Add(paramField); 

     paramField = new ParameterField(); 
     paramField.Name = "@Year"; 
     paramDiscreteValue = new ParameterDiscreteValue(); 
     paramDiscreteValue.Value = Request.QueryString["param2"]; 
     paramField.CurrentValues.Add(paramDiscreteValue); 
     paramFields.Add(paramField); 

     reportDocument.Load(Server.MapPath("CrystalReport1.rpt")); 
     CrystalReportViewer1.ParameterFieldInfo = paramFields; 
     CrystalReportViewer1.ReportSource = reportDocument; 

     myConnection.Close(); 
    } 
} 

そして、私はのCrystalReportViewerを定義したところ、これは次のとおりです。

<form id="form1" runat="server"> 
    <div> 
     <CR:CrystalReportViewer ID="CrystalReportViewer1" width="903px" height="1170px" runat="server" AutoDataBind="True" ToolPanelView="None" OnInit="CrystalReportViewer1_Init" DisplayToolbar="False" EnableDatabaseLogonPrompt="False" GroupTreeImagesFolderUrl="" ReportSourceID="CrystalReportSource1" ToolbarImagesFolderUrl="" ToolPanelWidth="200px" EnableParameterPrompt="False" /> 
     <CR:CrystalReportSource ID="CrystalReportSource1" runat="server"> 
      <Report FileName="CrystalReport1.rpt"> 
      </Report> 
     </CR:CrystalReportSource> 
    </div> 
</form> 

答えて

0

以下のようなパラメータを設定してください。

reportDocument.SetParameterValue("@ID", patient_ID); 
    reportDocument.SetParameterValue("@Med", Request.QueryString["param1"]); 
    reportDocument.SetParameterValue("@Year", Request.QueryString["param2"]); 
+0

それはどちらか動作しません。 – user5808583

+0

これを試してみましたか? –

+0

そして、aspxページでプロパティAutoDataBind = "true"を設定してください –

関連する問題