Общение с внешними классами

Обсуждение Stimulsoft Reports.Net
Ответить
Moonrain
Сообщения: 8
Зарегистрирован: 29 ноя 2006, 07:18

Общение с внешними классами

Сообщение Moonrain » 29 ноя 2006, 07:22

Добрый день!

У меня есть отчет и есть приложение на C#, которое его запускает. Данные, которые будут фигурировать в отчете не нужно получать из БД или XML. Каким образом можно передать отчету параметры? Была попытка подключить namespace своего приложения (оно двойное: nameA.nameB), ничего не вышло. Говорит, что нет такого namespace.

Спасибо!
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 08:23

Общение с внешними классами

Сообщение Vital » 29 ноя 2006, 08:47

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

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

private MyClass Data
{
get
{
return myvariable as MyClass;
}
}

В этом случае также нужно добавлять ссылку на сборку.

Спасибо.
Moonrain
Сообщения: 8
Зарегистрирован: 29 ноя 2006, 07:18

Общение с внешними классами

Сообщение Moonrain » 29 ноя 2006, 09:33

Была попытка сделать так, как показано в How to Add My Function. Не вышло :(
Что я делаю не так?

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

// приложение
namespace Abiturient.Person_View
{  
    public partial class frmPersonView : Form
    {
        public frmPersonView()
        {           
            //....       
        }


        public string SendParameter() // метод, который будет вызываться в отчете для получения параметров
        {
              return "Ivanov"; // например, посылаем строку
        }
                
    }
}


// отчет
// предварительно добавляем reference, как показано в How to Add My Function
//Abiturient.Person_View.exe 

using Abiturient.Person_View;

namespace Reports
{    
    public class Report : Stimulsoft.Report.StiReport
    {        
        public Report()
        {
            this.InitializeComponent();
            surname = frmPerson_View.GetParameter();
        }		
        private string surname;
       //.......
    }
}
При добавлении ссылки выдает ошибку, что ее не найдено. Может, правильнее добавить Abiturient.frmPerson_View.exe ? Но так тоже не работает :(
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 08:23

Общение с внешними классами

Сообщение Vital » 29 ноя 2006, 10:18

Abiturient.Person_View.exe должен находится там же где и сборки репорта (или этот файл должен находится компилятором по правилам поиска сборок в .Net).
Пришлите пожалуйста файл Вашего отчета с добавленной ссылкой на support [at] stimulsoft [dot] com мы посмотрим может мелочи какой не хватает.

Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 08:23

Общение с внешними классами

Сообщение Vital » 29 ноя 2006, 21:23

Замените Abiturient.Person_View.exe на Person_View.exe (т.к. сборка у
с Вашим классом реально называется Person_View.exe) в
ReferencedAssemblies.

Кроме этого метод public string SendParameter() должен быть
статическим в данном контексте.

Спасибо.
Moonrain
Сообщения: 8
Зарегистрирован: 29 ноя 2006, 07:18

Общение с внешними классами

Сообщение Moonrain » 30 ноя 2006, 02:45

Спасибо!
Все заработало :)
Ответить