Page 1 of 1

xBrowse and lMergeVert sporadic error

PostPosted: Tue Jun 24, 2014 8:16 pm
by mtajkov
If I use oBrw: lMergeVert =. t. appears sporadically error:

Error BASE/1132 Bound error: array access
Parameter :
[ 1] = A { ... }
[ 2] = N 6

Stack-List
----------
called by TXBRWCOLUMN:MERGEAREA(11782)
called by TXBRWCOLUMN:PAINTCELL(10042)
called by TXBRWCOLUMN:PAINTDATA(9668)
called by TXBROWSE:PAINT(1474)
called by TXBROWSE:DISPLAY(1288)
called by TCONTROL:HANDLEEVENT(1690)
called by TXBROWSE:HANDLEEVENT(11754)
called by _FWH(3177)
called by DIALOGBOX(0)
called by TDIALOG:ACTIVATE(270)
called by USTAZBR(133)
called by (b)MAIN(277)
called by TBTNBMP:CLICK(465)
called by TBTNBMP:LBUTTONUP(656)
called by TCONTROL:HANDLEEVENT(1714)
called by TBTNBMP:HANDLEEVENT(1408)
called by _FWH(3177)
called by WINRUN(0)
called by TMDIFRAME:ACTIVATE(990)
called by MAIN(350)
CPU type: Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz -412317 Mhz
Hardware memory: 3327 MB ( available: 1732 MB )

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 9382)
FiveWin Version: FWHX 12.08
Windows version: 6.1, Build 7601 Service Pack 1

Does anyone know the cause?

Regards,
Milos

Re: xBrowse and lMergeVert sporadic error

PostPosted: Tue Jun 24, 2014 8:30 pm
by nageswaragunupudi
This can happen if any row is added during runtime.
If a row is added or deleted, we should call oCol:WorkMergeData() and oBrw:Refresh().

In case you are browsing DBF it is desirable to SET FILTER TO !DELETED() so that oBrw:keyNo() always returns a correct value.

Re: xBrowse and lMergeVert sporadic error

PostPosted: Tue Jun 24, 2014 9:01 pm
by mtajkov
I do not add row or delete it, if I try use oCol:WorkMergeData() I have a new error:

Error BASE/1004 Class: 'NIL' has no exported method: EVAL
Parameter :
[ 1] = U

Stack-List
----------
called by EVAL(0)
called by TXBRWCOLUMN:WORKMERGEDATA(11714)
called by USTAZBR(62)
called by (b)MAIN(277)
called by TBTNBMP:CLICK(465)
called by TBTNBMP:LBUTTONUP(656)
called by TCONTROL:HANDLEEVENT(1714)
called by TBTNBMP:HANDLEEVENT(1408)
called by _FWH(3177)
called by WINRUN(0)
called by TMDIFRAME:ACTIVATE(990)
called by MAIN(350)

Regards,
Milos

Re: xBrowse and lMergeVert sporadic error

PostPosted: Tue Jun 24, 2014 10:01 pm
by nageswaragunupudi
Line 11714 is Eval( ::oBrw:bGoTop ) and this can not be NIL, unless this method is called before setting the browse completely.
I hope when you call oCol:WorkMergeData, the browse is already visible on the screen.

Re: xBrowse and lMergeVert sporadic error

PostPosted: Wed Jun 25, 2014 6:04 am
by mtajkov
This my code:
Code: Select all  Expand view
#include "FiveWin.ch"
#include "dtpicker.ch"
#include "calendar.ch"

//----------------------------------------------------------------------------//

function TestGrp()

Private mDatum, oBrwZbr

USE RptStaZbr NEW
  DBCREATEINDEX("RptStaZbr","Naziv",{|| Naziv})

