Создание источников данных

Обсуждение Stimulsoft Reports.WPF
AlexSnz
Сообщения: 8
Зарегистрирован: 28 апр 2010, 04:33

Создание источников данных

Сообщение AlexSnz »

Добрый день!
Мы установили trial версию Stimulsoft Reports.Wpf 2010.1.
Не могли бы Вы подсказать, каким образом создаются источники данных в дизайнере отчетов Stimulsoft Reports.Wpf? В качестве источников данных мы бы хотели использовать значения переменных в проекте на С# (с использованием WPF)?
Спасибо!
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Создание источников данных

Сообщение Andrew »

Здравствуйте,

Создать Новый источник данных (New Data Source) можно в ручном или автоматическом режиме. В ручном режиме, можно создать источник данных с помощью запроса, используя свойство Получить все колонки (Retrievs Columns), для получения колонок из базы данных; либо можно в ручную создать колонки. В автоматическом режиме, с помощью мастера создания нового источника данных, мастер сам получает колонки из базы данных определенного типа.
Рассмотрим создания нового источника данных , на примере Sql. Для того, чтобы создать новый источник данных, необходимо сначала создать Новое соединение (New Connection). Новое соединение (New Connection) позволит задать параметр подключения к источнику данных определенного типа. Т.е. если, к примеру, необходимо подключить Sql источник данных, то и при создании Новое соединение (New Connection), необходимо указать тип Sql соединения. Затем необходимо заполнить три поля, чтобы создать Новое соединение (New Connection). В поле Наименование (Name), задается название нового соединения, которое отображается в генераторе отчетов. В поле Псевдоним (Alias), задается название нового соединения, которое видит пользователь. В поле Строка Соединения (Connection String), задается строка запроса, в которой указываются необходимые параметры подключения к базе данных.

На рисунке 1 показано окно создания нового Sql соединения. Новое соединение (New Connection) создано. Следующий шаг - это создание нового источника данных. Рассмотрим случай создания нового источника данных вручную. При создании нового источника данных, следует выбирать тот тип базы данных, который указывали при создании нового соединения, в данном случаи это Sql. После того, как указали тип нового источника данных, необходимо сформировать запрос, который позволит с помощью свойства Получить все колонки (Retrieve Columns), извлечь необходимые колонки из базы данных. Либо в ручную создать необходимые колонки.

На рисунке 2 показано окно создания нового источника данных вручную. В поле Наименование в (Name in Source) написано имя параметра подключения к источнику данных определенного типа, т.е. имя соединения, которое было создано ранее. В поле Наименование (Name) написано имя источника данных, которое отображается в генераторе отчетов. В поле Псевдоним (Alias) написано имя источника данных, которое видит пользователь. В поле Текст запроса (Query Text) указывается строка запроса к базе данных. В поле Колонки (Columns) отображаются колонки, которые были извлечены из базы данных путем запроса, либо созданные вручную. Свойство Получить все колонки (Retrieve Columns), позволяет извлечь колонки из базы данных, согласно строки запроса. Теперь Новый источник данных (New Data Source) создан. Рассмотрим способо создания нового источника данных в атоматическом режиме, т.е. с помощью мастера создания новго источника данных. Новое соединение (New Connection) уже создано. Следующий этап - это создание источника данных. При создании нового источника данных в автоматическом режиме, следует выбрать созданное соединение, в нашем примере это Sql соединение. Мастер сам извлечет все колонки из базы данных, останется лишь выбрать нужное в окне Выбор данных (Select Data).

Как видно на рисунке 3, на примере была выбрана одна таблица MSreplication_options. Теперь Новый источник данных (New Data Source) создан.

Спасибо.



Вложения
Рисунок3.png
Рисунок3.png (24.25 КБ) 6655 просмотров
Рисунок2.png
Рисунок2.png (23.89 КБ) 6649 просмотров
Рисунок1.png
Рисунок1.png (16.63 КБ) 6655 просмотров
AlexSnz
Сообщения: 8
Зарегистрирован: 28 апр 2010, 04:33

Создание источников данных

Сообщение AlexSnz »

Спасибо большое за ответ. Да, мы поняли как создать источник данных при подключении к БД, но нас интересует каким образом можно использовать в отчете значения программных объектов. В нашем проекте есть чтение данных из БД, они используются для расчета других величин, вот их и хотелось посмотреть в виде отчета.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Создание источников данных

Сообщение Jan »

Здравствуйте,
Спасибо большое за ответ. Да, мы поняли как создать источник данных при подключении к БД, но нас интересует каким образом можно использовать в отчете значения программных объектов. В нашем проекте есть чтение данных из БД, они используются для расчета других величин, вот их и хотелось посмотреть в виде отчета.
Не совсем понятна суть вопроса. Вам нужно прочитать значения из таблицы? Например, в выражении можно обратиться к ним в таком виде:

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

