#c# #wpf #crystal-reports
#c# #wpf #crystal-отчеты
Вопрос:
У меня есть настольный проект на C #, в котором используется инструмент Crystal Report, моя цель — вызвать процедуру SQL и получить результат этой процедуры (поля таблиц), показанный в отчете Crystal .rpt
.
На моем компьютере эта задача работала хорошо, но проблема в том, что я работаю с командой, и когда я отправил проект на GitHub, а мой коллега вытащил мою работу и объединил ее со своей версией.
У него возникла проблема с подключением (не удалось войти в базу данных) и три строки исключения в консоли :
Возникло исключение: ‘System.Runtime.Службы взаимодействия.COMException’ в CrystalDecisions.CrystalReports.Движок.генерируется исключение dll: ‘CrystalDecisions.CrystalReports.Движок.LogOnException’ в CrystalDecisions.ReportAppServer.Преобразование набора данных.генерируется исключение dll: ‘CrystalDecisions.CrystalReports.Движок.LogOnException’ в CrystalDecisions.CrystalReports.Движок.генерируется исключение dll: ‘CrystalDecisions.CrystalReports.Движок.LogOnException’ в CrystalDecisions.ReportSource.dll
Я хотел бы знать, как динамически устанавливать параметры подключения с помощью Crystal Report, чтобы обеспечить успешное соединение на двух компьютерах?
try
{
CrystalReport1 cry1 = new CrystalReport1();
cry1.Load(@"CrystalReport1.rpt");
GlobalConfig.sql.ConnectionString = GlobalConfig.connectionString;
GlobalConfig gb = new GlobalConfig();
using (IDbConnection connection = GlobalConfig.sql)
{
List<string> ls = new List<string>();
ls = gb.getConnectionlogin();
cry1.SetDatabaseLogon(ls[0], ls[1]);
cry1.SetParameterValue("@institute_id", instituteid);
cry1.SetParameterValue("@date_from", from1);
cry1.SetParameterValue("@date_to", to1);
cry1.SetParameterValue("institutename", institutename);
crysview.ViewerCore.ReportSource = cry1;
}
}
catch(Exception es)
{
Console.WriteLine("Error load file " es);
}
}
Комментарии:
1. какова ваша строка подключения, может быть, это другой пароль id на стороне вашей команды для базы данных, они проверили?
2. Да, есть разные, я это знаю, и я пытаюсь динамически задать идентификатор и пароль, используя эту строку
cry1.SetDatabaseLogon(ls[0], ls[1]);
, в которой указано, чтоls[0]
это пользователь иls[1]
пароль3. Как примечание, назначать бессмысленно
new List<string>()
ls
. Просто напишитеList<string> ls = gb.getConnectionlogin();
4. Спасибо, в этом вы правы, но это не связано с моей проблемой, которая у меня сейчас, есть ли у вас какие-либо предложения или какое-либо решение моей ошибки? .
5. Вместо того, чтобы позволять crystal report считывать свои данные, вам лучше всего прочитать их в коде и представить список poco для просмотра. Пока ваши типы и имена свойств соответствуют тому, для чего был разработан отчет, это будет работать нормально. Затем вы можете использовать любой подход к базе данных, который использует остальная часть вашего приложения. И если вы столкнетесь с ошибками, вы увидите регулярные проблемы с ado.