We keep recommending to use command syntax for creating XBrowse, if you want to use advanced features of XBrowse.
Use of bStrData was deprecated many years back. For example, please consider this code:
聽 聽 聽 聽 aCol[ 6]:bStrData 聽 聽 聽 聽 聽 := { || IF(oRsCxc:RecordCount() > 0,TRANSFORM(oRsCxc:Fields("CARIMP"):Value,"@Z 99,999,999.99"),SPACE(01))}
aCols[ 6 ]:nFooterType := AGGR_SUM
The column value is character value. It is obvious that XBrowse can not total character values. It requires numeric values to total.
Please replace your entire code with this code:
FWNumFormat( "A", .t. )
REDEFINE XBROWSE oBrw ID 201 OF oDlg;
聽 聽DATASOURCE oRsCxc ;
聽 聽COLUMNS "CARCAR", "CARCLI", "CLINOM", "CARFEC", "CARVIO", "CARIMP" ;
聽 聽HEADERS "Factura", "Cliente", "Nombre o Raz贸n Social", "Emisi贸n", "Vencimiento", "Saldo" ;
聽 聽COLSIZES 60,60,300,85,85 ;
聽 聽FOOTERS
// Your preferences
WITH OBJECT oBrw
聽 聽:l2007 聽 聽 聽 聽 聽 聽:= .f.
聽 聽:lHScroll 聽 聽 聽 聽 := .f.
聽 聽:nMarqueeStyle 聽 聽:= MARQSTYLE_HIGHLROWMS
聽 聽:nColDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽:nRowDividerStyle := LINESTYLE_LIGHTGRAY
聽 聽:nStretchCol 聽 聽 聽:= STRETCHCOL_WIDEST
聽 聽:bClrHeader 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽:bClrFooter 聽 聽 聽 := { || {CLR_WHITE,CLR_BLACK} }
聽 聽:bClrSel 聽 聽 聽 聽 聽:= {|| IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽:bClrSelFocus 聽 聽 := { || {oApp:nFClrFocus,oApp:nBClrFocus} }
聽 聽:bClrStd 聽 聽 聽 聽 聽:= {|| IF( oBrw:KeyNo % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
聽 聽:nRecSelColor 聽 聽 := oApp:nRowParClr
聽 聽//
聽 聽:lDisplayZeros 聽 聽:= .f. // zero values are not displayed. Added by GNRao. No need to use @Z
END
// Settings for Totals and Count
WITH OBJECT oBrw
聽 聽:aCols[ 5]:bFooter 聽 聽 聽 := { || Len( oBrw:aSelected ) }
聽 聽WITH OBJECT :aCols[ 6]
聽 聽 聽 :nFooterType 聽 聽 聽 聽 := AGGR_SUM
聽 聽 聽 :bSumCondition 聽 聽 聽 := { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽END
聽 聽 聽
聽 聽:bOnMultiSelect 聽 聽 聽 聽 := { || oBrw:MakeTotals() }
聽 聽:bChange 聽 聽 聽 聽 聽 聽 聽 聽:= { || IF( LEN( oBrw:aSelected ) <= 1, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽( oBrw:oCol(6):nTotal := oBrw:oCol(6):Value,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:oCol(6):RefreshFooter() ),NIL ) }
聽 聽 聽 聽
聽 聽:MakeTotals()
END
ACTIVATE DIALOG oDlg // <other clauses>
Please do not use this code. XBrowse automatically provides these codeblocks correctly.
oBrw:bGoTop 聽 聽:= { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveFirst(), ) }
oBrw:bGoBottom := { || IF( ! oRsCxc:BOF() .AND. ! oRsCxc:EOF(), oRsCxc:MoveLast(), ) }
oBrw:bBof 聽 聽 聽:= { || oRsCxc:BOF() }
oBrw:bEof 聽 聽 聽:= { || oRsCxc:EOF() }
oBrw:bBookMark := { | uBm | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( uBm == NIL, oRsCxc:BookMark, oRsCxc:BookMark := uBm ) ) }
oBrw:bKeyNo 聽 聽:= { | n | IF( oRsCxc:BOF() .AND. oRsCxc:EOF(), 0, IF( n == NIL, oRsCxc:AbsolutePosition, oRsCxc:AbsolutePosition := n ) ) }
oBrw:bKeyCount 聽:= {|| oRsCxc:RecordCount() }
oBrw:SetAdo(oRsCxc)
oBrw:CreateFromResource(201)
Please try this and provide your feedback.