powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Учусь работать с PFC, вопрос (+)
25 сообщений из 25, страница 1 из 1
Учусь работать с PFC, вопрос (+)
    #32219647
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу корpeктно закрыть аппликацию.
Вот ето прочитал - http://osp.admin.tomsk.ru/dbms/1997/05_06/68.htm

Сделал все как в учебнике -

----> Globale declaration

n_cst_appmanager gnv_app

---->Open App

gnv_app = CREATE n_cst_appmanager
gnv_app.Event pfc_Open()


---->Button Close App

gnv_app.Event pfc_close()
DESTROY gnv_app

PB ругается - illegal data typa: n_cst_appmanager

Я думаю, что я ети PFC Library не подцепил.
Что я не так делаю?
_______________________________-
PB 8.02 NT4.0
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32219715
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подключи PFC (*.pbl)
они должні біть в папке PFC куда заинсталировал билдер

или для начала используй визард билдера для создания приложения на основе pfc, на одном из шагов есть кнопка из тремя точками при нажатии которой ты сможеш выбрать какие pbl из pfc тебе надо подключить
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32219756
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PFC - в папке PFC куда заинсталировал билдер лежат.
А если при создании я библиотеки не прицепил, уже поздно?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32219767
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не поздно
в среде разработки правую кнопку на target и выбрать пункт Migrate
откроется окно и там можна подключить другие библиотеки или отключить ненужные.
Тоже можно сделать и в файле *.pbt для твоего приложения

Потом выполнить Migrate
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32220407
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c PFC - OK, спасибо Николаи,

У меня все одно осталась проблема с закрытием аппликации после вызова Crystal Reports через его API.

Ето так выглядит из ПБ - после вызова и закрытия окна Crystal Reports (он корректно отрабатывает) при попытке закрыть окно приложения или при закрытии самои аппликации, у меня Powerbuilder пишет о ошибке и все вываливается в винду.

Если я в етом месте CR не вызываю и так же закрываю, етого не происходит.
В чем может быть дело на ваш взгляд?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32220484
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Schwarz писал:У меня все одно осталась проблема с закрытием аппликации после вызова Crystal Reports через его API.
Не плохо бы взглянуть на скрипт вызова CR. Каким API вы пользуетесь native или дергаете CR через automation?
Если создаете OLEobject, то не забываете применить DisconnectObject() ?

BTW, а что за ошибку PB вам инкриминирует?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32220648
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использую для старта и передачи параметров DLL от Srystal Reports

Стартую -

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

////************Prüfen, ob Report ausgewählt ist**************
if name_report = '' " then
messagebox("Problem","Kein report ausgewählt")
else

integer li_zaehler, errorcode
boolean lb_rcode
int result
integer li_rcode = 1
string ls_servername
integer li_parameter_anzahl
int textlength
long row
long bew_id
long bew_idd

str_logonInfo lstr_logoninfo
str_valueInfo lstr_einrichtung
str_valueInfo lstr_second
str_valueInfo lstr_ausfuehrender
str_parameterInfo lstr_parameter
str_windowoptions lstr_windowoptions

row = w_bewohner_test.getrow()

if row > 0 then
bew_id = w_bewohner_test.GetItemNumber(row, "person_per_pks_id_1")
messagebox("Bewohner ID", bew_id)
else
messagebox( "Fehler", "Bewohner ID nicht ausgewählt")
return
end if

lb_rcode = PEOpenEngine()
if lb_rcode = false then
messagebox("Ahtung","Crystal Report Schnittstelle konnte nicht geöffnet werden!")
else

job = PEOpenPrintJob(name_report)

if job = 0 then
messagebox("Problem","PEOpenPrintJob kann nicht geöffnet werden!")
messagebox("PEOpenPrintJob", PEGetErrorCode(job))
end if

lstr_LogOnInfo.StructSize = 514
lstr_LogOnInfo.servername = "***" + CHAR(0)
lstr_LogOnInfo.userID = "****" + CHAR(0)
lstr_LogOnInfo.password = "****" + CHAR(0)

