Несколько источников данных

Ответить
dominionish
Сообщения: 13
Зарегистрирован: 18 авг 2016, 06:31

Несколько источников данных

Сообщение dominionish » 25 авг 2016, 11:44

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

Мне нужно добавить в отчет несколько источников данных. SQL и JSON. Причем нужно сделать это следующим образом:
Если отчет открывается с сервера, то использовался SQl источник. Если отчет открывается в JS и ему передается JSON в качестве параметра, то использовать JSON данные. Атрибуты и там и там - одинаковые
Я так понимаю нужно как то объединить эти источники и сделать какой то один универсальный, чтобы его атрибуты указывать в таблице отчета.
Как это можно правильно реализовать в дизайнере?
HighAley
Сообщения: 1955
Зарегистрирован: 08 июн 2011, 07:36

Re: Несколько источников данных

Сообщение HighAley » 26 авг 2016, 07:19

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

Как вариант вы можете в отчёте настроить источники данных SQL. А, при открытии отчёта в JS, удалять SQL источники данных, и добавлять JSON источники с таким же именем.

Спасибо.
dominionish
Сообщения: 13
Зарегистрирован: 18 авг 2016, 06:31

Re: Несколько источников данных

Сообщение dominionish » 26 авг 2016, 09:12

Ну это значит что нужно при открытии отчета в JS что то с ним делать. Значит вносить изенения в код программы. Плохой вариант
А нет варианта чтобы добавить сразу 2 источника и Stimulsoft сам подгружал данные у того источника, у которого доступен ресурс. Если Sql - то sql. Если Sql недоступен, то значит из Json.
Aleksey
Сообщения: 1975
Зарегистрирован: 22 апр 2010, 02:57

Re: Несколько источников данных

Сообщение Aleksey » 26 авг 2016, 14:40

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

Не могли вы описать задачу более подробно - как вы запускаете отчет на сервере (так же какой продукт используется?) и как в JS.
Как вариант, вы можете из кода почистить источники данных и добавить необходимый (SQL или JSON), главное чтобы имена самих таблиц и соединения совпадали. В данном варианте, не нужно создавать в отчете 2 типа соединений.

Спасибо.
dominionish
Сообщения: 13
Зарегистрирован: 18 авг 2016, 06:31

Re: Несколько источников данных

Сообщение dominionish » 27 авг 2016, 04:23

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

Не могли вы описать задачу более подробно - как вы запускаете отчет на сервере (так же какой продукт используется?) и как в JS.
Как вариант, вы можете из кода почистить источники данных и добавить необходимый (SQL или JSON), главное чтобы имена самих таблиц и соединения совпадали. В данном варианте, не нужно создавать в отчете 2 типа соединений.

Спасибо.
Здравствуйте!

У нас есть отчеты, которые работают с SQL. Работают они на серверном приложении. Теперь появилась необходимость вывести эти отчеты на сайте. И мы пытаемся понять как малой кровью переделать отчет так, чтобы он смог работать на клиенте. Что я делаю и как - я описал в другой ветке, можно там посмотреть - viewtopic.php?f=26&t=9091.
Насколько я знаю клиентский отчет не может работать с SQL, поэтому решили что нужно передавать JSON данные в том же формате и с теми же столбцами, что были в SQL соединении.
Как я понял из вышесказанного отчету неважен тип соединения, главное чтобы совпадали наименования источника данных и наименования столбцов. Подскажите тогда пожалуйста как можно добавить необходимый источник, предварительно почистив старый в JS?
Aleksey
Сообщения: 1975
Зарегистрирован: 22 апр 2010, 02:57

Re: Несколько источников данных

Сообщение Aleksey » 29 авг 2016, 10:50

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

Вы можете использовать следующий код:

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

// Create a new report instance
var report = new Stimulsoft.Report.StiReport();
// Load report from url
report.loadFile("../reports/SimpleList.mrt");
 
// Create new DataSet object
var dataSet = new Stimulsoft.System.Data.DataSet("Demo");
// Load JSON data file from specified URL to the DataSet object
dataSet.readJsonFile("../reports/Demo.json");
// Remove all connections from the report template
report.dictionary.databases.clear();
// Register DataSet object
report.regData("Demo", "Demo", dataSet);
// Render report with registered data
report.render();
https://www.stimulsoft.com/en/samples/j ... t-template

Thank you.
Ответить