-
Stefano Neri
- PowerBuilder
- Tuesday, 9 December 2025 09:36 AM UTC
I’m using PowerBuilder 2025 Build 3726.
We have a client/server application originally developed with an Informix database, which we are now migrating to SQL Server.
// Translate SQL
String ls_dbtype, ls_syntax, ls_errore
String ls_dbparm, ls_object
LongLong ll_handle
Long ll_valore
Integer li_retu
ls_dbtype = ''
// Datawindow/Datastore name
ls_object = Trim(This.dataobject)
if isnull(ls_object) Then ls_object = ''
// Control is valid
if not isvalid(t) Then
f_hg_trace(0, 0, classname(), "Settransobject", '-1', "Transazione not is valid : " + ls_object)
ls_dbparm = ''
else
ls_dbparm = t.dbparm
end if
// Control syntax
ls_syntax = Trim(Describe("datawindow.table.select") )
if isnull(ls_syntax) Then ls_syntax = ''
if Len(ls_syntax) <= 5 Then
if Upper(ls_object) <> 'DW_VUOTA' Then
f_hg_trace(0, 0, classname(), "Settransobject", '-1', "syntax not found :" + ls_object)
end if
Return 1
end if
li_retu = Super::settransobject(t)
if li_retu = 1 Then
if guo_sql_translate.of_sql_translate(ls_dbtype, ls_syntax, ls_errore ) >= guo_sql_translate.ci_OK Then // *** ##SQL TRANSLATE## ***//
// Controllo dopo la traduzione
if isnull(ls_syntax) Then ls_syntax = ''
if Len(Trim(ls_syntax)) <= 5 Then
f_hg_trace(0, 0, classname(), "Settransobject", '-1', "syntax not found :" + ls_object)
Return 1
end if
if isvalid(This.Object) Then
This.Object.DataWindow.Table.Select = ls_syntax
else
// POINT ERROR
f_hg_trace(0, 0, classname(), "Settransobject", '-1', "Table.Select su: " + ls_object + " Errore: Object not is valid .")
end if
end if
else
f_hg_trace(0, 0, classname(), "Settransobject", string(li_retu), "Error su: " + ls_object + ' on Syntax: ' + ls_syntax)
end if
Return li_retu
In the ancestor class of our DataStore objects, we have overridden the SetTransObject function to include some SQL syntax translation logic. Normally everything works correctly:li_retu = Super::SetTransObject(t) returns 1 as expected.
However, after several hours of normal operation, the transaction object suddenly becomes invalid.
Right after calling Super::SetTransObject(t), the object is valid, but later in the same overridden method the check:
If IsValid(This.Object) Then
unexpectedly returns FALSE.
It looks like the transaction object gets destroyed or becomes corrupted after running fine for hours.
What could be causing this issue, and how can we prevent the transaction object from becoming invalid?
Fammi sapere se vuoi aggiungere dettagli tecnici o allegare codice.
Find Questions by Tag
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.