li_rcode = PESetNthTableLogonInfo (job, 0, lstr_LogOnInfo, TRUE) // Verbindung aufbauen

if li_rcode <> 1 then
messagebox("Datenbank Verbindung","Keine Verbindung zur Datenbank. Wenden Sie sich an Ihren Datenbankadministrator!")
else
//messagebox("li_rcode - PESetNthTableLogonInfo", li_rcode)
end if

lb_rcode = PEDiscardSavedData (job)

// **********alle Parameter werden gesetzt**************

lstr_einrichtung.structsize = 316
lstr_einrichtung.vinumber = li_al_clientid //al_einrichtungs_id

lstr_second.structsize = 316
lstr_second.vinumber = bew_id //al_second_id

lstr_ausfuehrender.structsize = 316
lstr_ausfuehrender.vinumber = li_ausfuehrender_id


li_parameter_anzahl = PEGetNParameterFields(job) // Paramteranzahl im Report
lstr_parameter.structsize = 1438

for li_zaehler = 1 to li_parameter_anzahl
li_rcode = PEGetNthParameterField(job, li_zaehler - 1, lstr_parameter)
//*********************************

тут параметры отдаю в CR, кода много

//************ *******************II

Result = PEOutputToWindow(job, "Report", 0, 90, 800, 490, 16777216 , 0)
if result <> 1 then
messagebox("PEOutputToWindow", PEGetErrorCode(job))
end if

result = PEStartPrintJob (job, TRUE)
if result <> 1 then
messagebox("PEStartPrintJob", PEGetErrorCode(job))
end if

boolean success

success = PEClosePrintJob(job)
if success <> true then
messagebox("PEClosePrintJob", PEGetErrorCode(job))
end if

end if
end if

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Может конечно, я что-то криво делаю.(скорее все)

PB пишет ошибка в памяти по такому-то адресу.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32220864
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не вижу, что именно в приведенном вами коде приводит приложение к падению при закрытии. Если вы считаете, что доказали однозначную связь падения и отработки приведенного вами кода, то IMHO, есть три пути решения проблемы:
1) Подождать других советов. Рекомендую.

2) Если есть время и хочется досконально разобраться, то: выверяем прототипы внешних функций, для структур пишем тестовые процедурки на cpp, куда их передаем для отладочной печати. Ищем ошибки типа LPSTR вместо LPCSTR или PCHAR вместо PWCHAR, etc..
3)Если надо быстро, то пишем оболочечную функцию на C++, типа PrintAllStuff_onCR добиваемся её устойчивой работы, окунаем в DLL, цепляем к билдеру, возвращаемся к пиву, благо у вас там первоисточник, так-сказать...
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32221309
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй поставить вначале кода DebugBreak()
и выполнить програму по строчно
про результат сообщи
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32221453
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в етом куске я вываливаюсь -

(clicked)

integer li_aus
li_aus = MessageBox("PEPone", "Sind Sie sicher, dass Sie wirklich das Program verlassen wollen?", Exclamation!, OKCancel!, 2)
IF Net = 1 THEN
//ok
disconnect using sqlca ;
Open(w_ein)
Close(w_report_auswahl)
end if

дисконнект нормально отрабатывает, а вот дальше вылетаю.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32221475
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
disconnect using sqlca ;
-> сдесь вылетаеш
или на событие Open окна w_ein из следующий строки
Open(w_ein)
Close(w_report_auswahl)
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32221524
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sergey Schwarz
Такое вот небольшое соображение - могут быть проблемы со сборкой мусора, во всяком случае это наблюдается на PB 7.0.3 EE, build 10213 или 10075 (Win2000Prof). Попробуйте после завершения работы с CR явно вызвать GarbageCollect ( ).

Если не поможет, тогда, вероятно, следует копать в направлении, указанном Mykola :-)
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222328
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вылетаю на дисконнекте
прописал GarbageCollect( ) - не помогает.

Если же я не вызываю Crystal Reports а просто закрываю ето окно.
Все нормально.

