Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB+текстовый редактор / 10 сообщений из 10, страница 1 из 1
25.11.2004, 15:54
    #32800009
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Есть задача:
Существует шаблон договора.
Необходимо в определенные места в тексте (поля) вписать некоторые значения из базы данных.
Задача не нова и много раз обсуждалась, но есть некоторые условия:
- нельзя привязываться к MS Word. У некоторых клиентов стоит OpenOffice
- возможность работы с таблицами - PB RTFControl не подходит

Пробовал TxTextControl - Есть все, но с PB криво работает.

Может кто решал подобную задачу - поделитесь опытом плз. или знает где есть подобные TxTextContol-у прилады, которые нормально работают с PB.
...
Рейтинг: 0 / 0
25.11.2004, 16:38
    #32800127
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
У нас это делается следующим образом. Данные сливаются в текстовый файл, потом с помощью ShellExecuteA вызывается файл MS Word -а, который делает слияние с данным текстовым файлом. Под это дело написан классный объект, все настраиваемое и получилось ужасно красивая и гибкая система - печатаем все, что в голову лезет. Давно хотел испробовать эту фичу на OpenOffice , но под рукой нет, да и нашим юзерам это не надо
Прикол в том, что такая система может и тебе пригодиться, ибо ShellExecuteA вызывает запуск того приложения, которое установлено в системе по умолчанию, для открытия данного типа файлов.
Попробуй, и если не лень сообщи результат. Ужасно интересно...
...
Рейтинг: 0 / 0
25.11.2004, 17:19
    #32800220
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
>> Данные сливаются в текстовый файл, ...
Если я правильно понял, то данные из базы ?

>> ... потом с помощью ShellExecuteA вызывается файл MS Word -а, который >>делает слияние с данным текстовым файлом.
В самом Ворд-файле есть какой-то макрос, который делает слияние или как ?

А обьектик бы как то ... на пробу с примерчиком можно ? С превеликим на то удовольствием протестю и отзывы пришлю :)

З.Ы.
мыло в профиле
З.Ы. З.Ы.
Извените, забыл представиться: PB 8.0.4.10726 + ASA 9.01.1922
...
Рейтинг: 0 / 0
25.11.2004, 17:52
    #32800308
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Извини, прислать объект не могу. Во-первых, корпоративная культура. Во-вторых, он сильно юзает наши объекты, а по сему надо высылать его + еще нечто...
Теперь по теме. Я уже писал, кажись об этом, но могу повториться. Данные, получаемые из базы сливаются в текстовый файл или делаются ручками. Далее, изер создает вордовый документ со слиянием и указывает в нем в качестве источника данных этот текстовый файл. Правит все, что нужно, сохраняет. Далее, если открыть данный файл, то он автоматически будет вызывать текстовый файл, без всяких макросов. Т.е. идея в том, что программно ты подменяешь данные в текстовом файле на свои или создаешь файл заново, а потом открываешь вордовый документ из программы. И все работает, как надо. Благодоря ShellExecuteA ты без переписывания кода можешь делать тоже самое и с OpenOffice файлами. Главное, чтобы в ShellExecuteA передавался файл, открываемый по умолчанию OpenOffice и данный файл при его открытии цеплял файл-источник
...
Рейтинг: 0 / 0
26.11.2004, 08:45
    #32800714
Renesans
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Вот как я решал подобную задачу. Она состояла в получении текстового сообщения на основе шаблона в текстовом формате. Мне именно захотелось, чтобы был текстовый шаблон, в котором вместе с текстом были поля, в которые вставлялись значения. Помогла чудесная modify в datawindow! Как сделано, лучше объяснить на примере.

Допустим в Dw есть два поля Name, название организации, и inn, ИНН организации. Также есть computed field, которое изначально равно ‘’.
Есть также текстовый файл, скажем такого содержания.

Информационное письмо
Наименование организации: <name>
ИНН: <inn>
Сообщаем, что вы согласно договора должны перечислить столько то, за услуги, выполненные нами тогда-то.

Т.е. из текста видно, что нужные мне поля я выделяю знаками больше-меньше. Мне это представилось удобным, так как подкорректировать такой шаблон пользователь может сам. Правда уже в тесте и в выражениях использовать этот символ будет нельзя. Но в конце концов можно использовать { } или что-то еще.

Текст письма со вставленными данными я получаю как значение поля computed field после его обработки через modify.
ls_descry = dw.modify("compute_1.expression = ~"" + ls_mody + "~"")

