2014-06-12 1 views
0

Salutations de appdev (je suis nouveau rapport Crystall)Comment puis-je passer le paramètre à subreports dans le rapport de cristal de C# textbox formulaire en ligne

je créais une application web qui sera contient un rapport de cristal.

Mon exigence est:

Le rapport doit être affiché en fonction de la valeur (zone de texte sous forme de bande) qui est donnée en zone de texte.

Par exemple: si la valeur de la zone de texte = 2 signifie que seul l'élément qui a l'ID 2 devrait seulement être affiché.

Mon rapport de cristal a 3 sous rapports comme check, Party (qui contient également des valeurs de l'autre table appelée bon) et enfin banque. ces 4 tables sont liées par 1 champ commun appelé id.

  1. besoin de savoir comment transmettre le paramètre au rapport de cristallisation.
  2. Comment afficher le résultat qu'une seule fois (mon affichage du code même résultat deux fois)

Voilà comment je lie le rapport de cristal à l'aide des paramètres du fichier .cs dans C#

public void LoadTransReceipt() 
     { 
      string Date = ""; 
      string Sql = "SELECT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text.Trim() + "' and tREC_NUIsActive=1"; 
      SqlDataReader rdr = mobjGenlib.objDBLib.ExecuteQueryReader(Sql.ToString()); 
      while (rdr.Read()) 
      { 
       Session["ID"] = rdr.GetValue(0).ToString(); 
      } 
      rdr.Close(); 
      if (!string.IsNullOrEmpty(Session["ID"] as string)) 
      { 
       if (Session["Date"] != null) 
       { 
        Date = mobjGenlib.ConvertString(Session["Date"]); 
       } 

       reportPath = GetReportPath("ReceiptReport.rpt"); 
       CRReport = new ReportDocument(); 
       CRReport.Load(reportPath); 
       CrystalReportViewer1.ReportSource = CRReport; 
       AddParameterToReport("IDP", Session["ID"].ToString()); 
       AddParameterToReport("ActiveP", 1); 
       AddParameterToReport("IDB", Session["ID"].ToString()); 
       AddParameterToReport("ActiveB", 1); 
       AddParameterToReport("IDC", Session["ID"].ToString()); 
       AddParameterToReport("ActiveC", 1); 


       // ConnectionInfo connectionInfo = ConnInfo(); 
       ConnectionInfo objConnInfo = new ConnectionInfo(); 
       objConnInfo.DatabaseName = "Demo"; 
       objConnInfo.UserID = "aa"; 
       objConnInfo.Password = "aaaa"; 
       objConnInfo.ServerName = "HOME-PC\\SQLEXPRESS"; 
       SetDBLogonForReport(objConnInfo, CRReport); 
       SetDataSetForMultipleSubReport(objConnInfo, CRReport); 
      } 
     } 

mais quand je exécuter le code qu'il affiche toutes les données disponibles dans le tableau de double temps comme indiqué ci-dessous This is the Result of my code

peut me aider à résoudre ce problème

Merci à l'avance

erreur est survenue lors que

"**

Argument spécifié était hors de la plage de valeurs valides

**"

Répondre

0

De Explorateur de champ dans le rapport, cliquez avec le bouton droit de la souris sur ajouter un nouveau paramètre, puis dans le code derrière vous devez définir la valeur e du paramètre comme:

CRReport.SetParameterValue("@Parameter", TXTVou.Text) 

Vous pouvez éviter la duplication par ajouter le mot DISTINCT à votre requête comme:

"SELECT DISTINCT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text + "' and tREC_NUIsActive=1" 

ou Vous pouvez éviter la duplication par (Réprimer Si dupliquées) propriété dans le field

+0

Salut merci pour votre réponse ... et nous pouvons utiliser le code ci-dessus pour transmettre le paramètre à sous rapports aussi ???? – Appdev

Questions connexes