Я передвинул строчку с disconnect using sqlca ; в "опен" окна, которое открывается. В етом случае вываливаюсь уже из него.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222832
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не трудно направь сообщение которое получается
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222946
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот скрин с ошибкои тут лежит, если в форуме картинки ни отображаются



http://www21.brinkster.com/sergeyschwarz/


<img src="http://www21.brinkster.com/sergeyschwarz/error.bmp" alt="" border="0">
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222973
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибку посмотрел . Спасибо

Сергей какой результат если из кода убрать строку c Disconnect ...
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222984
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если убрать Disconnect, то все работает.
То есть я вылогился, что б мне снова с другои базои или с етои же но под другим логином заити, должен я переконектится.
деваться то некуда.

Тут что-то связаное с Crystal Reports.

Если я Crystal Reports не вызываю , то все переключения между окнами и смена коннекта проходит нормально.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32222989
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может попробовать с CrystalReport поработать через отдельную транзакцию?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32223093
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что ты имеешь в виду под отдельной транзакцией?

Crystal Reports делает свой собственный коннект к базе через ODBC.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32223405
Dmitry Belousov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Schwarz писал:если убрать Disconnect, то все работает.Уважаемый Сергей! Если вам нужен workaround, то попробуйте, например, отконнектится на время отработки скрипта вызова CR. Или имплементировать совет Миколы, создать новую транзакцию (не SQLCA) и посмотреть, что будет при её дисконнекте.

На всякий случай, поясню смысл своего предыдущего постинга. Когда вы обращаетесь к фунциям CR из, например, cpp-функции, то компайлеру доступны валидные прототипы этих функций и он может сгенерить код автоматического преобразования типов, ежели это необходимо и возможно. В вашем случае, PB при вызове вынужден ориентироваться на "левые" прототипы external-фунций, в неточности которых, на мой взгляд, и может находиться ваша ошибка.

Кроме того, CR предоставляет возможность обращаться к своей функциональности через automation, не так ли? В этом случае, тоже произойдет приведение типов.

Всё вышесказанное, разумеется IMHO.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32223733
Mykola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что ты имеешь в виду под отдельной транзакцией?


// This code produces correct results.
transaction ASETrans
ASETrans = CREATE TRANSACTION
ASETrans.DBMS = "Sybase"
ASETrans.Database = "Personnel"
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32226766
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Победил.
Что было не знаю.
Експерементировал с ноВыми коннектами и дисконектами.
Ничего не помогало.
Потом потер все комментарии и о чудо!
Ошибка пропала!

И вот еще маленькии вопрос-

Я стартую из своеи аппликации процедуру на Oracle передаю еи параметры и получаю от нее.

Ето все работает, но при компиляции скрипта, где я ету процедуру вызываю, PB ругается, (но стартовать аппликацию дает), дескать процедура не продекларирована, хотя она у меня в локальных внещних описана.

Кто виноват и что делять?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32226778
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В локальных внещних описана где, в transaction objecte как RPCFUNC или где-то ещё?
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32226797
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, Вот так описана -

function string func_chiffre_pin(string apin, string akey, long amode) RPCFUNC ALIAS FOR "PFLEGE_1.FUNC_CHIFFRE_PIN"

PFLEGE_1.FUNC_CHIFFRE_PIN - схема и имя процедуры соотв.


Пробовал во внещнии перетащить - не помогает.
...
Рейтинг: 0 / 0
Учусь работать с PFC, вопрос (+)
    #32226813
Sergey Schwarz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять победил!
Выкинул ее декларацию нафиг из declare-->lokal


Оказывается ( для меня по краинеи мере ), что если я вот так вызываю из скрипта, то можно не декларировать совсем -


declare neu_chif_pin procedure for
PFLEGE_1.FUNC_CHIFFRE_PIN(:ls_pin, '5647', 1)
using sqlca;

execute neu_chif_pin;

fetch neu_chif_pin into :ls_chiffre_pin;
Close neu_chif_pin;


всем спасибо огромное за поддержку новичка.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Учусь работать с PFC, вопрос (+)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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