Problemas con bSkip en xBrowse con array. (Solucionado)

Problemas con bSkip en xBrowse con array. (Solucionado)

Postby jrestojeda » Thu Jan 01, 2009 8:12 pm

Hola a todos.
Tengo un xBrowse con un Array de 100 posiciones inicializado con SPACE(20) las 100 posiciones tienen SPACE(20)
El problema es que cuando cargo el array con valores de una tabla DBF el xBrowse se llena completo con el valor del primer registro de la DBF. Solo el primer registro. Es decir en las 100 posiciones repite primer registro de la DBF y los demas registros de la DBF (Son 30 registros) no los muestra.
Supongo que es un problema con el bSkip.

El bSkip lo hago de la siguiente manera:
Code: Select all  Expand view
   oLbx1:bGoTop   :={||nItem1:=1 }
   oLbx1:bGoBottom:={||nItem1:=Len(VecImp)}
   oLbx1:bBookMark:={|nBkm| If( nBkm == nil, nItem1, nItem1:= nBkm ) }
   oLbx1:bSkip    :={|nSkip| Skipper2(VecImp,@nItem1,nSkip ) }


Y mi función Skipper es la siguiente:

Code: Select all  Expand view
Function Skipper2(Vector,nCur,nSkip)
Local nOld:=nCur
Default nSkip:= 1
nCur :=nCur + nSkip
IF nCur > LEN(Vector)
   nCur:= LEN(Vector)
ENDIF
IF nCur < 1
   nCur:= 1
ENDIF
Return nCur - nOld
//


Alguien tiene una idea de cual es la solución a este problema??
Desde ya muchas gracias. Y felíz año para todos.
Last edited by jrestojeda on Thu Jan 01, 2009 9:30 pm, edited 1 time in total.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Problemas con bSkip en xBrowse con array

Postby Daniel Garcia-Gil » Thu Jan 01, 2009 8:46 pm

puedes mostrar la funcion donde cargas el array con los datos de la dbf?
muestras las lineas de como armas el xbrowse
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Problemas con bSkip en xBrowse con array

Postby jrestojeda » Thu Jan 01, 2009 9:06 pm

Definición del xBrowse.

Code: Select all  Expand view
   ...
   ...
   REDEFINE GET oPro    VAR vPro           ID 104 OF oDlg1 PICTURE "######";
      VALID{|| CargaProveComras04(oLbx1)};
      FONT oFont1

   oLbx1:= TXBrowse():New(oDlg1)
   oLbx1:CreateFromResource(1000)
   oLbx1:nDataType          :=0

   oLbx1:AddCol():bEditValue    :={ || VecCom[nItem1] }
   oLbx1:aCols[ 1]:nWidth       :=120
   oLbx1:aCols[ 1]:cHeader      :="Comprobante"

   oLbx1:SetArray(VecCom,.t.)

   oLbx1:bGoTop   :={||nItem1:=1 }
   oLbx1:bGoBottom:={||nItem1:=Len(VecImp)}
   oLbx1:bBookMark:={|nBkm| If( nBkm == nil, nItem1, nItem1:= nBkm ) }
   oLbx1:bSkip    :={|nSkip| Skipper2(VecCom,@nItem1,@nSkip ) }
   ...
   ...


Funcion cuando cargo el Array.

Code: Select all  Expand view
Function CargaProveComras04(oLbx1)
Local Q

Q:=0

IF (nNextArea:=DbfArea())<>-1
   cAliasPro:=5-LEN(ALLTRIM(STR(nNextArea)))
   cAliasPro:=LEFT(cFileName("PROVEEDO"),5)+REPLI("0",cAliasPro)+ALLTRIM(STR(nNextArea))

   USE PROVEEDO ALIAS (cAliasPro) NEW
   DATABASE oDbfPro
   oDbfPro:GoTop()
   oDbfPro:SetOrder(1)
   oDbfPro:bEoF:=nil

   oDbfPro:Seek(vPro)
   IF !oDbfPro:Eof()
      vNom:=oDbfPro:NOMBRE
      oNom:Refresh()
      oDbfPro:CLOSE()

      IF (nNextArea:=DbfArea())<>-1
         cAliasCta:=5-LEN(ALLTRIM(STR(nNextArea)))
         cAliasCta:=LEFT(cFileName("CTAPRO"),5)+REPLI("0",cAliasCta)+ALLTRIM(STR(nNextArea))

         USE CTAPRO ALIAS (cAliasCta) NEW
         DATABASE oDbfCta
         oDbfCta:GoTop()
         oDbfCta:SetOrder(1)
         oDbfCta:bEoF:=nil

         DO WHILE !oDbfCta:Eof()
            Q++
            DO CASE
               CASE oDbfCta:TIPOCOMP=1
                  VecCom[Q]:="F "+oDbfCta:LETRA+" "+STRZERO(oDbfCta:PUNTO,4,0)+"-"+STRZERO(oDbfCta:NUMERO,8,0)
               CASE oDbfCta:TIPOCOMP=2
                  VecCom[Q]:="D "+oDbfCta:LETRA+" "+STRZERO(oDbfCta:PUNTO,4,0)+"-"+STRZERO(oDbfCta:NUMERO,8,0)
               CASE oDbfCta:TIPOCOMP=3
                  VecCom[Q]:="C "+oDbfCta:LETRA+" "+STRZERO(oDbfCta:PUNTO,4,0)+"-"+STRZERO(oDbfCta:NUMERO,8,0)
            ENDCASE

            IF Q=100
               EXIT
            ENDIF
         ENDDO
         oLbx1:GoTop()
         oLbx1:Refresh()
         oDbfCta:CLOSE()
      ELSE
         MsgStop("No puede abrir más archivos, cierre algún área de trabajo","Atención")
         Return .f.
      ENDIF
      Return .t.
   ELSE
      vNom:=SPACE(30)
      oNom:Refresh()
      MsgInfo("El código de proveedor ingresado no existe","Atención")
      oDbfPro:CLOSE()
      Return .f.
   ENDIF
ELSE
   MsgStop("No puede abrir más archivos, cierre algún área de trabajo","Atención")
   Return .f.
ENDIF
Return nil
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: Problemas con bSkip en xBrowse con array

Postby jrestojeda » Thu Jan 01, 2009 9:19 pm

Solucionado!!!

Me faltaba el oDbfCta:Skip() cuando cargaba el vector!!!

Serán los efectos del jolgorio del año nuevo!!! jejejeje
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 80 guests