powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / почему???
8 сообщений из 8, страница 1 из 1
почему???
    #32811244
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Хочу разобраться в следующей ситуации....
Использую ПБ+ПФЦ и АСА 8.0
Есть dw -наследник от u_dw, также 2-е кнопки Insert, Update.
Код каждой из них:
Insert --- dw_1.insertrow(1)
Update --- dw_1.of_update(true,true)

Объект транзакции
usertr=create n_tr
usertr.autocommit=false
usertr.DBMS='ODBC'
usertr.dbParm = "ConnectString ='DSN=test;UID=dba;PWD=sql'"

Вопрос заключается в следующем, почему все работает правельно? Ведь я по привычке
кинулся было писать на кнопке Update следующий код
if dw_1.of_update(true,true)=1 then
dw_1.of_commit()
end if
а с ним, вообще такое что то безконтрольное начинает творится.Да и в ПФЦ хелпе такой код в качестве
примера используется.....!!!!!
Вообщем ничего я не пойму, выходит так, что ручками не надо подтверждать транзакцию, или
откатывать ее, все само правельно делается, просто запускаешь функцию dw_1.of_update(true,true) и ВСЕ??
Помогите разобраться пожалуйста.... Заранее благодарен.
...
Рейтинг: 0 / 0
почему???
    #32811842
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция PFC of_Update() не начинает и не завершает транзакцию, соответственно надо:
- либо самому обрамлять эту функцию соответсвующими командами начала и завершения транзакции с обработкой ошибок
- либо вызывать функцию of_Save() контейнера, который содержит это самое DW (в PFC это может быть окно наследуемое от w_master или табулятор от u_tab)
- либо использовать объект PFC n_cst_luw в котором регистрировать ваш DW и другие связанные обновляемые объекты и вызывать его функцию of_Save(), например так:
Код: plaintext
1.
2.
3.
lnv_luw = CREATE n_cst_luw
li_rc = lnv_luw.of_Save(dw_1, SQLCA)
Destroy lnv_luw

Успехов!
...
Рейтинг: 0 / 0
почему???
    #32812042
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый господин Успехов!

Не надо путать человека. В PFC надо вызывать событие pfc_save,
а begin tran и rollback/commit прописывать в pfc_begintran, pfc_endtran соответственно.
...
Рейтинг: 0 / 0
почему???
    #32812382
Вопросник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый ЗоринАндрей, а можно подробней..........
У меня DW -связаны в цепочку datalikage, при редактировании все впорядке, а вот при внесении новой записи.........., на 3-ий раз збой.
Обясню:
dw_1 -мастер
dw_2 -подченное dw!
Цепочка настроенна правельно, и все работает.
Если, при внесении новой записи на dw_2 -случается ошибка, то после ее исправления апдейт проходит -только для dw_1, dw_2 -не сохраняется -а почему ??????????? Вот код апдейта

if tab_1.tabpage_1.dw_one.inv_linkage.of_update(true,true)=1 then
usertr.of_commit()
else
usertr.of_rollback()
end if
...
Рейтинг: 0 / 0
почему???
    #32812550
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый господин а begin tran и rollback/commit прописывать в pfc_begintran, pfc_endtran соответственно. вы имеете необыкновенную способность доставать людей.
По сути вопроса объяснили бы товарищу где искать событие pfc_save и как устроен механизм обновления данных в PFC.
...
Рейтинг: 0 / 0
почему???
    #32812565
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какие тут подробности могут быть
никаких of_update(...)
не зависимо от того что у вас там за линкейдж
просто вызываем
parent.Event PFC_save()
...
Рейтинг: 0 / 0
почему???
    #32812569
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросникУважаемый ЗоринАндрей, а можно подробней..........
У меня DW -связаны в цепочку datalikage, при редактировании все впорядке, а вот при внесении новой записи.........., на 3-ий раз збой.
Обясню:
dw_1 -мастер
dw_2 -подченное dw!
Цепочка настроенна правельно, и все работает.
Если, при внесении новой записи на dw_2 -случается ошибка, то после ее исправления апдейт проходит -только для dw_1, dw_2 -не сохраняется -а почему ??????????? Вот код апдейта

Код: plaintext
1.
2.
3.
4.
   if tab_1.tabpage_1.dw_one.inv_linkage.of_update(true,true)= 1  then 
   usertr.of_commit()
   else 
   usertr.of_rollback()
   end if

n_cst_dwsrv_linkage::of_Update

Updates the linked DataWindows in the direction specified in the of_SetUpdateStyle function.

PFC 6.0.01 Copyright © 1990-1998 Sybase, Inc.
...
Рейтинг: 0 / 0
почему???
    #32812588
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот наконец нашел неплохую статью, её можно и в полезную информацию добавить
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / почему???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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