Дополнения пользователей RtfEPORT - генератор отчетов из RTF-шаблона (совместим с GenRep, исключая его расширенные возможност
|
[+][?] |
Куденцов Александр
08.01.04 15:51:39 |
|
Тормозит скорее всего в связи с использованием encode_symbols()
Можете избавиться от нее :)
replace fcharset0 with fcharset204
|
|
Куденцов Александр
08.01.04 16:41:21 |
|
Насчет совместимости
http://alkud.boom.ru/zip/extendsab.zip
|
|
Алексей Кирпичев
09.01.04 13:17:58 |
|
Charset заменен, иначе бы и encode_symbols не помог бы. :о)
А encode_symbols остался атавизмом, я и сам хотел вызов закомментировать, но так и оставил (не
знаю как поведет себя текст при вызове RtfEPORT с charset по умолчанию, отличным от 204 ). :о)
Пожалуй закомментирую таки вызов. :о) Напишу об этом в описании.
И про совместимость добавлю - "без расширенных возможностей" :о)
|
|
Харламенков Алексей
10.01.04 05:23:58 |
|
Давно искал такое решение!
Огромное спасибо!
Но у меня при коде charset 204 в отчёте получается полная ахинея - кодировка вставленных полей не
читаемая. Как это побороть?
|
|
Алексей Кирпичев
13.01.04 11:42:41 |
|
Ответ в почте.
Если ничего не поможет, то пришлите мне шаблон с данными и версию Word'а.
|
|
Харламенков Алексей
14.01.04 19:18:07 |
|
Для посетителей - просматривающих и интересующихся.
При работе с другими файлами-шаблонами данная ситуация не повторилась. Т.е. всё выводится по-русски.
|
|
Андрей
16.01.04 12:14:30 |
|
Могу для повышения скорости предоставить DLL для вписывания через нее данных в RTF. А то она все
равно просто так лежит... DLL сделана на Delphi и у нее много всего хорошего... Я собственно для
такого случая ее и делал.
|
|
Харламенков Алексей
17.01.04 21:02:23 |
|
Так за чем же дело стало? такие вещи всегда нужны!
|
|
Алексей Кирпичев
19.01.04 16:09:52 |
|
Можно попробовать и DLL.
Только главный затык происходит, по-моему, в основном на этапе формирования структуры отчета, а не
вывода в RTF.
|
|
Андрей
26.01.04 17:06:50 |
|
А куда слать то ???
|
|
Алексей Кирпичев
27.01.04 17:48:39 |
|
kanank@mail.ru
|
|
Андрей
01.02.04 13:33:16 |
|
Пожелания:
А нелязя ли в этом генераторе прицепит свой progressBar так как это сделано в XFRX? Там
добавляется объект к уже существующим и у этого объекта есть обязательный метод -
setpercent(percent_done) а как там чего отрисовывается никого не волнует. Очень удобно.
|
|
Алексей Кирпичев
02.02.04 20:50:14 |
|
Для начала его надо в класс оформить. :о)
А до этого он еще не дорос. После расширения функциональности подумаю над этим.
В принципе, при желании, можно и самому прикрутить все что захочется. :о)
|
|
Андрей
04.02.04 14:12:09 |
|
А кстати есть возможность работы с переменными, функциями VFP в отчете? Извиняюсь что сам не
попробовал... А вообще так держать - больше безплатных компонентов :-)
|
|
Алексей Кирпичев
05.02.04 21:14:27 |
|
см. п.5 наверху :о)
5. может использовать любые выражения Visual FoxPro в полях вывода (в т.ч. данные не только из
основной для отчета таблицы/алиаса, но и из других открытых в приложении алиасов);
стандартные функции - любые, пользовательские функции и переменные - в пределах видимости. В
общем, любое корректное выражение для функции eval() в месте вызова.
Например, поставляемый шаблон SAB\formats.sab содержит в себе вызовы функции sysmetric().
|
|
Шургин Ю.П.
03.03.04 16:44:12 |
|
Мне кажется, что детализация Detal для алиасов не работает. Во всяком случае, отчет создается, но
не открывается в Word.
|
|
Алексей Кирпичев
04.03.04 18:46:48 |
|
У меня в реальном приложении все работает.
Пришлите мне на мыло шаблон и данные из алиаса. Проверю в чем дело.
|
|
Александр Боксгорн
27.07.04 08:07:11 |
|
Андрей. У меня с алиасами тоже геморой.. Файл RTF не открывается. Хорошо я RTF знаю мало-мальски в
выходном файле (в конце) пары скобок фигурных закрывающих нехватает. Да и в проге есть ошибки.
Прога сама не досконально RTF обрабатывает. Пример: при поиске \par пропускаются имеющиеся вставки
"...........[rrrrrr].....\par }"
А так прога хорошая - только чуть сыровата.
Удачи!!
|
|
Алексей
27.08.04 18:34:45 |
|
Хоть бы один прислал примеры проблемных для алиасов файлов... Вот с чем-чем, а с алиасами у себя
проблем не было. Использую RTFeport в работающем приложении.
Хоть он и действительно сыроват, на доводку сейчас времени нет, пока все что надо мне работает, а
примеров ошибок никто и не присылает.
|
|
Шургин Ю.П.
17.09.04 16:08:12 |
|
Спасибо за доработку. Теперь все работает с алиасами. Суть такова была, что с простым контрольным
примером все работало, а в большой программе нет. Сейчас все нормально.
|
|
Шургин Ю.П.
21.09.04 10:38:23 |
|
Игнорируется фильтр, установленный для алиаса (курсора). В отчет попадают все записи курсора.
|
|
Алексей Кирпичев
22.10.04 19:05:54 |
|
Век живи, век учись.
Оказалось, что к курсору, созданному командой SELECT * FROM alias_name INTO CURSOR cursor_name,
нельзя применять такую же команду для создания другого курсора... А именно это и происходило в
RtfEPORT'e, что делало невозможным работу с такими курсорами...
Сам обнаружил это случайно, до сегодняшнего дня все чудно работало с курсорами, полученными из
SQL-баз с помощью SQLEXEC().
Пришлось исправить. :о) Исправления уже в архиве.
|
|
Рашид
04.11.04 04:47:31 |
|
Все замечательно, мне очень пригодилось.Но есть одна добавка, которую я хотел-бы добавить.Это
заменить строку
m.out = rebld_form(pname,m.ptype,m.psize,m.psize1, m.form_pole) на
if alltrim(pname)="_rtfdata.pschet" && спецвставка от сих
do case
case _rtfdata.pschet=.t. and empty(_rtfdata.datposv)=.t.
m.out ="Нет даты показа"
case _rtfdata.pschet=.t. and empty(_rtfdata.datposv)=.f.
m.out =(ltrim(str(int((_rtfdata.datprov-_rtfdata.datposv )/30)))+" мес. прошло")
otherwise
m.out = "По тарифу"
endcase
m.type="C" && если нужен другой тип см. выше
m.psize=18 && Длина поля равна 18
m.psize1=0
m.form_pole="%S" && если нужен другой тип см. выше
else && до сих можно убрать или вставить свое условие
m.out = rebld_form(pname,m.ptype,m.psize,m.psize1, m.form_pole)
endif
где
*** Пример спецвставки для вывода на печать ***
*** сложного условия. Здесь pschet поле типа L ***
*** datprov и datposv поля типа D ***
*** Вывод на печать в символьном виде ***
*** m.psize=?? Длину поля установить самому ***
и изменить func open_data
на
lpara fn
ret = 0
= usedd('_rtfdata')
sele (name_table)
use
if file(fn)
use (fn) in 0 alias _rtfdata
if used('_rtfdata')
ret = 1
endif
endif
return ret
|
|
Дмитрий Петров
19.11.04 09:34:20 |
|
Очень хорошее решение, нам очень пригодится.
Хотелось бы только внести некоторые доработки:
- возможность явно указать имя файла в который формируется отчет
- возможность вставки рисунков в документ
И вопрос, можно ли использовать функции foxpro или свои в имени поля или выражения. Попробовал
использовать lookup в имени поля, результат нулевой.
Если не против могу принять посильное участие в развитии решения
|
|
Сергей
13.01.05 07:22:17 |
|
Ещё глюк. Если поля группы и подгруппы имеют похожие названия (например no, no2) вывод
зацикливается. Тоже названия переменных. Если переменная включает в себя название поля (например
как выше m.lenno) она не выводится!
|
|
Сергей
11.01.05 07:29:48 |
|
Обнаружил такой глюк. Если в конце группы написать к примеру "Всего по [group]" рисуется название
следующей группы, а не текущей.
|
|
Алексей Кирпичев
24.01.05 10:20:04 |
|
Опять небольшое исправление. От 24.01.2005
Исправлены неточности отображения значений из поля, по которому производиться группировка после
окончания блока [Detal] (выводилось значение из след. группы) и возможная проблема при группировке
полей, имеющих начальные пробелы.
|
|
Алексей Кирпичев
26.01.05 13:47:50 |
|
Опять обновление. И опять исправление по группировке, точнее по вложенной группировке, исправление
от 24.01 оказалось действующим только на первый уровень группировки.
|
|
Алексей Кирпичев
20.01.05 15:57:40 |
|
Так как иногда здесь бываю достаточно редко, по всем срочным вопросам лучше писать на мой e-mail.
Для проблемных шаблонов лучше сразу прислать шаблон и кусок данных для его работы. Тогда я быстрее
и точнее смогу ответить по существу.
Дмитрию Петрову
- возможность явно указать имя файла в который формируется отчет - сделать легко, в следующее
обновление включу (не сегодняшнее);
- возможность вставки рисунков в документ - с этим пока сложнее, надо разбираться со структурой
хранения рисунков в RTF. К сожалению, пока не могу заниматься этим. Если хотите принять участие,
то можете копать в этом направлении. E-mail я оставил.
Функции использовать можно. Любое выражение корректное для функции EVALUATE(). Но от использования
функций, меняющих указатель записи, я бы предостерег.
Сергею
Шаблон с примером данными пришлите мне. Будем разбираться.
|
|
Алексей Кирпичев
20.01.05 16:17:59 |
|
Небольшое исправление от 20.01.2005
Исправлена работа с функцией IIF(IF) - при несовпадении типов выражений внутри функции и типа
поля, блок с такой функцией мог выдавать пустое значение, например для непустого числового поля
pole не работал блок
[IIF(!empty(pole),'поле не пустое',pole)]
для таких случаев теперь для получения результата желательно привести все составляющие блока к
единому типу (строковому)
[%S:IIF(!empty(pole),'поле не пустое',str(pole))] или как минимум:
[%S:IIF(!empty(pole),'поле не пустое', pole)]
|
|
Алексей Кирпичев
20.01.05 15:56:49 |
|
Так как иногда здесь бываю достаточно редко, по всем срочным вопросам лучше писать на мой e-mail.
Для проблемных шаблонов лучше сразу прислать шаблон и кусок данных для его работы. Тогда я быстрее
и точнее смогу ответить по существу.
Дмитрию Петрову
- возможность явно указать имя файла в который формируется отчет - сделать легко, в следующее
обновление включу (не сегодняшнее);
- возможность вставки рисунков в документ - с этим пока сложнее, надо разбираться со структурой
хранения рисунков в RTF. К сожалению, пока не могу заниматься этим. Если хотите принять участие,
то можете копать в этом направлении. E-mail я оставил.
Функции использовать можно. Любое выражение корректное для функции EVALUATE(). Но от использования
функций, меняющих указатель записи, я бы предостерег.
Сергею
Шаблон с примером данными пришлите мне. Будем разбираться.
|
|