ls_mody – это и есть текст со значениями. Только его надо сначала получить с помощью специально написанной функции, которая меняет <> на ‘’. Для указанного примера ls_mody должна получить значение:
ls_mody = ‘Информационное письмо ~r~nНаименование организации:‘+name+’~r~n
ИНН: ‘+inn+’~r~nСообщаем, что вы согласно договора должны перечислить столько то, за услуги, ~r~nвыполненные нами тогда-то.’
Я думаю понятен смысл преобразований. Должно получиться ‘текст’+поле+’текст’

Отмечу, что символы ~r~n я вставил только здесь, только для того чтобы показать, что здесь стоит символ перевода формата. На самом деле я в файле ничего указывать не надо. Символ перевода формата, который стоит в тексте работает сам.
В скобках <>, можно привести не только непосредственно поля datawindow, но и целые выражения, месте с функциями datawindow, а мы знаем, что их в нем богатый выбор. Например, если в dw есть пол руководителя фирмы (поле Sex), то можно сделать обращение ‘господин’ или ‘госпожа’. Выражение будет таким: <if(sex=’M’,’Господин’,’Госпожа’)>
Вот и все, получилось очень удобно, а главное гибко. Если надо что-то поменять, даже функционально, не надо обновлять exe-шник, а можно попробовать решить проблему с помощью выражений. Текст можно держать как в файле, так и в табличке.
Конечно, при использовании modify надо анализировать успешность ее выполнения, так как при правке шаблона могут быть допущены ошибки.
if descr<>"" then messagebox("",descr)
Если кого-то интересует привожу функцию которая преобразует конструкцию текст <поле> текст в конструкцию ‘текст’+поле+’текст’ .

Код: 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.
$PBExportHeader$f_str_to_expression.srf
global type f_str_to_expression from function_object
end type

forward prototypes
global function string f_str_to_expression (string cbuffer)
end prototypes

global function string f_str_to_expression (string cbuffer);string CEND,CBEG,cBex,ls_char
integer i
cbex = ""
cbeg = "<"
cEnd = ">"
cBex = ""  
for i =  1  to len(cBuffer)
	ls_char = mid(cBuffer,i, 1 )
	choose case ls_char
	case cBeg
		if i<> 1  then 
			cBex = cBex + "'+" 
		end if
	case cEnd
		if i<>len(cBuffer) then 
			cBex = cBex + "+'" 
		end if
	case else //это простой симов
		if i =  1  or i = len(cBuffer) then //если -это - крайние символы 
			if i =  1  then
				ls_char = "'"+ls_char
			else 
				ls_char = ls_char+"'"
			end if
		end if
		cBex = cBex + ls_char
	end choose
next

return cBex

end function
...
Рейтинг: 0 / 0
26.11.2004, 11:44
    #32801096
pand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Я пользуюсь програмкой RepoRTF
Лежит здесь
http://www.vsi.ru/~apl/others.htm#reportf

Заявлено и так есть на самом деле что она более заточена под Вордовский РТФ
и с Опен Офисом ее подглючивает.
...
Рейтинг: 0 / 0
29.11.2004, 12:34
    #32803721
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
pandЯ пользуюсь програмкой RepoRTF
Лежит здесь
http://www.vsi.ru/~apl/others.htm#reportf

Заявлено и так есть на самом деле что она более заточена под Вордовский РТФ
и с Опен Офисом ее подглючивает.

Интересная софтина.
Скажите, а как вы её к PB примотали? Просто exe с параметром запускаете?
Как пользователи на неё реагируют? Шаблоны сами делают?
...
Рейтинг: 0 / 0
30.11.2004, 07:52
    #32804979
pand
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Запускаю exe
Шаблоны пользователи сами рисуют.
переменные в шаблоне формируются по определенным правилам и соответсвуют полям в datawindow.
Есть объекты которые формируют данные для шаблона.
...
Рейтинг: 0 / 0
30.11.2004, 11:29
    #32805343
Andrew Nagorny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
Работал я в такой прекрасной компании как Поликом Про.
так вот там и писал генерилку отчетов. Старое описание и софт можно
посмотреть на http://www.polikom.ru/main/wg.htm

В данный момент существует свежая версия поддерживающая все версии ворда и другие новшества. Если интересно пиши на мейл.
...
Рейтинг: 0 / 0
02.12.2004, 10:33
    #32808955
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB+текстовый редактор
pandЗапускаю exe
Шаблоны пользователи сами рисуют.
переменные в шаблоне формируются по определенным правилам и соответсвуют полям в datawindow.
Есть объекты которые формируют данные для шаблона.
Может намылите объекты и примерчик? Идея-то хорошая!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB+текстовый редактор / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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