Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache' и FW Report Designer / 11 сообщений из 11, страница 1 из 1
18.06.2010, 17:53
    #36695430
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Я не нашел темы, где бы это спросить.

Реализован механизм взаимодействия Cache' и Frame Work Report Designer через ODBC. То есть в Cache' 5.0.19 создана область с БД и запущен сервер. Непосредственно пользователем запускается исполняемый файл (или ярлык) дизайнера отчетов FW Report Designer, дизайнер отчетов подключается к созданному ODBC, в котором указана область с БД в Cache', после чего возможно формирование отчета, используя получаемые данные из таблиц.

Вопрос: возможно ли реализовать механизм взаимодействия, в котором FW Report Designer вызывался бы из CSP страницы Cache', подгружая туда данные из БД? Если нет, то почему, если да, то как. То есть разница желаемого от реализованного в том, чтобы запускать дизайнер отчетов не ярлыком в операционке, а именно из CSP страницы Cache'.
Зачем это надо: это надо для того, чтобы не возиться с CSP при формировании отчетов БД, а формировать отчеты с использованием FW Report Designer, ибо это проще. Если есть альтернативное решения оформления отчетов, пожалуйста, тоже предлагайте.
...
Рейтинг: 0 / 0
19.06.2010, 10:10
    #36696052
Turk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
MumishЯ не нашел темы, где бы это спросить.

Реализован механизм взаимодействия Cache' и Frame Work Report Designer через ODBC. То есть в Cache' 5.0.19 создана область с БД и запущен сервер. Непосредственно пользователем запускается исполняемый файл (или ярлык) дизайнера отчетов FW Report Designer, дизайнер отчетов подключается к созданному ODBC, в котором указана область с БД в Cache', после чего возможно формирование отчета, используя получаемые данные из таблиц.

Вопрос: возможно ли реализовать механизм взаимодействия, в котором FW Report Designer вызывался бы из CSP страницы Cache', подгружая туда данные из БД? Если нет, то почему, если да, то как. То есть разница желаемого от реализованного в том, чтобы запускать дизайнер отчетов не ярлыком в операционке, а именно из CSP страницы Cache'.
Зачем это надо: это надо для того, чтобы не возиться с CSP при формировании отчетов БД, а формировать отчеты с использованием FW Report Designer, ибо это проще. Если есть альтернативное решения оформления отчетов, пожалуйста, тоже предлагайте.
Мы работаем с Crystal Reports, но это не меняет сути.

1. Если вам нужна возможность открытия файла отчета в дизайнере через ссылку на csp, то делается это примерно следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
ClassMethod OnPreHTTP() As %Boolean
{
	s FileExport = <полный_путь_к_файлу_отчета>
	#;
	s Stream = ##class(%FileBinaryStream).%New()
	s Stream.Filename = FileExport
	#;
	s %response.ContentType = <MIME_тип_файла>
	d %response.SetHeader("Content-Disposition","attachement; filename="_$zcvt($zcvt(<желаемое_имя_файла_на_стороне_клиента>,"O","UTF8"),"O","URL"))
	d %response.SetHeader("Content-Description",<описание>)
	d %response.SetHeader("Content-Length",Stream.Size)
	d %response.SetHeader("CACHE-CONTROL","   ")
	d Stream.%Close()
	k Stream
	#;
	s %session.Data("FileExport") = FileExport
	#;
	q  1 
}
ClassMethod OnPage() As %Status
{
	s FileExport = $g(%session.Data("FileExport"))
	q:(FileExport="") $$$OK
	#;
	s Stream = ##class(%FileBinaryStream).%New()
	s Stream.Filename = FileExport
	s IncFile = ##class(%GlobalBinaryStream).%New()
	d IncFile.CopyFrom(Stream)
	d Stream.%Close()
	k Stream
	#;
	s sc = IncFile.OutputToDevice()
	if $$$ISERR(sc)
	{
		<отработка_ошибки>
		q $$$OK
	}
	#;
	d IncFile.%Close()
	k IncFile
	#;
	k %session.Data("FileExport")
	#;
	q $$$OK
}
Естественно, на клиентской машине должен быть установлен дизайнер отчета и настроен ODBC.

2. Если вам нужна возможность получить результат выполнения отчета с заданными параметрами, то нужно писать свою DLL, которая будет вызываться из Cache через $zf-функции и с помощью API-функций вашей отчетной системы выполнять отчет и экспортировать результат в какой-нибудь временный файл. Дальше используется вышеприведенный код для отправки этого временного файла на клиентскую сторону. (Фактически в OnPreHTTP вставляется код по генерации временного файла, а в OnPage перед выходом из функции можно удалить временный файл.)
В этом случае, на клиентской машине нужен лишь инструмент для просмотра экспортируемого типа файла.
...
Рейтинг: 0 / 0
20.06.2010, 16:06
    #36697004
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Большое Вам спасибо, на первый взгляд это именно то, что мне надо
...
Рейтинг: 0 / 0
24.06.2010, 19:46
    #36706854
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Turk,

