|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Хочу кор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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2003, 16:02 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
подключи PFC (*.pbl) они должні біть в папке PFC куда заинсталировал билдер или для начала используй визард билдера для создания приложения на основе pfc, на одном из шагов есть кнопка из тремя точками при нажатии которой ты сможеш выбрать какие pbl из pfc тебе надо подключить ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2003, 16:59 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
PFC - в папке PFC куда заинсталировал билдер лежат. А если при создании я библиотеки не прицепил, уже поздно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2003, 17:18 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
нет не поздно в среде разработки правую кнопку на target и выбрать пункт Migrate откроется окно и там можна подключить другие библиотеки или отключить ненужные. Тоже можно сделать и в файле *.pbt для твоего приложения Потом выполнить Migrate ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2003, 17:24 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
c PFC - OK, спасибо Николаи, У меня все одно осталась проблема с закрытием аппликации после вызова Crystal Reports через его API. Ето так выглядит из ПБ - после вызова и закрытия окна Crystal Reports (он корректно отрабатывает) при попытке закрыть окно приложения или при закрытии самои аппликации, у меня Powerbuilder пишет о ошибке и все вываливается в винду. Если я в етом месте CR не вызываю и так же закрываю, етого не происходит. В чем может быть дело на ваш взгляд? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 11:57 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Sergey Schwarz писал:У меня все одно осталась проблема с закрытием аппликации после вызова Crystal Reports через его API. Не плохо бы взглянуть на скрипт вызова CR. Каким API вы пользуетесь native или дергаете CR через automation? Если создаете OLEobject, то не забываете применить DisconnectObject() ? BTW, а что за ошибку PB вам инкриминирует? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 12:23 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Я использую для старта и передачи параметров 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 пишет ошибка в памяти по такому-то адресу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 13:15 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Я не вижу, что именно в приведенном вами коде приводит приложение к падению при закрытии. Если вы считаете, что доказали однозначную связь падения и отработки приведенного вами кода, то IMHO, есть три пути решения проблемы: 1) Подождать других советов. Рекомендую. 2) Если есть время и хочется досконально разобраться, то: выверяем прототипы внешних функций, для структур пишем тестовые процедурки на cpp, куда их передаем для отладочной печати. Ищем ошибки типа LPSTR вместо LPCSTR или PCHAR вместо PWCHAR, etc.. 3)Если надо быстро, то пишем оболочечную функцию на C++, типа PrintAllStuff_onCR добиваемся её устойчивой работы, окунаем в DLL, цепляем к билдеру, возвращаемся к пиву, благо у вас там первоисточник, так-сказать... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 14:29 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Попробуй поставить вначале кода DebugBreak() и выполнить програму по строчно про результат сообщи ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 17:46 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Вот в етом куске я вываливаюсь - (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 дисконнект нормально отрабатывает, а вот дальше вылетаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 18:56 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
disconnect using sqlca ; -> сдесь вылетаеш или на событие Open окна w_ein из следующий строки Open(w_ein) Close(w_report_auswahl) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 19:13 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
2 Sergey Schwarz Такое вот небольшое соображение - могут быть проблемы со сборкой мусора, во всяком случае это наблюдается на PB 7.0.3 EE, build 10213 или 10075 (Win2000Prof). Попробуйте после завершения работы с CR явно вызвать GarbageCollect ( ). Если не поможет, тогда, вероятно, следует копать в направлении, указанном Mykola :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2003, 19:57 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
вылетаю на дисконнекте прописал GarbageCollect( ) - не помогает. Если же я не вызываю Crystal Reports а просто закрываю ето окно. Все нормально. Я передвинул строчку с disconnect using sqlca ; в "опен" окна, которое открывается. В етом случае вываливаюсь уже из него. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 14:13 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
если не трудно направь сообщение которое получается ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 17:41 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
вот скрин с ошибкои тут лежит, если в форуме картинки ни отображаются http://www21.brinkster.com/sergeyschwarz/ <img src="http://www21.brinkster.com/sergeyschwarz/error.bmp" alt="" border="0"> ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 18:40 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Ошибку посмотрел . Спасибо Сергей какой результат если из кода убрать строку c Disconnect ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 18:53 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
если убрать Disconnect, то все работает. То есть я вылогился, что б мне снова с другои базои или с етои же но под другим логином заити, должен я переконектится. деваться то некуда. Тут что-то связаное с Crystal Reports. Если я Crystal Reports не вызываю , то все переключения между окнами и смена коннекта проходит нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 19:01 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Может попробовать с CrystalReport поработать через отдельную транзакцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 19:07 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
А что ты имеешь в виду под отдельной транзакцией? Crystal Reports делает свой собственный коннект к базе через ODBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2003, 23:48 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Sergey Schwarz писал:если убрать Disconnect, то все работает.Уважаемый Сергей! Если вам нужен workaround, то попробуйте, например, отконнектится на время отработки скрипта вызова CR. Или имплементировать совет Миколы, создать новую транзакцию (не SQLCA) и посмотреть, что будет при её дисконнекте. На всякий случай, поясню смысл своего предыдущего постинга. Когда вы обращаетесь к фунциям CR из, например, cpp-функции, то компайлеру доступны валидные прототипы этих функций и он может сгенерить код автоматического преобразования типов, ежели это необходимо и возможно. В вашем случае, PB при вызове вынужден ориентироваться на "левые" прототипы external-фунций, в неточности которых, на мой взгляд, и может находиться ваша ошибка. Кроме того, CR предоставляет возможность обращаться к своей функциональности через automation, не так ли? В этом случае, тоже произойдет приведение типов. Всё вышесказанное, разумеется IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2003, 11:13 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
А что ты имеешь в виду под отдельной транзакцией? // This code produces correct results. transaction ASETrans ASETrans = CREATE TRANSACTION ASETrans.DBMS = "Sybase" ASETrans.Database = "Personnel" ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2003, 13:41 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Победил. Что было не знаю. Експерементировал с ноВыми коннектами и дисконектами. Ничего не помогало. Потом потер все комментарии и о чудо! Ошибка пропала! И вот еще маленькии вопрос- Я стартую из своеи аппликации процедуру на Oracle передаю еи параметры и получаю от нее. Ето все работает, но при компиляции скрипта, где я ету процедуру вызываю, PB ругается, (но стартовать аппликацию дает), дескать процедура не продекларирована, хотя она у меня в локальных внещних описана. Кто виноват и что делять? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2003, 18:07 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
В локальных внещних описана где, в transaction objecte как RPCFUNC или где-то ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2003, 18:14 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
да, Вот так описана - function string func_chiffre_pin(string apin, string akey, long amode) RPCFUNC ALIAS FOR "PFLEGE_1.FUNC_CHIFFRE_PIN" PFLEGE_1.FUNC_CHIFFRE_PIN - схема и имя процедуры соотв. Пробовал во внещнии перетащить - не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2003, 18:41 |
|
Учусь работать с PFC, вопрос (+)
|
|||
---|---|---|---|
#18+
Опять победил! Выкинул ее декларацию нафиг из 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; всем спасибо огромное за поддержку новичка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2003, 18:56 |
|
|
Start [/forum/topic.php?fid=15&fpage=116&tid=1339567]: |
0ms |
get settings: |
3ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
12ms |
get topic data: |
12ms |
get forum data: |
1ms |
get page messages: |
24ms |
get tp. blocked users: |
0ms |
others: | 125ms |
total: | 187ms |
0 / 0 |