{MyDataSource.FieldName} 
В скрипте отчета обращение идет в том же виде:

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

string s = MyDataSource.FieldName.ToString();
Если нужно, что-то посчитать к примеру в текстовом компоненте, то можно использовать такое выражение:

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

{MyDataSource1.Field + MyDataSource2.Field}
Спасибо.
gelenamd
Сообщения: 2
Зарегистрирован: 29 апр 2010, 09:10
Откуда: Uzbekistan

Создание источников данных

Сообщение gelenamd »

У меня примерно такой же вопрос. Объясню, что хочу:

Есть класс:

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

    public classt weekDay
    {
        public DayOfWeek day;
        public string Name;
        public string SomeOtherData;
    }
Далее в программе я использую его в виде массива, коллекции или листа:

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

    private weekDay[] days = new weekDay();
    private List days = new List();
или вообще так:

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

ArrayList days = new ArrayList();
Далее я программным способом заполняю данные коллекции, т.е. непосредственно в коде.
Теперь сам вопрос - каким образом мне создать DataSource привязанный к коллекции "days"?
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Создание источников данных

Сообщение Jan »

Здравствуйте,

Можно использовать такой код:

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

StiReport report = new StiReport();
report.Load("test.mrt");
report.RegBusinessObject("MyList", list);
report.Design();
Посмотрите пожалуйста также следующие видео файлы:

http://www.stimulsoft.com/livedemos/Rep ... eList.html
http://www.stimulsoft.com/livedemos/Rep ... etail.html

Спасибо.
gelenamd
Сообщения: 2
Зарегистрирован: 29 апр 2010, 09:10
Откуда: Uzbekistan

Создание источников данных

Сообщение gelenamd »

Спасибо за ответ.

Есть ещё один вопрос.

Имеется базовый класс и два наследника:

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

    public abstract class BasePerson
    {
        public string Name;
        public string SomeDescription;
    }

    public class LegalPerson : BasePerson
    {
        public string SomeLegalPersonData;
    }

    public class IndividualPerson : BasePerson
    {
        public string SomeIndividualPersonData;
    }
Далее происходит создание перечислимого типа:

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

    List persons = new List();
И объектов, которые будут населять этот лист:

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

            IndividualPerson individualPerson = new IndividualPerson();
            LegalPerson legalPerson = new LegalPerson();
а теперь непосредственно сам вопрос: есть ли возможность, при подключении в качестве источника данных, "достать" поля, уникальные для классов потомков, используя только вышеуказанный лист и без применения таких конструкций, вроде нижеуказанной?

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

            foreach (BasePerson person in persons)
            {
                if (person is LegalPerson)
                {
                    LegalPerson temp = person as LegalPerson;
                    string s = temp.SomeLegalPersonData;
                }
            }
То есть превышая возможности рефлексии.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Создание источников данных

Сообщение Jan »

Здравствуйте,

Честно говоря, не совсем понял суть вопроса. Если я прав, то Вы можете обратиться напрямую к реальному объекту Бизнес Объекта при помощи свойств BusinessObjectValue (текущий объект), и Current (текущий элемент объекта. К примеру:

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

{((MyTypeOfBusinessObject)MyBusinessObject.BusinessObjectValue).MyProperty} 
В этом случае, также придется добавить ссылку на сборку, в которой содержится определение Вашего бизнес объекта (свойство ReferencedAssemblies отчета).

Спасибо.
AlexSnz
Сообщения: 8
Зарегистрирован: 28 апр 2010, 04:33

Создание источников данных

Сообщение AlexSnz »

Jan писал(а):Здравствуйте,

Можно использовать такой код:

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

StiReport report = new StiReport();
report.Load("test.mrt");
report.RegBusinessObject("MyList", list);
report.Design();
Посмотрите пожалуйста также следующие видео файлы:

http://www.stimulsoft.com/livedemos/Rep ... eList.html
http://www.stimulsoft.com/livedemos/Rep ... etail.html

Спасибо.
Добрый день! Спасибо большое за помощь. Используя первый ролик и демо-проект BusinessObject для WPF получили тот же результат, что и в ролике - только для WPF. К сожалению, не нашли в документации развернутой информации по работе с BusinessObject.
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Создание источников данных

Сообщение Andrew »

Здравствуйте,

Мы ведем активную разработку документации. Работа с BO несомненно также будет доступна. Кстати, в течение пары дней появятся две статьи по работе с ВО.

Спасибо.
Ответить