У меня не получилось и в силу отсутствия опыта в этой области, даже не знаю в каком именно месте наделал ошибок. Использовать Ваш код я попытался следующим образом:

1. Создал класс

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
/// грызу гранит науки
Class Nauka.Granit Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

/// место погрыза
Property Oblast As %String;

/// количество укусов
Property Ukusov As %Integer;

//запрос для выборки всех полей таблицы
Query AllTable() As %SQLQuery
{
SELECT Oblast,Ukusov FROM Granit
}


ClassMethod OnPreHTTP() As %Boolean
{
         ;указал полный путь к файлу отчета CSP, с которого запускается  метод, да и из него   
         ;информацию надо именно ту, которая на нем выводится в дизайнер отчетов перенести
	s FileExport = "c:\CacheSys\CSP\user\Test1.csp" ;<полный_путь_к_файлу_отчета>
	...
         ; для CSP я нашел только такой MIME тип, потому что подумал, что это не просто html
	s %response.ContentType = ocsp-request ;<MIME_тип_файла>
	...
       ; указал имя файла без расишрения
        filename="_$zcvt($zcvt("It_works","O","UTF8"),"O","URL"))
        ; указал описание
	d %response.SetHeader("Content-Description","no comment")
	...
	q 1
}

ClassMethod OnPage() As %Status
{
	...
	if $$$ISERR(sc)
	{
		;в случаи ошибки выводить слово
                w "error" ;<отработка_ошибки>
		q $$$OK
	}
	...
	q $$$OK
}


}

2. Создал CSP файл

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<HTML>
<HEAD>

<!-- Put your page Title here -->
<TITLE>	Cache Server Page </TITLE>

</HEAD>

<BODY>
	Tablica soderzhit
	<!--запрос, для вывода одной таблицы БД на страницу -->
	<csp:query name="query" classname="Nauka.Granit" queryname="AllTable">  
		<csp:while Condition="query.Next()">
 			<li> #(query.Get("Oblast"))#
 			 #(query.Get("Ukusov"))#
 		</csp:while> 

 	<p><input type="button" value="OnPreHTTP"  onClick="#Nauka.Granit(..OnPreHTTP())#">
 	<p><input type="button" value="OnPage"  onClick="#Nauka.Granit(..OnPage())#">
</BODY>
</HTML>

3. Запустил, по очереди нажал на кнопки OnPreHTTP и OnPAge, но ничего не происходит, хотя компилирует без ошибок. Ссылка на скриншот http://clip2net.com/page/m0/6513792

Уделите пожалуйста время для решения данной проблемы. Если можно на примере Crystal report, раз Вы с ним работаете, я скачал Crystal Reports Developer 2008 или мне нужна другая версия этой программы?
...
Рейтинг: 0 / 0
25.06.2010, 15:15
    #36708390
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Я даже не могу сказать где ошибка - вы не поняли идею, и неправильно все.

Суть в чем - у вас должна быть CSP-страница, или класс, неважно. Класс даже удобнее, меньше возможности ошибиться.

При обращению к классу он делает подмену содержимого, то есть он не имеет своего выводимого содержимого совсем, но при этом он берет где-то содержимое и выводит его как свое.
У Turk-а это файл на диске, у вас скорее всего нужно делать открытие http-потока (кстати, с кристалом этот трюк, кажется не проходит, так как клиенту отправляется пустышка, а контент набирается уже на клиенте).

А метод OnPreHTTP нужен для того, чтобы переопределить содержимое потока, не как html, а как нужный вам, и вызывается он автоматически.
...
Рейтинг: 0 / 0
25.06.2010, 17:19
    #36708831
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Да, я темен в этой области и не понял. Повторю суть, чего мне бы хотелось:

Обычно в Cache' лежит какая-нибудь БД. Через настроенный ODBC Frame Work Desiner Reports коннектится к ней. То есть сначала происходит аутентификация в нем, потом запуск инстурмента Fast Reports (он свои отчеты хранит в формате fr3) и в нем уже формируется отчет используя sql запросы, чтобы выводить данные бд на страницу.

Есть страница CSP, которая отображает данные таблицы например такая:

Выглядит вот так:
http://clip2net.com/page/m0/6528161

Код ее такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<HTML>
<HEAD>

<!-- Put your page Title here -->
<TITLE>	Cache Server Page </TITLE>

</HEAD>

