powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подружить PowerBuilder 8 c Cristal Reports
14 сообщений из 14, страница 1 из 1
Подружить PowerBuilder 8 c Cristal Reports
    #35438437
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как использовать Cristal Reports в PowerBuilder наподобие того как он используется в Delphi и C++Builder ? Нужно из PowerBuilder создать отчет Cristal Reports и экспортировать его в формат Excel. Зараннее спасибо.
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35438629
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поиск еще никто не отменял: http://www.sql.ru/forum/actualtopics.aspx?search=crystal+reports&submit=%CD%E0%E9%F2%E8&bid=39]cr y stal reports
------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35439471
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылки.
Обьявил определения глобальных функций:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PUBLIC function long PEOpenEngine() library "crpe32.dll" alias for "PEOpenEngine"
PUBLIC function long PEOpenPrintJob(string as_file) library "crpe32.dll" alias for "PEOpenPrintJob"
PUBLIC function long PEOutputToWindow(long al_job, string as_caption, long al_1, long al_2, long al_3, long al_4, long al_5, long al_6) library "crpe32.dll" alias for "PEOutputToWindow"
PUBLIC function long PEOutputToPrinter(long al_job, long al_copy) library "crpe32.dll" alias for "PEOutputToPrinter"
PUBLIC function long PEStartPrintJob(long al_job, long al_wait) library "crpe32.dll" alias for "PEStartPrintJob"
PUBLIC function long PEClosePrintJob(long al_job) library "crpe32.dll" alias for "PEClosePrintJob"
PUBLIC function long PECloseEngine() library "crpe32.dll" alias for "PECloseEngine()"
Файл crpe32.dll скопировал в папку C:\Windows\System32.
В событии Activate формы пишу код:
Код: 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.
///
///
long ll_engine, ll_job, ll_output, ll_print
string ls_report
///
ll_engine = PEOpenEngine()
if ll_engine =  0  then
	MessageBox ("Error", "Engine")
end if
ls_report = "d:\andrey\testreport.rpt"
ll_job = PEOpenPrintJob(ls_report)
if ll_job =  0  then
	MessageBox ("Error", "Job")
end if
ll_output = PEOutputToWindow(ll_job, "test",  30 ,  30 ,  200 ,  200 ,  0 ,  0 )
if ll_output =  0  then
	MessageBox("Error", "OutputToWindow")
end if
ll_print = PEStartPrintJob(ll_job,  1 )
if ll_print =  0  then
	MessageBox("Error", "StartPrintJob")
