Crystal сообщает, почему он запрашивает вход в базу данных даже после того, как я предоставил детали?

Я создаю отчет, но проблема в том, что, несмотря на то, что я предоставил учетные данные, когда открывается форма, содержащая CrystalReport, он все равно запрашивает их у меня, и хуже всего то, что я не ввожу туда ничего, и просто нажмите Готово, и он загружает отчет. Итак, если нет необходимости в учетных данных (или что-то еще), почему это спрашивает меня?

Вот код

    private void MainReport_Load(object sender, EventArgs e)
    {
        var constr = string.Empty;
        constr = Application.StartupPath;
        if (Generate.bForProjects)
            constr = Path.Combine(constr, @"Reports\Projects.rpt");
        else
            constr = Path.Combine(constr, @"Reports\Other.rpt");

        var myConInfo = new CrystalDecisions.Shared.TableLogOnInfo();
        reportDocument1.Load(constr);
        myConInfo.ConnectionInfo.DatabaseName = "ProjectData.mdb";
        myConInfo.ConnectionInfo.ServerName = Application.StartupPath + @"\Data\ProjectData.mdb";
        myConInfo.ConnectionInfo.Password = "";
        myConInfo.ConnectionInfo.UserID = "";
        reportDocument1.Database.Tables[0].ApplyLogOnInfo(myConInfo);

        reportDocument1.Refresh();

        crystalReportViewer1.ReportSource = reportDocument1;
        crystalReportViewer1.Width = this.Width - 50;
        crystalReportViewer1.Height = this.Height - 100;
    }

Когда форма загружается, появляется этот экран

enter image description here

And, when this comes up, I don't enter anything! That's right! I just click finish and it loads the report perfectly! So, if it doesn't needs anything, why the hel* is it asking me for a login?

Ответы на вопрос(3)

Решение Вопроса

когда мы подключили отчет Crystal к другой базе данных, к которой он был разработан / создан. Мы закончили тем, что создали следующую функцию, чтобы настроить это правильно. Он рекурсивно устанавливает соединение для всех таблиц отчетов и вложенных отчетов.

Также я помню, что у нас были проблемы, если отчет был разработан с интегрированной аутентификацией Windows и работал с простым именем пользователя и паролем. Поэтому мы всегда следили за тем, чтобы отчеты создавались с простым подключением имени пользователя и пароля к базе данных.

private static void SetConnection(ReportDocument report, string databaseName, string serverName, string userName, string password)
{
    foreach (Table table in report.Database.Tables)
    {
        if (table.Name != "Command")
        {
            SetTableConnectionInfo(table, databaseName, serverName, userName, password);
        }
    }

    foreach (ReportObject obj in report.ReportDefinition.ReportObjects)
    {
        if (obj.Kind != ReportObjectKind.SubreportObject)
        {
            return;
        }

        var subReport = (SubreportObject)obj;
        var subReportDocument = report.OpenSubreport(subReport.SubreportName);
        SetConnection(subReportDocument, databaseName, serverName, userName,  password);
    }
}

private static void SetTableConnectionInfo(Table table, string databaseName, string serverName, string userName, string password)
{
    // Get the ConnectionInfo Object.
    var logOnInfo = table.LogOnInfo;
    var connectionInfo = logOnInfo.ConnectionInfo;

    // Set the Connection parameters.
    connectionInfo.DatabaseName = databaseName;
    connectionInfo.ServerName = serverName;
    connectionInfo.Password = password;
    connectionInfo.UserID = userName;
    table.ApplyLogOnInfo(logOnInfo);

    if (!table.TestConnectivity())
    {
        throw new ApplicationException(Resource.UnableToConnectCrystalReportToDatabase);
    }

    table.Location = Database + "." + "dbo" + "." + table.Location;
}
 20 авг. 2013 г., 05:06
Я пытался использовать эти методы, которые вы создали, и они не работают. Он продолжает спрашивать меня о старой базе данных, она никогда не меняется. Есть ли у вас предложения?

Просто создайте объект отчета и добавьте ссылку ниже rptobj - это объект crystalreport, а setdatabaselogin - метод, который принимает в качестве параметра идентификатор пользователя и пароль.

rptobj.setdatabaselogon(userid,password)

когда ваш DataSet или DataTable пуст. Поэтому убедитесь, что у него есть данные.

 01 нояб. 2018 г., 12:33
От & quot; Эксперт по базам данных & quot; вариант, я удалил все таблицы из набора данных, которые не используются в отчете. Это работает для меня.

Ваш ответ на вопрос