Как передать параметр в подотчеты в кристаллическом отчете из текстового поля С# веб-формы

Привет от Appdev (я новичок в Crystall Report)

Я создавал веб-приложение, которое будет содержать кристаллический отчет.

Мое требование:

Отчет должен отображаться на основе значения (текстовое поле в веб-форме), которое указано в текстовом поле.

Например: если значение Textbox = 2 означает, что должен отображаться только элемент с идентификатором 2.

В моем кристаллическом отчете есть 3 подотчета, такие как чек, партия (которая также содержит значения из другой таблицы, называемой ваучером) и, наконец, банк. эти 4 таблицы связаны одним общим полем с именем id.

  1. нужно знать, как передать параметр в кристаллический отчет.
  2. Как отобразить результат только один раз (мой код отображает один и тот же результат дважды)

вот как я связываю кристаллический отчет, используя параметры из файла .cs в С#

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

но когда я выполняю код, он отображает все данные, доступные в таблице, с двойным временем, как показано ниже Это результат моего кода

может ли кто-нибудь помочь мне решить эту проблему

заранее спасибо

получение ошибки как

" **

Указанный аргумент находится вне диапазона допустимых значений

**"


person Appdev    schedule 12.06.2014    source источник


Ответы (1)


В проводнике полей в отчете щелкните правой кнопкой мыши, чтобы добавить новый параметр, затем в коде вам необходимо установить значение параметра, например:

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

Вы можете предотвратить дублирование, добавив слово DISTINCT в свой запрос, например:

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

или Вы можете предотвратить дублирование с помощью свойства (Suppress If Duplicated) в поле

person Abdulrahman_88    schedule 12.06.2014
comment
Привет, спасибо за ваш ответ... и мы также можем использовать приведенный выше код для передачи параметра в подотчеты????. - person Appdev; 13.06.2014