FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour como cargar una selecci贸n de xbrowse en un array SOLUCIONADO
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
como cargar una selecci贸n de xbrowse en un array SOLUCIONADO
Posted: Mon May 25, 2020 12:20 AM
Hola otra vez recurro a Uds porque no puedo solucionar este c贸digo
sigo con el mismo ejemplo, lo que no puedo es cargar la selecci贸n del xbrowse en un array

Code (fw): Select all Collapse
function asocio1(aElectro, nclia)
local oFac, odlg1
local z , n
local aItems := array(0)
聽aFacpago := Array(0)



if !pasaje("factura");return nil;endif
聽 聽database oFac
聽 聽oFac:setorder(3)


聽 聽oFac:ordscope(0,nclia)
聽 聽oFac:ordscope(1,nclia)

聽 聽//oFac:gotop() 聽 */
聽 聽// 聽oFac:setfilter("paga" != "S" .and. "nota" != "C" .)

聽 聽//FW_DbfToArray ( cFieldList, bFor, bWhile, nNext, nRec, lRest, aData )


聽 聽//aRows := FW_DbfToArray( "DATE,TERMINAL,VALUE", { || FIELD->DATE = dDate } )
聽 聽aItems := fw_dbftoarray("fechida,nota,nrofac,Importe,tipofac",{|| 聽paga != "S" .and. nota != "C"})
聽 聽oFac:deactivate()



聽 聽xbrNumFormat( "E", .T. )

聽 聽DEFINE DIALOG odlg1 resource "DIA_ASOCIO1"

聽 聽redefine xBrowse oBrw Of odlg1 array aItems ; 聽 聽 聽 聽 聽 聽 聽 // 聽 聽 聽 聽 聽 聽 Columns 'fechida','nrofac','Importe' 聽;
聽 聽 聽 聽 聽 聽 聽columns {1,2,3,4};
聽 聽 聽 聽 聽 聽 聽Headers 'Fecha','nota','N煤mero', 'Abona';
聽 聽 聽 聽 聽 聽 聽JUSTIFY 聽, .T., .T.,.T.;
聽 聽 聽 聽 聽 聽 聽ColSizes 80,40,120,180 id 101 聽UpDate Cell AutoSort



聽 聽 With Object oBrw:InsCol(1)
聽 聽 聽 聽 :bEditValue 聽 聽:= { || AScan( oBrw:aSelected, oBrw:BookMark ) > 0 }
聽 聽 聽 聽 :SetCheck()
聽 聽 聽 聽 :nHeadBmpNo 聽 聽:= { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
聽 聽 End

聽 聽WITH OBJECT oBrw
聽 聽 聽 :lDisplayZeros := .F.
聽 聽 聽 :nMarqueeStyle := MARQSTYLE_HIGHLROWRC
聽 聽 聽 :nStretchCol := STRETCHCOL_WIDEST
聽 聽 聽 :bClrStd := { || { CLR_BLACK, Colores(oBrw:aRow[2]) } }
聽 聽 聽 :lColDividerComplete := .T.
聽 聽 聽 :lAllowColHiding := .F.
聽 聽 聽 :lRecordSelector := .F.

聽 聽END WITH





聽 聽 oBrw:bLClicked := { |r,c,f,oBrw| If( oBrw:MouseColPos( c ) == 1 , ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽If( ( f := AScan( oBrw:aSelected, oBrw:BookMark ) ) == 0, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽AAdd( oBrw:aSelected, oBrw:BookMark ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ADel( oBrw:aSelected, f, .t. ) ), Nil ), ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽oBrw:RefreshCurrent() }

聽 聽ACTIVATE DIALOG odlg1 ON INIT oBrw:gobottom()

聽 
if LEN(oBrw:aSelected) > 0
聽 聽? Len(oBrw:aselected) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (1)

FOR EACH z IN (oBrw:aSelected)
聽 聽? oBrw:aArrayData[z,1] 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽(2)
聽 聽? oBrw:aArrayData[z,2] 
聽

聽 聽AAdd(aFacpago,{oBrw:aArrayData[z,1] ,oBrw:aArrayData[z,2],oBrw:aArrayData[z,3],oBrw:aArrayData[z,4],oBrw:aArrayData[z,5]})

NEXT
聽? Len(aFacpago) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (3)
聽 聽FOR EACH z IN aFacpago
聽 聽 聽 ? aFacpago[z,1] 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (4)
聽 聽NEXT 聽 
endif 聽 聽 聽 
return aFacpago



(1) muestra correctamente las filas seleccionados
(2) muestra correctamente los datos recorridos
(3) muestra correctamente la cantidad de elementos del array
(4) ac谩 da este error

Error description: Error BASE/1068 Error de argumento: acceso al array
Args:
[ 1] = A { ... } length: 2
[ 2] = A { ... } length: 4

Stack Calls
===========
Called from: megandc1.prg => ASOCIO1( 2005 )
Called from: megandc1.prg => FACELECTRO( 1543 )

Indudablemente no entiendo como trabaja oBrw:aArrayData

Gracias por su atenci贸n

Luis
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: como cargar una selecci贸n de xbrowse en un array
Posted: Mon May 25, 2020 12:49 AM
Prueba a imprimir, en lugar de

? aFacpago[z,1]


Pon

? z[ 1 ]

Qu茅 te aparece?
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: como cargar una selecci贸n de xbrowse en un array
Posted: Mon May 25, 2020 02:00 AM
queda as铆

Code (fw): Select all Collapse
   aFacpago :=  asocio1(aElectro,aCliente:nclia)
   for each z in aFacpago
      ?  z[1]                                                (1)
   next


/////////
function asocio1(aElectro, nclia)

if LEN(oBrw:aSelected) > 0
 

FOR  z = 1 to len(oBrw:aSelected)
 
 
   AAdd(aFacpago,{oBrw:aArrayData[z,1] ,oBrw:aArrayData[z,2],oBrw:aArrayData[z,3],oBrw:aArrayData[z,4],oBrw:aArrayData[z,5]})

NEXT
 
   FOR z = 1 to Len(aFacpago)                       (2)
       aFacpago[z,  1 ] 
   NEXT
endif
return  aFacpago


(1) es La linea 1544

Error occurred at: 24/05/2020, 22:42:39
Error description: Error BASE/1132 Error de rango: acceso al array
Args:
[ 1] = U
[ 2] = N 7362366

Stack Calls
===========
Called from: => __DBGVMVARLGET( 0 )
Called from: .\source\function\HARBOUR.PRG => HB_DBG_VMVARLGET( 9 )
Called from: .\source\function\HARBOUR.PRG => GETLOCAL( 197 )
Called from: .\source\function\ERRSYSW.PRG => ERRORDIALOG( 275 )
Called from: .\source\function\ERRSYSW.PRG => (b)ERRORSYS( 23 )
Called from: megandc1.prg => FACELECTRO( 1544 )
Called from: megandc1.prg => (b)NDEBITO( 252 )

(2) Aqu铆 funciona

??????
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: como cargar una selecci贸n de xbrowse en un array
Posted: Mon May 25, 2020 02:11 AM

No funciona porque no hab铆a puesto

return aFacpago

Continue the discussion