powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache' и FW Report Designer
11 сообщений из 11, страница 1 из 1
Cache' и FW Report Designer
    #36695430
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, ибо это проще. Если есть альтернативное решения оформления отчетов, пожалуйста, тоже предлагайте.
...
Рейтинг: 0 / 0
Cache' и FW Report Designer
    #36696052
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Cache' и FW Report Designer
    #36697004
Mumish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое Вам спасибо, на первый взгляд это именно то, что мне надо
...
Рейтинг: 0 / 0
Cache' и FW Report Designer
    #36706854
Mumish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Cache' и FW Report Designer
    #36708390
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я даже не могу сказать где ошибка - вы не поняли идею, и неправильно все.

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

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

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

Обычно в 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
Cache' и FW Report Designer
    #36708889
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А фастрепорт уже знакомое, работаем с таким.


Мне даже кажется, что ваш вопрос в первую очередь не в каше, а в веб-серверах отчетов.
У нас настроена веб-служба фастрепорта, я сам этим не занимался, но каким-то образом
можно получить отчет по ссылке типа
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
Cache' и FW Report Designer
    #36709077
Mumish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

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

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


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