Страница 1 из 2

Добавление ссылки на сборку динамически

Добавлено: 19 дек 2012, 16:09
Наталья
Здравствуйте.

1.У меня есть модуль, в котором создается отчет, регистрируется для него источник данных (RegData), сохраняется и отправляется на просмотр. Необходимо здесь же при создании отчета добавить несколько ссылок на сборки, но как я поняла сылки можно добавить только на те сборки, которые в GAC? А можно ли добавить ссылку на сборку, лежащую в проекте моего модуля? Я пыталась подключить, но при запуске отчета выводится ошибка, что невозможно загрузить сборку.

Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 20 дек 2012, 12:36
HighAley
Здравствуйте.

Мы не совсем поняли вашу проблему. Не могли бы вы описать её более подробно и желательно с примерами.

Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 24 дек 2012, 17:05
Наталья
Здравствуйте.

Отправляю тестовый проект.
В комментариях отмечены вопросы.
Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 27 дек 2012, 11:20
Aleksey
Здравствуйте Наталья,

В данном случае, вы можете попробовать использовать следующий код:
report.RegBusinessObject("RegData", _dataContext);
report.Dictionary.SynchronizeBusinessObjects(2);
но так как _dataContext содержит не только информацию о таблицах, будет подгружено много лишней информации. Поэтому более правильно, в данном случае, регистрировать таблицы по отдельности.

По поводу ceDataSource.Model.Dll, данная сборка находся в папке с проектом, а должна находиться в папке Bin с выполняемым (.exe) файлом и остальными сборками.

Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 27 дек 2012, 12:47
mbondarev
мы добавляем ссылки на сборки следующим кодом:

Код: Выделить всё

  
List<String> refs = new List<string>(report.ReferencedAssemblies);

if (!refs.Contains("Axsel.Kernel.dll"))
{
    refs.Add("Axsel.Kernel.dll");
}
report.ReferencedAssemblies = refs.ToArray();

при печати отчет ищет в текущем каталоге нужные файлы и подгружает их самостоятельно

Re: Добавление ссылки на сборку динамически

Добавлено: 27 дек 2012, 17:48
HighAley
Здравствуйте.

Спасибо за пример.

Re: Добавление ссылки на сборку динамически

Добавлено: 29 дек 2012, 10:07
Наталья
mbondarev, спасибо за пример, получилось.
У меня в проекте при нажатии на кнопку "Создание отчета" выполняется код:

Код: Выделить всё

_report.Dictionary.Databases.Clear();
_dataContext = (ceDataContext)DataSource.GetDataContext();
_report.RegBusinessObject("Cenergo","Customers", _dataContext.Customers);
_report.RegBusinessObject("Cenergo", "GetMethods", _dataContext.GetMethods);
_report.RegBusinessObject("Cenergo", "Meters", _dataContext.Meters);
_report.RegBusinessObject("Cenergo", "PhysTypes", _dataContext.PhysTypes);
_report.RegBusinessObject("Cenergo", "ProfilePeriods", _dataContext.ProfilePeriods);
_report.RegBusinessObject("Cenergo", "ProfileTypes", _dataContext.ProfileTypes);
_report.RegBusinessObject("Cenergo", "Tariffs", _dataContext.Tariffs);
_report.RegBusinessObject("Cenergo", "ValueProperties", _dataContext.ValueProperties);
_report.Save(parentPath + "//" + e.FileName);
При нажатии на кнопку "Просмотреть отчет" код:

Код: Выделить всё

rep.Load(tp.LastNode.ToString());
rep.Design();
Можно ли после создания отчета открыть его и создать из таблиц источника данных "Cenergo" запрос?

Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 29 дек 2012, 10:44
Aleksey
Здравсвуйте,

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

Спасибо.

Re: Добавление ссылки на сборку динамически

Добавлено: 09 янв 2013, 08:30
Наталья
Здравствуйте.

Посмотрите, пожалуйста, вложение (в нем скрин, описывающий вопрос).

Re: Добавление ссылки на сборку динамически

Добавлено: 09 янв 2013, 11:02
Aleksey
Здравствуйте,

Попробуйте использовать следующий код:

Код: Выделить всё

((StiSqlSource)report.Dictionary.DataSources["DataSourceName"]).SqlCommand = yourSqlCommand;
Спасибо.