Alaska Software Inc. - XBPBROWSE:FORCESTABLE error
Username: Password:
AuthorTopic: XBPBROWSE:FORCESTABLE error
Claudio Driussi XBPBROWSE:FORCESTABLE error
on Mon, 18 May 2020 10:56:26 +0200
Very very strange.

In one of my apps I got an error in XBPBROWSE:FORCESTABLE only
in RDP only for one user, only for one function. 

I got no sources for XBPBROWSE and I would like to know which
is the IVAR that generate the error so I can avoid forcestable
in that condition.


the error is:

------------------------------------------------------------------------------
ERROR LOG of "D:\rete_CS\AGC\AGC.EXE" Date: 18/05/20 09:31:41

Xbase++ version     : Xbase++ (R) Version 2.00.1127
Operating system    : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
           -> VALTYPE: A VALUE: {}
           -> VALTYPE: N VALUE: -2
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: N
oError:cargo        : NIL
oError:description  : Error in array index
oError:filename     :
oError:genCode      :          4
oError:operation    : <A of 0>[<-2>]
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       1012
oError:subSystem    : BASE
oError:thread       :          3
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from XBPBROWSE:FORCESTABLE(1473)
Called from CSDBBROWSE:FORCESTABLE(2206)
Called from XBPBROWSE:HANDLEEVENT(1964)
Called from XBPBROWSE:REFRESHROWS(3130)
Called from XBPBROWSE:REFRESHALL(3058)
Called from CSDIALOG:BROWSEDBF(337)
Called from DECORBROWSEOL(1800)
Called from (B)CSTREEMENU(0)
Called from _DOTMENU(490)
------------------------------------------------------------------------------


my method CSDBBROWSE:FORCESTABLE is very simple:

method csdbBrowse:ForceStable
   local rn := recno()
   local rc := ::xbpBrowse:forceStable()
   if recno() != rn .and. valtype(::refresh) == 'B'
     eval(::refresh,,,self)
     endif
return rc

if I know which IVAR has a wrong state I can avoid
ForceStable propagation.

Many thanks
Claudio
Jonathan LeemingRe: XBPBROWSE:FORCESTABLE error
on Mon, 18 May 2020 09:57:08 -0600
On 5/18/2020 2:56 AM, Claudio Driussi wrote:
> Very very strange.
> 
> In one of my apps I got an error in XBPBROWSE:FORCESTABLE only
> in RDP only for one user, only for one function. 
> 
> I got no sources for XBPBROWSE and I would like to know which
> is the IVAR that generate the error so I can avoid forcestable
> in that condition.
> 
> 
> the error is:
> 
> ------------------------------------------------------------------------------ 
> 
> ERROR LOG of "D:\rete_CS\AGC\AGC.EXE" Date: 18/05/20 09:31:41
> 
> Xbase++ version     : Xbase++ (R) Version 2.00.1127
> Operating system    : Windows 7 06.01 Build 07601 Service Pack 1
> ------------------------------------------------------------------------------ 
> 
> oError:args         :
>            -> VALTYPE: A VALUE: {}
>            -> VALTYPE: N VALUE: -2
> oError:canDefault   : N
> oError:canRetry     : N
> oError:canSubstitute: N
> oError:cargo        : NIL
> oError:description  : Error in array index
> oError:filename     :
> oError:genCode      :          4
> oError:operation    : <A of 0>[<-2>]
> oError:osCode       :          0
> oError:severity     :          2
> oError:subCode      :       1012
> oError:subSystem    : BASE
> oError:thread       :          3
> oError:tries        :          0
> ------------------------------------------------------------------------------ 
> 
> CALLSTACK:
> ------------------------------------------------------------------------------ 
> 
> Called from XBPBROWSE:FORCESTABLE(1473)
> Called from CSDBBROWSE:FORCESTABLE(2206)
> Called from XBPBROWSE:HANDLEEVENT(1964)
> Called from XBPBROWSE:REFRESHROWS(3130)
> Called from XBPBROWSE:REFRESHALL(3058)
> Called from CSDIALOG:BROWSEDBF(337)
> Called from DECORBROWSEOL(1800)
> Called from (B)CSTREEMENU(0)
> Called from _DOTMENU(490)
> ------------------------------------------------------------------------------ 
> 
> 
> 
> my method CSDBBROWSE:FORCESTABLE is very simple:
> 
> method csdbBrowse:ForceStable
>    local rn := recno()
>    local rc := ::xbpBrowse:forceStable()
>    if recno() != rn .and. valtype(::refresh) == 'B'
>      eval(::refresh,,,self)
>      endif
> return rc
> 
> if I know which IVAR has a wrong state I can avoid
> ForceStable propagation.
> 
> Many thanks
> Claudio
> 
Hi Claudio,

I'm not sure if this will be of any use but I believe the xppBrowse 
Class is in the file xpp-browse.prg which should be located in your 
Documents\Xbase++\source\runtime\dui folder.  I am using a slightly 
newer build (1185) so the source may not match with your 1127 but in my 
xpp-browse.prg line 1473 is a line in the ForceStable method related to 
the vertical scroll bar...

        ::aRecNo[::nRowPos] := ::Eval( ::PhyPosBlock, self )

Hope this helps... Jonathan


jonathan.leeming@familycentre.org
Edmonton, Alberta, Canada
Claudio Driussi Re: XBPBROWSE:FORCESTABLE error
on Mon, 18 May 2020 18:09:21 +0200
On 18/05/20 17:57, Jonathan Leeming wrote:

> On 5/18/2020 2:56 AM, Claudio Driussi wrote:
>> Very very strange.
>>
>> In one of my apps I got an error in XBPBROWSE:FORCESTABLE only
>> in RDP only for one user, only for one function. 

...


> Hi Claudio,
> 
> I'm not sure if this will be of any use but I believe the xppBrowse 
> Class is in the file xpp-browse.prg which should be located in your 
> Documents\Xbase++\source\runtime\dui folder.

I have foundation subscription, so no "dui" folder.

> I am using a slightly 
> newer build (1185) so the source may not match with your 1127 but in my 
> xpp-browse.prg line 1473 is a line in the ForceStable method related to 
> the vertical scroll bar...
> 
>         ::aRecNo[::nRowPos] := ::Eval( ::PhyPosBlock, self )
> 
> Hope this helps... Jonathan

This helped!

I did this changes in my source code:

method csdbBrowse:ForceStable
   local rn := recno()
   local rc

   if empty(::aRecNo) .or. ::nRowPos < 1
     return self
     endif

   rc := ::xbpBrowse:forceStable()
   if recno() != rn .and. valtype(::refresh) == 'B'
     eval(::refresh,,,self)
     endif
return rc

I cannot test it because on my PC it worked, but now in
the same condition, it should work well.

Many thanks.

Claudio