USE Inf_Firma SHARED VIA "SQLRDD" NEW

    DbSelectArea("Inf_Firma")

        do while ! eof()
     
                cComp=Inf_Firma->Naziv
        cSta=Inf_Firma->Firma_Id+"_STANJE"
        USE &cSta SHARED VIA "SQLRDD" NEW

        DbSelectArea("Inf_Firma")
   
        skip
        enddo

    mDatum    = date()
    mDTPicker = date()


  DEFINE DIALOG oDlg RESOURCE "NADANZBR"
 
  REDEFINE CALENDAR oDTPicker VAR mDTPicker ID 4002;
              ON CHANGE (mDatum:= oDTPicker:GetDate(),oDatum:refresh()) UPDATE

  REDEFINE GET oDatum VAR mDatum ID 101 OF oDlg;
                FONT oFont

   REDEFINE XBROWSE oBrwZbr ID 4003 ALIAS "RptStaZbr" ;
        FONT oFontBrw;
        OF oDlg


       oCol := oBrwZbr:AddCol()
       oCol:bStrData  := { || RptStaZbr->Naziv}
       oCol:cHeader   := "Naziv"
       oCol:nWidth    := 220
       oCol:nHeadStrAlign := AL_CENTER
       oCol:nDataStrAlign := AL_LEFT
       oCol:oDataFont := oFontBrw
       oCol:lMergeVert := .t.
   *        oCol:WorkMergeData()

       oCol := oBrwZbr:AddCol()
       oCol:bStrData  := { || RptStaZbr->Banka}
       oCol:cHeader   := "Banka"
       oCol:nWidth    := 200
       oCol:nHeadStrAlign := AL_CENTER
       oCol:nDataStrAlign := AL_LEFT
       oCol:oDataFont := oFontBrw

       oCol := oBrwZbr:AddCol()
       oCol:bStrData  := { || RptStaZbr->Racun}
       oCol:cHeader   := "Račun"
       oCol:nWidth    := 140
       oCol:nHeadStrAlign := AL_CENTER
       oCol:nDataStrAlign := AL_LEFT
       oCol:oDataFont := oFontBrw

       oCol:= oBrwZbr:AddCol()
       oCol:bEditValue := { || RptStaZbr->Iznos }
       oCol:cEditPicture := '@E 999,999,999.99'
       oCol:cHeader   := "Iznos"
       oCol:bClrHeader    := { || { RGB( 255, 255, 255 ), nRGB( 203, 225, 252 ), nRGB( 255, 255, 220 ) } }
       oCol:bClrFooter    := { || { RGB( 255, 255, 255 ), nRGB( 203, 225, 252 ), nRGB( 255, 255, 220 ) } }
       oCol:bClrGrad :={ || {{ 0.4 , nRGB( 0, 160, 160 ), nRGB( 0, 180, 180 ) },{ 0.6, nRGB( 0, 180, 180 ),nRGB( 0, 160, 160 ) } } }
       oCol:nHeadStrAlign := AL_CENTER
       oCol:nDataStrAlign := AL_RIGHT
       oCol:nFootStrAlign := AL_RIGHT
       oCol:nWidth        := 110
       oCol:lTotal        := .t.
       oCol:nTotal        := 0
       oCol:oDataFont := oFontBrw

       oCol := oBrwZbr:AddCol()
       oCol:AddResource("OFF")
       oCol:AddResource("ON")
       oCol:cHeader   := " "
       oCol:bBmpData  := { || iif( RptStaZbr->Iznos < 0 ,1,2) }
       oCol:oDataFont := oFontBrw


           oBrwZbr:lMergeVert          := .t.
       oBrwZbr:nMarqueeStyle       := 0
       oBrwZbr:nColDividerStyle    := LINESTYLE_BLACK
       oBrwZbr:nHeaderHeight       := 26
       oBrwZbr:lColDividerComplete := .t.
       oBrwZbr:nRowDividerStyle    := LINESTYLE_BLACK
       oBrwZbr:nHeaderLines        := 1
       oBrwZbr:nFooterLines        := 1
       oBrwZbr:nDataLines          := 1
       oBrwZbr:lFooter             := .t.
     

       REDEFINE BTNBMP oBtnDal ID 18 OF oDlg ;
            RESOURCE "Dalje" LEFT 2007 PROMPT " &Primeni ";
            ACTION (TestZbr(),oBrwZbr:MakeTotals(),oBrwZbr:Refresh(),oBrwZbr:SetFocus() )

       REDEFINE BTNBMP oBtnIzl ID 11 OF oDlg ;
            RESOURCE "Izlaz" LEFT 2007 PROMPT "   &Izlaz  ";
            ACTION (DBcloseAll(),oDlg:end())

  ACTIVATE DIALOG oDlg CENTERED ON INIT (TestZbr(),oBrwZbr:MakeTotals(),oBrwZbr:Refresh(),oBrwZbr:SetFocus())


DbCloseAll()

return nil


//----------------------------------------------------------------------------//

function TestZbr()

   local nErr

    DBSelectArea("RptStaZbr")
     zap

        DbSelectArea("Inf_Firma")
        DbGoTop()

            do while ! eof()

              mFirma_Id=Inf_Firma->Firma_Id
         
                cSta=Inf_Firma->Firma_Id+"_STANJE"

                   nErr := oSql:exec("SELECT Inf_Firma. Naziv, &cSta .Racun_Id, &cSta .Banka, &cSta .Racun, &cSta .Iznos"+;
                        " FROM Inf_Firma, &cSta"+;
                        " WHERE &cSta .Datum='" + dtos(mDatum) + "'"+;
                        " AND Inf_Firma. Firma_Id = '" + mFirma_Id + "'"+;
                        " GROUP BY Inf_Firma. Naziv, &cSta .Racun_Id, &cSta .Racun, &cSta .Iznos, &cSta .Banka",,.t.,,"RptStaZbr.dbf")

            DbSelectArea("Inf_Firma")
       

            skip
            enddo

return nil


What I quickly choose the date and press oBtnDal possibility of a mistake is higher. The error occurs when executing commands oBrwZbr:SetFocus().

Regards,
Milos

Re: xBrowse and lMergeVert sporadic error

PostPosted: Sat Jun 28, 2014 12:20 am
by nageswaragunupudi
When you use SQLRDD, OrdKeyNo() does not work. Consequently oBrw:KeyNo always returns 0. The feature of MergeVert does not work for SQLRDD.

If you use SQLRDD you can do basic browsing and many advanced features of xbrowse are not available.