Member 13505603 Ответов: 3

Как показать crystal reports в C# ASP.NET-что?


Я создал crystal report и веб - страницу , Я хочу открыть crystal report на моей веб-странице зависит от значения текстового поля, и мне нужно, когда я нажимаю кнопку, я отправляю значения в crystal reports, чтобы показать мой crystal report . Я попробовал следующий код :

Что я уже пробовал:

protected void BtnCrystal_Click(object sender, EventArgs e)
        {
            if (Session["patientno"] != null && Convert.ToInt32(Session["patientno"]) > 0)
            {
              if (Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 )
                {
                  ReportDocument reportDocument1 = new ReportDocument();
                    reportDocument1.Load(Server.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));

                    ParameterFields paramFields1 = new ParameterFields();

                    ParameterField paramField1 = new ParameterField();
                    ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();

                    paramField1 = new ParameterField(); 
                    paramDiscreteValue1 = new ParameterDiscreteValue();  
                    paramField1.Name = "@ORDER_ID";
                    paramDiscreteValue1.Value = TXTORDERID.Text.ToString();
                    paramField1.CurrentValues.Add(paramDiscreteValue1);
                    paramFields1.Add(paramField1);

                    paramField1 = new ParameterField(); 
                    paramDiscreteValue1 = new ParameterDiscreteValue();  
                    paramField1.Name = "@deptid";
                    paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
                    paramField1.CurrentValues.Add(paramDiscreteValue1);
                    paramFields1.Add(paramField1);



                    CrystalReportViewer1.ParameterFieldInfo = paramFields1;
                    CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                    CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;

                    CrystalReportViewer1.ReportSource = reportDocument1;
                    reportDocument1.SetDatabaseLogon("DB_admin", "1111");
                    }
                }


            }


когда вы нажимаете кнопку, он не показывает отчет crystal, но когда я запускаю отчет из visual studio, он работает, чего не хватает ?

3 Ответов

Рейтинг:
5

Aung Than Lwin

Попробуйте удалить следующие строки, я не думаю, что они вам нужны

var connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = "dba";
connectionInfo.DatabaseName = "DBA";
connectionInfo.Password = "DBA";
connectionInfo.UserID = "DBA";
connectionInfo.Type = ConnectionInfoType.SQL;
connectionInfo.IntegratedSecurity = false;
for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
{
CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
}


Member 13505603

Спасибо Аунг ,
решение работает сейчас ошибка show blank screen after publish была SAP crystal reports runtime engine , я установил runtime engine для crystal reports, а затем скопировал папку aspnet_client в корневую папку mr site

Aung Than Lwin

Отлично!

Рейтинг:
13

Aung Than Lwin

Вам нужно добавить параметры в команду SqlCommand, а не в отчет crystal.

SqlCommand cmd = new SqlCommand("GET_ORDER_RESULT_PRINT_CASH", cn);
cmd.Parameters.AddWithValue("@ORDER_ID", TXTORDERID.Text);
cmd.Parameters.AddWithValue("@deptid", TXTDEPTID.Text);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);


Member 13505603

Спасибо вам сэр за помощь
Я изменил его, но все еще имею ту же ошибку
Процедура или функция 'GET_ORDER_RESULT_PRINT_CASH' ожидает параметр '@ORDER_ID', который не был указан.
в линии
ПДД.Заполнить(ДТ);

могу ли я сделать связь между datatable и параметрами в sda.наполнить ?

Member 13505603

Я попробовал это сейчас никаких ошибок но когда я нажимаю на кнопку это не показывает отчет :


SqlCommand cmd = new SqlCommand("GET_ORDER_RESULT_PRINT_CASH", cn);
cmd.параметры.AddWithValue("@ORDER_ID",Convert.ToInt32(TXTORDERID.Text));
cmd.параметры.AddWithValue ("@deptid",Convert.ToInt32(TXTDEPTID.Text));
SqlDataAdapter sda = новый SqlDataAdapter(cmd);
АСД.Команды selectcommand.CommandType = CommandType.Хранимая процедура;
DataTable dt = новый DataTable();
ПДД.Заполнить(ДТ);


Документе reportDocument1 = новая документе();
reportDocument1.Load(сервер.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));
отчетдокумент1.SetDataSource(dt);
CrystalReportViewer1.ReportSource = reportDocument1;
var connectionInfo = новый ConnectionInfo();
connectionInfo.Имясервера = "дБА";
connectionInfo.Имябазыданных = "дБА";
connectionInfo.Пароль = "дБА";
connectionInfo.Имяпользователя = "администратор";
connectionInfo.Тип = ConnectionInfoType.В SQL;
connectionInfo.Свойство integratedsecurity = ложь;
for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Граф; i++)
{
CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
}

Рейтинг:
0

Aung Than Lwin

Вам необходимо установить источник данных для документа отчета.
Образец вы можете посмотреть здесь ...
https://www.aspsnippets.com/Articles/ASPNet-Crystal-Reports-13-Visual-Studio-2010-CrystalReportViewer-Search-Button-Issue---No-valid-report-source-is-available.aspx[^]


Member 13505603

Я изменил код, но теперь получаю новую ошибку :
охраняемых недействительными BtnCrystal_Click(объект отправителя, EventArgs в электронной)
{
if (Session["patientno"] != null && Convert.ToInt32(сеанс["patientno"]) > 0)
{

SqlCommand cmd = new SqlCommand("GET_ORDER_RESULT_PRINT_CASH", cn);
SqlDataAdapter sda = новый SqlDataAdapter(cmd);
DataTable dt = новый DataTable();
ПДД.Заполнить(ДТ);

Документе reportDocument1 = новая документе();
reportDocument1.Load(сервер.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));
отчетдокумент1.SetDatabaseLogon("DBA", "1111");
отчетдокумент1.SetParameterValue ("@ORDER_ID", TXTORDERID.Text);
отчетдокумент1.SetParameterValue ("@deptid", TXTDEPTID.Text);

отчетдокумент1.SetDataSource(dt);
CrystalReportViewer1.ReportSource = reportDocument1;
CrystalReportViewer1.DataBind();

var connectionInfo = новый ConnectionInfo();
connectionInfo.ServerName = "SQL";
connectionInfo.Имябазыданных = "ДБ";
connectionInfo.Password = "1111";
connectionInfo.Имяпользователя = "администратор";
connectionInfo.Тип = ConnectionInfoType.В SQL;
connectionInfo.Свойство integratedsecurity = ложь;
for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Граф; i++)
{
CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
}
}

при нажатии на кнопку его выдача следующей ошибки теперь дополнительная информация: процедура или функция 'GET_ORDER_RESULT_PRINT_CASH' ожидает параметр '@ORDER_ID', который не был указан , я уже добавил параметры, где ошибка ?