|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
И снова здрасти! Ситуация такая, есть 2 ДВ, первый как список, во втором инфа относительно выбранного пункта в первом. Другими словами, если в первом ДВ выбрано "один" (обращаюсь ко второму ДВ через dw_1.RowFocusChanged посылая dw_2.retrieve(значение из первого)), то во втором ДВ отображается "Маша, Таня, Лена", если в первом выбрано "два", то во втором "Галя, Наташа" и т.д. Происходит следующее, при быстром переборе пунктов первого ДВ программа с извинениями от мелкософта закрывается (как экзешник, так и из ПБ, так и из ПБ вместе с Дебагером). Логирование всего что происходит показало что последнее событие это DW_2.RetrieveStart (до Rowfocuschenging дело не доходит). Мне кажется что это происходит из-за того что я во второй ДВ посылаю новую обработку когда старая еще не успела отработать. Как это можно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 10:44 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
... предотвратить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 10:45 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Imperous... предотвратить? Попробовать dw_2. post retrieve(значение из первого) ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо Портал русскоязычной группы пользователей Sybase ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:02 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Imperous... предотвратить? Комментарить понемного текст событий и смотреть какая конкретно строка/сочетание строк так влияет, посмотреть на какой строке валится через PBDebug Tracing... далее попробовать переписать проблемный код по-другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:13 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
аналогично :( только я теперь не вижу чтоб отрабатывали события в dw_2 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:17 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Локшин Марк Imperous... предотвратить? Комментарить понемного текст событий и смотреть какая конкретно строка/сочетание строк так влияет, посмотреть на какой строке валится через PBDebug Tracing... далее попробовать переписать проблемный код по-другому. я перед и после каждого моего события (где и что выполняется) сделал запись в файл, так вот там при обычном ретриеве последняя запись говорит о том что мы зашли в событие DW_2.RetrieveStart, следующее логирование я сделал в dw_2.Rowfocuschenging (которое при ошибке вобще не срабатывает). В режиме dw_2.post retrieve(мое_значение) я в своих логах вобще не вижу записей из событий dw_2. В режиме дебаггера ПБ закрывается аналогично готовому экзешнику (типа мелкософт извиняется) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:27 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Imperous В режиме дебаггера ПБ закрывается аналогично готовому экзешнику (типа мелкософт извиняется) После выполнения какой строки закрывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:32 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Локшин Марк Imperous В режиме дебаггера ПБ закрывается аналогично готовому экзешнику (типа мелкософт извиняется) После выполнения какой строки закрывается? там непонятно.. или может я не через тот дебаггер делаю что не вижу полного хода событий ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:35 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Tools->System options->General->Enable PBDebug tracing = Yes. Это Вам еще в топике про деление на ноль советовали. з.ы. версию указывать не забываем ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:47 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Imperous Локшин Марк Imperous В режиме дебаггера ПБ закрывается аналогично готовому экзешнику (типа мелкософт извиняется) После выполнения какой строки закрывается? там непонятно.. или может я не через тот дебаггер делаю что не вижу полного хода событий Ну вообще-то если в отладчике в пошаговом режиме начиная с точки останова идти используя Step In, то будет построчная отладка... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:55 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
ЗоринАндрейTools->System options->General->Enable PBDebug tracing = Yes. Это Вам еще в топике про деление на ноль советовали. з.ы. версию указывать не забываем Извиняюсь за невнимательность! Версия ПБ-9, база АСЕ-12,5 Вот что показал лог дебаггера Executing system dll functionExecuting event +RETRIEVESTART for class DW_2 lib entry W_ADD_PUTLIST Executing instruction at line 1 Executing class function TODAY for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing system dll function End class function TODAY for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing class function STRING for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing system dll function End class function STRING for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing class function FILEWRITE for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing system dll function End class function FILEWRITE for class SYSTEMFUNCTIONS lib entry _TYPEDEF Executing instruction at line 2End event +RETRIEVESTART for class DW_2 lib entry W_ADD_PUTLIST ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:57 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Локшин Марк Ну вообще-то если в отладчике в пошаговом режиме начиная с точки останова идти используя Step In, то будет построчная отладка... при пошаговом не получится, ибо когда медленно двигаться по dw_1, то программка работает ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 11:59 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
какие события имплементированы в ДВ_2 ? используется ли где-либо ф-я YIELD() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 12:15 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
когда микрософт извиняется, на какой модуль он ссылается ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 12:21 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
с новым годомкакие события имплементированы в ДВ_2 ? используется ли где-либо ф-я YIELD() ? 1) Вот мой лог, пример удачи и за ним неудачи 19.06.2008 ************ Старт Запуск dw_1 19.06.2008 Определение значения dw_1 19.06.2008 SetTranseobject dw_2 19.06.2008 Retrieve dw_2 c add_idpl=2008008933 19.06.2008 Начала работать RetrieveStart dw_2 19.06.2008 Запущен Rowfocuschenging dw_2 19.06.2008 Закончен Rowfocuschenging dw_2 19.06.2008 Проверка на текущую строку, строка =0 19.06.2008 Строка меньше 1, выходим 19.06.2008 Начала работать RetrieveRow dw_2 19.06.2008 Начала работать RetrieveRow dw_2 19.06.2008 Запущен Rowfocuschenging dw_2 19.06.2008 Закончен Rowfocuschenging dw_2 19.06.2008 Проверка на текущую строку, строка =1 19.06.2008 Rowfocuschenged dw_2, выделяем строку 19.06.2008 Rowfocuschenged dw_2, берем данные aidpl, aidzad, atarif 19.06.2008 Rowfocuschenged dw_2, взяли данные aidpl, aidzad, atarif 19.06.2008 aidpl=2008008933; aidzad=2008010161; atarif=97,45999908447266 19.06.2008 Запуск Retrieveend dw_2 19.06.2008 rowcount dw_2 =2 19.06.2008 Запуск Rowfocuschenged dw_2 19.06.2008 Проверка на текущую строку, строка =1 19.06.2008 Rowfocuschenged dw_2, выделяем строку 19.06.2008 Rowfocuschenged dw_2, берем данные aidpl, aidzad, atarif 19.06.2008 Rowfocuschenged dw_2, взяли данные aidpl, aidzad, atarif 19.06.2008 aidpl=2008008933; aidzad=2008010161; atarif=97,45999908447266 19.06.2008 --------------------Закончил dw_1 19.06.2008 ************ Старт Запуск dw_1 19.06.2008 Определение значения dw_1 19.06.2008 SetTranseobject dw_2 19.06.2008 Retrieve dw_2 c add_idpl=2008008939 19.06.2008 Начала работать RetrieveStart dw_2 2)функция field() не используется с новым годомкогда микрософт извиняется, на какой модуль он ссылается ? ага, вот он сослался на файл с содержимым которое хотел передать: <?xml version="1.0" encoding="UTF-16"?> <DATABASE> <EXE NAME="pb90.exe" FILTER="GRABMI_FILTER_PRIVACY"> <MATCHING_FILE NAME="pb90.exe" SIZE="33280" CHECKSUM="0x84644415" BIN_FILE_VERSION="9.0.0.5507" BIN_PRODUCT_VERSION="9.0.0.0" FILE_DESCRIPTION="Sybase PowerBuilder" COMPANY_NAME="Sybase Inc." PRODUCT_NAME="PowerBuilder/InfoMaker" FILE_VERSION="9.0.0.5507" INTERNAL_NAME="PB 9.0" LEGAL_COPYRIGHT="Copyright Sybase Inc. 2002" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x10001" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="9.0.0.5507" UPTO_BIN_PRODUCT_VERSION="9.0.0.0" LINK_DATE="02/18/2003 05:55:40" UPTO_LINK_DATE="02/18/2003 05:55:40" VER_LANGUAGE="Английский (США) [0x409]" /> <MATCHING_FILE NAME="SDK\PBNI\pbsig90.exe" SIZE="73728" CHECKSUM="0x962F4E4" BIN_FILE_VERSION="9.0.0.5507" BIN_PRODUCT_VERSION="9.0.0.0" FILE_DESCRIPTION="Sybase Inc. Product File" COMPANY_NAME="Sybase Inc." PRODUCT_NAME="PowerBuilder/InfoMaker" FILE_VERSION="9.0.0.5507" INTERNAL_NAME="PB 9.0" LEGAL_COPYRIGHT="Copyright Sybase Inc. 2002" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x10001" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="9.0.0.5507" UPTO_BIN_PRODUCT_VERSION="9.0.0.0" LINK_DATE="02/14/2003 10:43:53" UPTO_LINK_DATE="02/14/2003 10:43:53" VER_LANGUAGE="Английский (США) [0x409]" /> <MATCHING_FILE NAME="SDK\PBNI\pbx2pbd90.exe" SIZE="35840" CHECKSUM="0x6B4EE225" BIN_FILE_VERSION="9.0.0.5507" BIN_PRODUCT_VERSION="9.0.0.0" FILE_DESCRIPTION="Sybase Inc. Product File" COMPANY_NAME="Sybase Inc." PRODUCT_NAME="PowerBuilder/InfoMaker" FILE_VERSION="9.0.0.5507" INTERNAL_NAME="PB 9.0" LEGAL_COPYRIGHT="Copyright Sybase Inc. 2002" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x10001" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="9.0.0.5507" UPTO_BIN_PRODUCT_VERSION="9.0.0.0" LINK_DATE="02/14/2003 10:43:48" UPTO_LINK_DATE="02/14/2003 10:43:48" VER_LANGUAGE="Английский (США) [0x409]" /> </EXE> <EXE NAME="libjsybheap.dll" FILTER="GRABMI_FILTER_THISFILEONLY"> <MATCHING_FILE NAME="libjsybheap.dll" SIZE="35328" CHECKSUM="0xDF9139C0" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="11/13/2002 03:05:20" UPTO_LINK_DATE="11/13/2002 03:05:20" /> </EXE> <EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY"> <MATCHING_FILE NAME="kernel32.dll" SIZE="989696" CHECKSUM="0x26E478DA" BIN_FILE_VERSION="5.1.2600.2180" BIN_PRODUCT_VERSION="5.1.2600.2180" PRODUCT_VERSION="5.1.2600.2180" FILE_DESCRIPTION="Библиотека клиента Windows NT BASE API" COMPANY_NAME="Корпорация Майкрософт" PRODUCT_NAME="Операционная система Microsoft® Windows®" FILE_VERSION="5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Корпорация Майкрософт. Все права защищены." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF77F8" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.2180" UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180" LINK_DATE="08/17/2004 23:04:04" UPTO_LINK_DATE="08/17/2004 23:04:04" VER_LANGUAGE="Русский [0x419]" /> </EXE> </DATABASE> ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 12:31 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Начать надо с того чтобы обновить до 9.0.3 Очень странно, что в конце лога дв вызывается с одним аргументом ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 12:44 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
spas2001Начать надо с того чтобы обновить до 9.0.3 Очень странно, что в конце лога дв вызывается с одним аргументом ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца почему странно??? У меня у меня дв_2 основано на обычном sql-запросе в котором один аргумент ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 12:50 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Выкладываю все что касается dw_1 и dw_2 (может я просто не вижу гвоздя) Все, что происходит в ДВ_1 1) событие Rowfocuschenged dw_1.enabled=false li_FileNum = FileOpen("C:\log.TXT", LineMode!, Write!, LockWrite!, Append!) FileWrite(li_FileNum, string(today()) +" ************ Старт Запуск dw_1") string selec, sadd_idpl, test string t0, t1,t2 FileWrite(li_FileNum, string(today()) +" Определение значения dw_1") add_idpl=double(this.object.data[currentrow,1]) FileWrite(li_FileNum, string(today()) +" SetTranseobject dw_2") dw_2.settransobject(sqlca) FileWrite(li_FileNum, string(today()) +" Retrieve dw_2 c add_idpl=" + string(add_idpl)) dw_2.retrieve(add_idpl) aidpl=add_idpl FileWrite(li_FileNum, string(today()) +" --------------------Закончил dw_1") FileClose(li_FileNum) **************************** Все, что происходит в ДВ_2 1)событие Retrieveend FileWrite(li_FileNum, string(today()) +" Запуск Retrieveend dw_2") if dw_2.rowcount( ) =0 then return end if FileWrite(li_FileNum, string(today()) +" rowcount dw_2 =" + string(dw_2.rowcount( ))) dw_2.selectrow( prevrow2, false) dw_2.selectrow( 1, true) FileWrite(li_FileNum, string(today()) +" Запуск Rowfocuschenged dw_2") dw_2.event rowfocuschanged( 1) dw_1.enabled=true 2)событие RetrieveRow FileWrite(li_FileNum, string(today()) +" Начала работать RetrieveRow dw_2") 3)событие RetrieveStart FileWrite(li_FileNum, string(today()) +" Начала работать RetrieveStart dw_2") 4)событие Rowfocuschenged FileWrite(li_FileNum, string(today()) +" Проверка на текущую строку, строка =" + string(currentrow)) if currentrow<1 then FileWrite(li_FileNum, string(today()) +" Строка меньше 1, выходим") return end if FileWrite(li_FileNum, string(today()) +" Rowfocuschenged dw_2, выделяем строку") dw_2.selectrow( prevrow2, false) dw_2.selectrow( currentrow, true) prevrow2=currentrow FileWrite(li_FileNum, string(today()) +" Rowfocuschenged dw_2, берем данные aidpl, aidzad, atarif") aidpl=this.object.data[currentrow,2] aidzad=this.object.data[currentrow,1] atarif=this.object.data[currentrow,8] FileWrite(li_FileNum, string(today()) +" Rowfocuschenged dw_2, взяли данные aidpl, aidzad, atarif") FileWrite(li_FileNum, string(today()) +" aidpl=" +string(aidpl)+"; aidzad=" +string(aidzad) +"; atarif=" + string(atarif)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 13:01 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
ImperousВыкладываю все что касается dw_1 и dw_2 (может я просто не вижу гвоздя) Падает PB - он по-любому себя так вести не должен. Ставьте обновления, как Вам уже посоветовали, или пытайтесь найти инструкцию (инструкции) которая приводит к таким последствиям. Могу вас обрадовать, в 6-ке например, разместив на форме пару RadioButton'ов и тоже быстро переключаясь между ними можно было свалить PB, причем кода который должен был исполняться не было вообще никакого. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 13:17 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Я бы изначально делал не так. Чтобы не учитывать бесполезные быстрые изменения в первом датавиндове : - добавляем невизуальный обьект таймер - на событии ItemChanged первого ДВ - останавливаем таймер, если уже стартован. Стартуем таймер (на одну/пол сенкунды) - на событии ОнТимер в таймере - ретривим второе ДВ. Останавливаем таймер Теперь можно сколько угодно дрючить первое ДВ - второе отретривится через заданый интервал с нужным тебе значением. Такой же подход можно использовать на editchanged первого ДВ когда реализуют подобные вещи. Также рекомендую енаблить/дизаблить контролы и возможность закрытия окна в промежуток между стартом таймера и его страбатывании ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 13:19 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
spas2001Начать надо с того чтобы обновить до 9.0.3 вот именно!! пока это не сделано все остальные телодвижения бессмысленны. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 13:33 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Кстати, а где взять апдейты, на сайте сайбейса их нет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 13:43 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Скорее всего из-за этой строки add_idpl=double(this.object.data[currentrow,1]) Попробуйте вместо double - decimal{0} Так как аргумент в dw - number, может восприниматься по другому, реально не вижу повода испльзовать double, какая размерность этого поля в БД и что за СУБД вы используете? ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 14:02 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
Imperous wrote: > Кстати, а где взять апдейты, на сайте сайбейса их нет Именно там и взять. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 14:10 |
|
Закрывается программа при dw.retrieve
|
|||
---|---|---|---|
#18+
У нас была ситуация когда поле было number(18,0) пришлось аргумент объявлять как char array ( для Oracle), find&filter в dw тоже чудеса вытворяли, так что если оставите double попробуйте заменить тип retrieve - аргумента ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2008, 14:11 |
|
|
start [/forum/topic.php?fid=15&msg=35382110&tid=1336377]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
117ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 372ms |
total: | 586ms |
0 / 0 |