Ошибка входа в систему Crystal Report C # WPF

#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.