Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

FRX в RTF

31 views
Skip to first unread message

Igor Dubodelov

unread,
Jun 21, 2004, 5:35:25 AM6/21/04
to
Может кто подскажет дельное предложение по конвертированию(экспорту)
отчёта frx в rtf-файл ?
--
Всем привет !

С уважением, Игорь.
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Igor Korolyov

unread,
Jun 21, 2004, 6:24:54 AM6/21/04
to
Hi, Igor!
You wrote to All on Mon, 21 Jun 2004 09:35:25 +0000 (UTC):

ID> Может кто подскажет дельное предложение по конвертированию(экспорту)
ID> отчёта frx в rtf-файл ?

AFAIK ответ содержиться в вопросе - ищи frx2any или другие утилиты серии
frx2... также есть GenRep-ы и прочие утилиты, но они работают не на frx а на
rtf шаблонах... Т.е. в доглосрочной перспективе они предпочтительнее.

--
WBR, Igor

Michael Drozdov

unread,
Jun 21, 2004, 6:42:11 AM6/21/04
to
Привет, Игорь.

Mon Jun 21 2004 13:35, Igor Dubodelov wrote to All:

ID> Может кто подскажет дельное предложение по конвертированию(экспорту)
ID> отчёта frx в rtf-файл ?

"Дельное" это как? стащить готовые решения? :-)

- если так, то см. в сторону frx2doc в инете... обычно это subj (как и
html,doc) поддерживает также...
- а если "как это сотворить", то также принципиальных проблем нет... а есть
только технические детали + наличие свободного времени... :-)

... на пути "сотворить" имеется всего два шага :-)

- разобраться со структурой frx-файла (см. Microsoft Visual FoxPro
<X>\Tools\Filespec\60frx<N>.frx) ...как примеры:
~ "Reports on the Fly" Markus Egger shows how to create reports on the fly.
The sample shows a reservation schedule for hotels. на
http://msdn.microsoft.com/vfoxpro/downloads/samples/default.aspx
~ Frx.zip (7,50KB) - К вопросу о Report On The Fly :-) вот что-то получилось.
Конечно много спорных вопросов, но потому и в исходнике: смотрите, пробуйте,
ломайте, перестраивайте... Автор: Вадим Пирожков на
http://vfpdev.narod.ru/util_r.html
~ ...

- имея конкретику, взятую из frx-файла (используя предыдущий шаг) + конкретные
данные, -> получить конкретный rtf (разобравшись с собственно с форматом rtf
конечно... :-)
~ MakeRtf.zip (6,32KB) - классы, позволяющие получить файл в RTF-формате и
пример использования. Автор: Евгений Рябов, ...как пример на
http://vfpdev.narod.ru/util_r.html
~ ...

Best regards.
Михаил Дроздов, ИВС Софт, Пермь, Россия
[Michael Drozdov, ICS Soft, Perm, Russia]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
My Page: http://vfpdev.narod.ru/
ICS Page: http://www.ics.perm.ru/ [on Russian]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Наилучшие пожелания.

Igor Dubodelov

unread,
Jun 21, 2004, 7:30:36 AM6/21/04
to
А кто-нибудь их использовал (frx2any или другие утилиты серии)?
И ещё вопрос - в 9-ке может уже есть встроенный конвертор?
--
Всем привет !

С уважением, Игорь.

Michael Drozdov

unread,
Jun 21, 2004, 8:30:09 AM6/21/04
to
Привет, Игорь & Igor & All!

Mon Jun 21 2004 14:42, Michael Drozdov wrote to Igor Dubodelov:

Пара тезисов относительно subj :-)

- Лично у меня есть сомнения в целесообразности у sub второй части (ну я имею
ввиду ... "в RTF") в век современного развития (inter/intra)net-решений, а
также XML/XSLT... хм, даже в том виде, как есть пряио сейчас...
- я конечно осознаю, что есть требования конкретного заказчика (дык
воспитывать его надобно... :-)
- ... и сомнения мои (относительно RTF в частности :-) мной же и изложены в
"Краткое введение в XML" на:
http://vfpdev.narod.ru/docs/xmlint_r.html#language :-)

Natalie Martynova

unread,
Jun 22, 2004, 3:51:18 AM6/22/04
to
Mon Jun 21 2004 16:30, Michael Drozdov wrote to Michael Drozdov:

MD> Пара тезисов относительно subj :-)

MD> - Лично у меня есть сомнения в целесообразности у sub второй части (ну я
MD> имею ввиду ... "в RTF") в век современного развития
MD> (inter/intra)net-решений, а также XML/XSLT... хм, даже в том виде, как
MD> есть пряио сейчас...
MD> - я конечно осознаю, что есть требования конкретного заказчика (дык
MD> воспитывать его надобно... :-)
MD> - ... и сомнения мои (относительно RTF в частности :-) мной же и изложены
MD> в "Краткое введение в XML" на:
MD> http://vfpdev.narod.ru/docs/xmlint_r.html#language :-)

