Я просто натолкнулся на следующий код в устаревшем приложении Powerbuilder, и мне интересно, есть ли в нем какая-то настоящая необходимость, или кто-то был в настроении ремня и подтяжки.Зачем копировать состояние перед обновлением окна данных?
// Create a datastore that we can capture database errors in
lds_ds = create n_cst_base_datastore
// set up the datastore with the state of the datawindow
ll_Rc = adw_the_dw.GetFullState (lblob)
ll_rc = lds_ds.SetFullState(lblob)
// set the transaction object
li_rc = lds_ds.SetTransObject(sqlca)
// call the update
li_Rc = lds_ds.update()
if li_rc = 1 then // if successful then commit
if ab_reset then
adw_the_dw.ResetUpdate()
COMMIT using sqlca; // should check the commit return code
end if
li_return = 1
elseif li_rc = -1 then // otherwise show error message
if lds_ds.of_get_error() then
lnv_error.of_process_sql_error(lds_ds.of_get_sql_code(), lds_ds.of_get_sql_errtext())
end if
ROLLBACK;
li_return = -1
else // better never happen
ROLLBACK;
li_return = -1
end if
Он смотрит на меня, как вы могли бы получить тот же эффект, просто обновляя DataWindow непосредственно в этом случае, так как мы не координируя между несколькими теории DWs
Хорошая добыча! К сожалению, многие системы делают это. – Terry