<BODY>
	Tablica soderzhit
	<!--запрос, для вывода одной таблицы БД на страницу -->
	<csp:query name="query" classname="Nauka.Granit" queryname="AllTable">  
		<csp:while Condition="query.Next()">
 			<li> #(query.Get("Oblast"))#
 			 #(query.Get("Ukusov"))#
 		</csp:while> 

</BODY>
</HTML>

Надо, чтобы по нажатию кнопки (ссылки не важно) на этой CSP странице, открывался FW Design Reports, который на этом же компьютере установлен с теми же данными, которые эта страница отображает. Тоесть автоматически проходилась аутентификация, запускался инструмент Fast Reports, в котором бы отображались эти данные, что и CSP странице.

Подскажите:
Как это можно сделать? (хотя бы направление).
Если такое точно можно сделать в другом дизайнере отчетов, то, пожалуйста, пример - мне главное избавиться от рутины формирования полного дизайна отчета в CSP.
Если такое сделать нельзя, то почему?
Спасибо.
...
Рейтинг: 0 / 0
25.06.2010, 17:49
    #36708889
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
А фастрепорт уже знакомое, работаем с таким.


Мне даже кажется, что ваш вопрос в первую очередь не в каше, а в веб-серверах отчетов.
У нас настроена веб-служба фастрепорта, я сам этим не занимался, но каким-то образом
можно получить отчет по ссылке типа
http://127.0.0.1/reports/testreport.fr3?... тут какие-то параметры
Отчету здесь нужна только одбс.

Далее(то о чем говорилось здесь), сам отчетник закрыт снаружи, так как он уязвим и можно по сути вводя произвольные параметры отчета и можно получать произвольную информацию. Поэтому весь трафик отчетника идет через каше, условно приложение формируем ссылку типа
http://адрес сервера каше/getreport.csp?...шифрованые параметры отчета
Далее каше обращается к серверу отчетов за отчетом, сервер отчетов обращается к каше за данными, и потом все это отдается клиенту веб-сервером каше.

Еще с Seagate Crystal Reports 8.0 долго работали, но там трафик через каше не прогонишь, так как по сути отчет формируется на клиенте, а от сервера отдается какая-то пустышка.
Зато в кристале помню как его настраивать и какие ссылки :-)
Настраивается область в IIS, там кристал автоматом при установке прописывает обработку расширений .rpt. ODBC область данных прописывается в отчете. Для веба параметры выглядят так
http://127.0.0.1/myreport.rpt?init=actx&param0=1111&param1=2222&param3=3333

Как-то так
...
Рейтинг: 0 / 0
25.06.2010, 20:04
    #36709077
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Блок А.Н.,

Пожадуйста, по подробнее, в каком месте и что делать. Я Кристал впервые вижу (скачал недавно Crystal Reports Developer 2008 он подойдет?) и не знаю где что настраивать, а пока сам найду, уйдет и время и нервы, да и ошибок куча :).
...
Рейтинг: 0 / 0
25.06.2010, 22:26
    #36709192
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Честно говоря, кристал позже 8го я и сам не понял, (правда особо цели не было, так как че-то там с лицензией, то ли только на 8ю была, то ли ее что, в общем, это было личной инициативой и на домашнем компе).
Та версия, которая у нас (8.0), очень легко ставится, там сильно то и настраивать нечего.
Но там есть ньюанс, что не во всех версиях есть веб-сервис (а в каких-не скажу, кажется в поздних версиях чуть ли не в отдельный продукт вынесли)

А фастрепорт, там с ним то ли путаница названий, то ли версий. У нас версия 2.1 какая-то вебовская, что соответствует 4-какой-то обычной, в общем, какая-то хрень, я даже на память не скажу, как точно называется продукт, который мы используем.
Но смысл такой, что есть файлы на диске, в файле прописывается ODBC область
Есть веб-версис этого отчетника, он зацепляется с IIS, и можно обратиться к отчету по веб-пути (причем в фастрепорте есть файлы примеров).
Ну а там зацепить веб-отчеты к веб-приложению дело техники.
Да, и еще, в фастрепорте нужно программу просмотра ставить на каждый комп, иначе файл будет просто скачиваться и не открываться, а кристал ставить свой просмотрщик автоматом.
...
Рейтинг: 0 / 0
25.06.2010, 22:27
    #36709195
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Здесь на форуме есть раздел по отчетным системам, у них можно спросить, какие их веб-отчетников есть и как их настроить.
...
Рейтинг: 0 / 0
29.06.2010, 14:02
    #36713211
Mumish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache' и FW Report Designer
Моя задача решена, всем спасибо за консультацию, тему можно сносить.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache' и FW Report Designer / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]