FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problemas con bSkip en xBrowse con array. (Solucionado)
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Problemas con bSkip en xBrowse con array. (Solucionado)
Posted: Thu Jan 01, 2009 08: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:
   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:

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.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Problemas con bSkip en xBrowse con array
Posted: Thu Jan 01, 2009 08:46 PM

puedes mostrar la funcion donde cargas el array con los datos de la dbf?
muestras las lineas de como armas el xbrowse

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Problemas con bSkip en xBrowse con array
Posted: Thu Jan 01, 2009 09:06 PM
Definici贸n del xBrowse.

   ...
   ...
   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.

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
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Problemas con bSkip en xBrowse con array
Posted: Thu Jan 01, 2009 09: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

Continue the discussion