Вход в базу данных требуется при создании Crytal Report. SQL Server 08, VS 08 - PullRequest
0 голосов
/ 12 июля 2011

Когда я загружаю мой Crystal Report в CrystalReportViewer, мне предлагается войти в базу данных с отключенным (фиксированным) именем сервера.

Теперь, когда я загружаю тот же отчет на мою машину для разработки, он работает нормально. но когда я развертываю приложение C # на другом компьютере, мне всегда предлагается войти в БД. (где имя сервера - то, которое используется на моей машине разработки и его статическое (я не могу изменить его)

Я пытаюсь найти решение уже несколько недель, но безуспешно.

Я использую DataTable в качестве источника отчета:

MyReport.SetDataSource (MyDataTable)

Я испробовал большинство онлайн-решений, которые искал.

Я попытался передать данные для входа в БД во время выполнения

Я установил собственный клиент SQL

Я пытался передать DataSet вместо DataTable

Все без удачи

я также понял, что когда я загружаю отчет с 1 таблицей базы данных, у меня не запрашивается вход в базу данных (т.е. моя таблица данных будет заполнена одной таблицей из базы данных: "Select * From SomeTable", когда я использую внутреннее соединение запрос у меня запрашивается логин

Любые мысли о том, как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 04 января 2015

Прежде всего, установите для свойства 'ReportSource' объекта CrystalReportViewer значение Nothing:

CrystalReportViewer1.ReportSource = Nothing

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

0 голосов
/ 14 июля 2011

ну, я наконец-то решил это, я использовал

cr.SetDatabaseLogon(Username, Password, @Server, DBNAME);

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

T

ableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
                TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
                ConnectionInfo CInfo = new ConnectionInfo();
                //GET THE SERVER INFORMATION
                DataTable DT = b.GetServerInfo();
                CInfo.ServerName = DT.Rows[0][1].ToString();
                CInfo.DatabaseName = DT.Rows[0][2].ToString();
                CInfo.UserID = DT.Rows[0][3].ToString();
                CInfo.Password = DT.Rows[0][4].ToString();
                Tables CrTables = cr.Database.Tables;
                foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
                {
                    crtableLogoninfo = CrTable.LogOnInfo;
                    crtableLogoninfo.ConnectionInfo = CInfo;
                    CrTable.ApplyLogOnInfo(crtableLogoninfo);
                }


                frmReportViewer ff = new frmReportViewer();
                ff.crViewer.LogOnInfo = crtableLogoninfos;
                ff.crViewer.ReportSource = cr;
...