end if
PEClosePrintJob(ll_job)
PECloseEngine()
Файл отчета находится в "d:\andrey\testreport.rpt".
Вываливается ошибка, указывающая на вызов функции PEOpenEngine().
Что неправильно ? Подскажите !
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35439520
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я с crystal reports не работал, но это не по той же причине? Тынц .
И еще, зачем это загонять в событие activate?
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35439628
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал по ссылке, нет, причина другая. У меня кристал 12-ой версии.
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35439917
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Узнавая откуда берется ошибка, сделал следующее:
1) обьявил функцию:
Код: plaintext
1.
PUBLIC function boolean MessBox(string capt, string mess) library "user32.dll" alias for "MessageBoxA"
2) в событии активации окна вызываю ее:
Код: plaintext
1.
MessBox('hello','hello');
Естественно это вызывает ошибку, она указана в прикрепленном файле.
Как видите, ошибки разные...
Что же это может быть ?
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440006
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первым делом перенеси все это хотя бы в open
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440123
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к spas2001: событие open возникает еще раньше события activate. Без разницы откуда будет вызываться этот код.
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440208
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это да, но activate возникает каждый раз как окно получает фокус
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440215
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
FUNCTION boolean CharToOemA(ref string lpSrc, ref string lpDst) library "user32.dll"
Function uint GetSystemDirectory (ref string lpBuffer, uint uSize) Library "KERNEL32.DLL" Alias for "GetSystemDirectoryA"
и ведь работает зараза, может все-таки объявлено не так?
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440237
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот это проверил, работает:
Function uint GetSystemDirectory (ref string lpBuffer, uint uSize) Library "KERNEL32.DLL" Alias for "GetSystemDirectoryA"
Значит что то не так с типом результата функции PEOpenEngine... Может там нне целый тип... Хотя я уже пробовал просто вызывать эту функцию не присваивая ее результват переменной - та же самая ошибка...(((
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35440474
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы не гадать, возьмите утилиту dumpbin.exe из Visual Studio и посмотрите экспортируется ли функция PEOpenEngine() из crpe32.dll
Что-то типа
Код: plaintext
dumpbin.exe /exports crpe32.dll
Можно и в обычном текстовом редакторе определить конечно это, если немного значть что к чему.
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35445376
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось экспортировать функции из crpe32.dll.
Обьявления функций:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PUBLIC function long PEOpenEngine(long ll_engine) library "crpe32.dll" alias for "PEOpenEngine"
PUBLIC function long PEOpenPrintJob(string as_file) library "crpe32.dll" alias for "PEOpenPrintJob"
PUBLIC function long PEOutputToWindow(long al_job, string as_caption, long al_1, long al_2, long al_3, long al_4, long al_5, long al_6) library "crpe32.dll" alias for "PEOutputToWindow"
PUBLIC function long PEOutputToPrinter(long al_job, long al_copy) library "crpe32.dll" alias for "PEOutputToPrinter"
PUBLIC function long PEStartPrintJob(long al_job, long al_wait) library "crpe32.dll" alias for "PEStartPrintJob"
PUBLIC function long PEClosePrintJob(long al_job) library "crpe32.dll" alias for "PEClosePrintJob"
PUBLIC function long PECloseEngine() library "crpe32.dll" alias for "PECloseEngine()"
Код, выполняющийся по клику на кнопке "Показать отчет":
Код: 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.
long ll_engine, ll_job, ll_output, ll_print
string ls_report
ll_engine = PEOpenEngine(ll_engine)
if ll_engine =  0  then
	MessageBox ("Error", "Engine error")
else
	MessageBox ("Ok", "Engine start")
end if
ls_report = GetCurrentDirectory()+"\test.rpt"
ll_job = PEOpenPrintJob(ls_report)
if ll_job =  0  then
	MessageBox ("Error", "Job error")
else
	MessageBox ("Ok", "Job start")
end if
ll_output = PEOutputToWindow(ll_job, "Îò÷åò",  30 ,  30 ,  200 ,  200 ,  0 ,  0 )
if ll_output =  0  then
	MessageBox("Error", "OutputToWindow")
else
	MessageBox ("Ok", "OutputToWindow")
end if
ll_print = PEStartPrintJob(ll_job,  1 )
if ll_print =  0  then
	MessageBox("Error", "StartPrintJob")
else
	MessageBox("Ok", "StartPrintJob")
end if
PEClosePrintJob(ll_job)
PECloseEngine()
В результате выполнения этого кода:
1) Engine Start - OK
2) Job Start - OK
3) OutputToWindow - Error
4) StartPrintJob - Error
5) PowerBuilder Application Execution Error (R0015) - Application terminated. Error: Error calling external function PECloseEngine()

Перед OutputToWindow нужно заполнить некую структуру инфой о подключении к БД.

Нашел такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
logoninfo li
li.size =  514 
li.servername = 	SQLCA.ServerName + char( 0 )
li.databasename = SQLCA.Database + char( 0 )
li.userid = 	SQLCA.LogId + char( 0 )
li.password = 	SQLCA.LogPass + char( 0 )
rcode = PELogOnServer("P2SSQL.DLL" + char( 0 ), li)
if rcode =  0  then
  messagebox ("Ошибка!", "Не могу соедениться с БД.")
else
end if
int ntables
int i
ntables = PEGetNTables(job)
for i =  0  to ntables -  1 
 PESetNthTableLogOnInfo(job,i,li,True)
next
... далее следует вызов PEOutputToWindow()
Подскажите как мне обьявить эту структуру ? Я так понимаю она должна экспортироваться из crpe32.dll как и другие функции. Помогите !
...
Рейтинг: 0 / 0
Подружить PowerBuilder 8 c Cristal Reports
    #35445501
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего она никому не должна. Ищите в документации/примерах к Cristal Reports описание данной структуры, и опишите точно такую же структуру на PB, информация о соответствии типов не раз была на этом форуме.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подружить PowerBuilder 8 c Cristal Reports
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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