На ловца и зверь. :-) Как раз начала обдумывать сходную задачу. Наибольший
раздрай в голове вызывает выбор вида сформированных документов для хранения в
архиве (просмотр и печать ограниченным количеством людей). Ты предлагаешь
данные формировать в FOX'е, а просматривать их в желаемом виде в веб-броузере
- правильно я понимаю политику партии? Целесообразно ли использовать XML для
хранения "мертвых" документов - без связи с источником данных, просто текст?

Natalie

Michael Drozdov

unread,
Jun 22, 2004, 5:14:01 AM6/22/04
to
Hi, Natalie.

Tue Jun 22 2004 11:51, Natalie Martynova wrote to Michael Drozdov:

NM> Ты предлагаешь данные формировать в FOX'е, а просматривать их в желаемом
NM> виде в веб-броузере - правильно я понимаю политику партии?

Ну где-то так... :-)

NM> Целесообразно ли использовать XML для хранения "мертвых" документов
NM> - без связи с источником данных...

- если Web-server (пусть даже в локальной сети) предполагается, то нет жёсткой
необходимости организовывать свалку из XML-ей, причём в структуре, близкой к
отчётной документации... ибо данные в XML-формате всегда можно получить
практически из любой (уважающей себя :-) БД, в т.ч. и из фоксовых dbf...
гибкость в том, что на выборке для просмотра, могут быть не "голые" dbf, а
"солянки" из SELECT-ов (возможно параметризованных), которые динамически могут
быть преобразованы в XML-формат... (конечно же это может быть оформлено и в
виде WEB-сервисов...)
- на очень худой конец (при ограниченных требованиях на разнообразия
представлений одних и тех же данных), можно конечно данные из dbf-ов
трансвормировать в XML-файлы с форматом, близким к требуемым выходным
документам...
- ес-но, для получения "визуального(/ных) представления(/ний)" этих данных (из
пункта выше) потребуется нарисовать некоторое множество XML -> XSLT -> XHTML
преобразования (и возможно не только туда), вынеся всю "настройку пестротой" в
CSS-файлы...

NM> ... просто текст?

Это ты также всегда можешь получить, подрисовов соотвествующие преобразования
(из последнего пункта выше)

Короче, принципиальных трудностей нигде нет... а есть только технические
детали... и первая обычно в том, чтобы "въехать" в XSLT (в том смысле, что
звуков вокруг до-фига, а вот толку-то от этого ни-фига... и если решишь
всё-таки "въезжать", то советую начать именно с книги
http://xmlhack.ru/books/xslt/ :-)

Michael Drozdov

unread,
Jun 22, 2004, 9:51:57 AM6/22/04
to
Hi, Natalie.

Tue Jun 22 2004 13:14, Michael Drozdov wrote to Natalie Martynova:

NM>> Ты предлагаешь данные формировать в FOX'е, а просматривать их в желаемом
NM>> виде в веб-броузере - правильно я понимаю политику партии?

MD> Hу где-то так... :-)

Как-то я вроде здесь приводил код-пример... ну вот приведу ещё раз, чтобы не
быть голословным :-)

<!-- //////////////////// Save as test.htm /////////////////////////// -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Use VFP OLE Automation in MS IE Explorer</TITLE>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
<SCRIPT LANGUAGE="JScript">
function TestVfpApp()
{
var cProgId = "VisualFoxpro.Application";
var cAlias = "products";
var cFile = "c:\\program files\\microsoft visual foxpro
8\\samples\\data\\" + cAlias + ".dbf"
var cXslFile = "test.xsl";
// var gsMsxmlVersion = "3.0";
// Also you can use 4.0 versions:
var gsMsxmlVersion = "4.0";
var gsPROGIDmsxml = "Msxml2.DOMDocument."+gsMsxmlVersion;
var gsPROGIDmsxsl = "Msxml2.FreeThreadedDOMDocument."+gsMsxmlVersion;
var gsPROGIDmstemp = "Msxml2.XSLTemplate."+gsMsxmlVersion;
try
{
// Create VisualFoxpro.Application
var oApp = new ActiveXObject(cProgId);
// Open file
oApp.DoCmd("SET EXCLUSIVE OFF");
oApp.DoCmd("USE ('" + cFile + "') SHARED");
// Is file opend
if (oApp.Eval("USED('" + cAlias + "')"))
{
// Convert file to XML (into VFP LOCAL variable
lcResult as String)
oApp.Eval("CURSORTOXML('" + cAlias + "','lcResult')");
// Close file
oApp.DoCmd("USE IN ('" + cAlias + "')");
// Get result (from VFP LOCAL variable lcResult)
var cXmlOut = oApp.Eval("lcResult");
/////////////////////////////////////////////////
// Try do XML + XSL => HTML transformation
var oMsXml = new ActiveXObject(gsPROGIDmsxml);
var oMsXsl = new ActiveXObject(gsPROGIDmsxsl);
var oMsPrc = new ActiveXObject(gsPROGIDmstemp);
oMsXml.loadXML(cXmlOut); // Load XML-string
oMsXsl.load(cXslFile); // Load XSL-file
oMsPrc.stylesheet = oMsXsl.documentElement;
var objXSLTProc = oMsPrc.createProcessor();
if (objXSLTProc != null)
{
objXSLTProc.input = oMsXml;
if (objXSLTProc.transform())
{
// Show result
document.write(objXSLTProc.output);
}
}
}
}
catch (e)
{
document.write("Error:<hr>Number:" + e.number +
"<br>Description: " + e.description + "<hr>");
}
}
</SCRIPT>

