Как избежать crystalreport спрашивать аутентификацию базы данных, когда я меняю страницу - PullRequest
0 голосов
/ 27 июня 2019

Привет, друзья! У меня есть вопрос, у меня есть мой отчет (.rpt). Он показывает хорошо, но когда я нажимаю кнопку, чтобы увидеть следующую страницу. Он запрашивает у меня параметр и аутентификацию базы данных, это мой код:

cryRpt = new ReportDocument();
try
{
    cryRpt.Load((Application.StartupPath + "\\rpExclu.rpt").Replace("\\bin\\Debug", ""));
    cryRpt.SetParameterValue("@IDA", id);
    cryRpt.SetDatabaseLogon("sa", "password$$$");
    crvReportes.ReportSource = cryRpt;
    crvReportes.Refresh();
}
catch (Exception ex)
{
    crvReportes.Refresh();
    XtraMessageBox.Show("" + ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
    cryRpt.Dispose();
    cryRpt.Close();
}

Я покажу вам снимки: enter image description here enter image description here

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Если ваша цель состоит в заполнении данных из SQL, вы можете установить соединение через файл rpt, выбрав на панели задач База данных> Эксперт базы данных> OLE DB (ADO) (если MS SQL)> Собственный SQL Server Clinet . Соединение, установленное таким образом, будет использоваться также при оценке отчета, поэтому вам не нужно каждый раз передавать его.

0 голосов
/ 19 июля 2019

Утренние друзья. Я изменил свой код, чтобы не задавать параметры. Я удаляю cryRpt.Dispose () и cryRpt.Close (). Это работает, однако я решил поместить эти строки кода в событие закрытия winform. Мой код:

public FrmReport()
{
    InitializeComponent();
    rpDoc = new ReportDocument();
    crvReportes.AllowedExportFormats = (int)(ViewerExportFormats.ExcelFormat | ViewerExportFormats.PdfFormat| ViewerExportFormats.WordFormat);
}
private void LoadReport()
{
    try
    {
        rpDoc.Load((Application.StartupPath + "\\rpExclu.rpt").Replace("\\bin\\Debug", ""));
        rpDoc.SetParameterValue("@IDA", this.ida);
        rpDoc.SetDatabaseLogon(this.us, this.pass);
        crvReportes.ReportSource = rpDoc;
        crvReportes.Refresh();
    }
    catch (Exception ex)
    {
        crvReportes.Refresh();
        XtraMessageBox.Show("" + ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
private void FrmReporteBienes_FormClosing(object sender, FormClosingEventArgs e)
{
    if (rpDoc.IsLoaded)
    {
        rpDoc.Dispose();
        rpDoc.Close();
    }
}

Это лучшее решение? Ну, в данный момент это работает. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...