</HEAD>
<BODY>

<SCRIPT>
TestVfpApp();
</SCRIPT>
</BODY>

</HTML>
<!-- //////////////////// The end of test.htm /////////////////////////// -->


<!-- //////////////////// Save as test.xsl /////////////////////////// -->
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:XHTML="http://www.w3.org/TR/xhtml1">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<body>
<table cellSpacing="1" cellPadding="1" border="1"
align="center">
<TR
bgColor="silver"><TD><B>Prod_name</B></TD><TD><B>Eng_name</B></TD></TR>
<xsl:apply-templates
select="//VFPData/products" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="products">
<TR>
<TD><xsl:value-of select="prod_name" /></TD>
<TD><xsl:value-of select="eng_name" /></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
<!-- //////////////////// The end of test.xsl /////////////////////////// -->

- выше приведены два файла: test.htm и test.xsl, которые следует положить в
один и тотже каталог на диске.
- далее, возможно придётся подшамать в части пробелов в полученных файлах (я
имею ввиду "несанкционированое сокращение" длин ряда строк [хотелось бы
надеяться, что из текста полнятно: где именно])
- выправить константы:
var cFile = ...
var gsMsxmlVersion = ...
на Вашу версию (предполагается: VFP 7/8 & MSXML 3/4 & MS IE 5.5 и выше)
- наконец открыть test.htm из-под MS IE

Как надеюсь это у вас отработает... и это просто пример того, что "это может
работать"... и не следует его воспринимать всерьёз, конечно :-)

Svetlana Freudman

unread,
Jun 23, 2004, 11:57:22 PM6/23/04
to
Igor Dubodelov пишет:
ID> А кто-нибудь их использовал (frx2any или другие утилиты серии)?

Я использую Frx2Word от John Koziol. На выходе: rtf, doc, html.
Работает, но медленно на больших отчетах. В приложения встраиваю в
большей степени для того, чтобы было, нежели для того, чтобы
пользовались.
http://www.foxclub.ru/sol/frx2doc.zip

--
Svetlana Freudman

alexandr_f

unread,
Jun 24, 2004, 4:57:42 AM6/24/04
to
Hello, Svetlana!
You wrote to Igor Dubodelov on Thu, 24 Jun 2004 03:57:22 +0000 (UTC):

SF> Igor Dubodelov пишет:


ID>> А кто-нибудь их использовал (frx2any или другие утилиты серии)?

SF> Я использую Frx2Word от John Koziol. На выходе: rtf, doc, html.
SF> Работает, но медленно на больших отчетах. В приложения встраиваю в
SF> большей степени для того, чтобы было, нежели для того, чтобы
SF> пользовались.
SF> http://www.foxclub.ru/sol/frx2doc.zip

Я не настороить subj (Office 2003 ) . Пишет "Не достаточно памяти". Я видел только один приличный компонент на http://www.mindseyeinc.com/ReportEngine, но он платный, создает DOC быстро

With best regards, alexandr_f. E-mail: alexa...@shaht.kharkov.ua

alexandr_f

unread,
Jun 24, 2004, 4:57:43 AM6/24/04
to
Hello, Svetlana!
You wrote to Igor Dubodelov on Thu, 24 Jun 2004 03:57:22 +0000 (UTC):

SF> Igor Dubodelov пишет:


ID>> А кто-нибудь их использовал (frx2any или другие утилиты серии)?

SF> Я использую Frx2Word от John Koziol. На выходе: rtf, doc, html.

0 new messages