FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Una ayuda
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Una ayuda
Posted: Mon Apr 13, 2009 05:55 PM

Hola a todos
Voy a hacer el planteamiento que hice antes y al que no le encuentro solución.

Alguien ha hecho un scope a una tabla,( OrdScope(0,xValor) OrdScope(1,xValor) ), la ha presentado con Xbrowse y le ha funcionado bien?
Si es así me podríais indicar como lo habeis hecho para corregir mi módulo?

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 161
Joined: Wed Jan 25, 2006 10:45 AM
Re: Una ayuda
Posted: Mon Apr 13, 2009 07:41 PM

Pedro :
Funciona bien ;)
Ahora es comun tener "problemas" de refresco, normalmente
hago un ( OrdScope(0,"") OrdScope(1,"") ) antes de "scopear" la tabla.
Despues deberas hacer un oBrw:Refresh() y si es necesario un oBrw:Gotop()

Saludos

Ricardo R.

xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Una ayuda
Posted: Mon Apr 13, 2009 07:56 PM

Mi problema no es ese Ricardo
Es que si pido 20 registros a la tabla (del 1 al 20) me los presenta bien, pero cuando bajo el cursor hacia el registro 21, tambien lo presenta y los sucesivos. Eso es lo que no averiguo

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Una ayuda
Posted: Mon Apr 13, 2009 08:14 PM

Pedro

Podrias colocar un ejemplo que represente el problema que tienes por favor

Posts: 161
Joined: Wed Jan 25, 2006 10:45 AM
Re: Una ayuda
Posted: Mon Apr 13, 2009 08:17 PM
Pedro

Podrias colocar un ejemplo que represente el problema que tienes por favor


Si eso mismo :-)
Saludos

Ricardo R.

xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Una ayuda
Posted: Tue Apr 14, 2009 07:17 AM
Code (fw): Select all Collapse
* ------------------------------------------------------------------
FUNCTION FiltraVarIva(aVarIva, aOpcion,oDlg)
* ------------------------------------------------------------------
Local aPie[9] 
Local nIni , nFin
   AFILL(aPie,0)  
   oDlg:End()
   
   Do Case
      Case aOpcion[3] == 1
           FIVA->(OrdSetFocus(1))
           FIVA->(dbGotop())
           FIVA->(OrdScope(0,aVarIva[1]))
           FIVA->(OrdScope(1,aVarIva[2]))
           
      Case aOpcion[3] == 2
           FIVA->(OrdSetFocus(2))
           FIVA->(dbGotop())
           FIVA->(ordScope(0,aVarIva[3]))
           FIVA->(ordScope(1,aVarIva[4]))
           
       Case aOpcion[3] == 3
           FIVA->(OrdSetFocus(3))
           FIVA->(dbGotop())
           FIVA->(ordScope(0,aVarIva[5]))
           FIVA->(ordScope(1,aVarIva[6]))

   EndCase
   FIVA->(dbGotop())
   While FIVA->(!Eof())
         aPie[1] += FIVA->(FieldGet(09)) 
         aPie[2] += FIVA->(FieldGet(11))
         aPie[3] += FIVA->(FieldGet(13))
         aPie[4] += FIVA->(FieldGet(14))
         aPie[5] += FIVA->(FieldGet(16))
         aPie[6] += FIVA->(FieldGet(18))
         aPie[7] += FIVA->(FieldGet(19))
         aPie[8] += FIVA->(FieldGet(20))
         aPie[9] += FIVA->(FieldGet(21)) 
         FIVA->(dbSkip())
   EndDo 
   FIVA->(dbGotop())
   If aOpcion[1] == 1 
      PantFraIva(aVarIva,aOpcion,oDlg,aPie)
   Else
      ImprFraIva(aVarIva,aOpcion,oDlg)
   EndIf   
   FIVA->(OrdScope(0,nil))
   FIVA->(OrdScope(1,nil))
                
Return nil

*-------------------------------------------------------------------------------
FUNCTION PantFraIva(aVarIva,aOpcion,oDlg,aPie)
*-------------------------------------------------------------------------------            
Local oWnd,oBar 
Local oSay[3]
Local oBrw 
Local cTexto1 := "Listado de Facturas "+If (aOpcion[2]= 1,"Emitidas","Recibidas")
Local cTexto2 := aDatEmp[2]+" "+Str(aDatEmp[7])



*   oDlg:End()
*   FIVA->(dbGotop())
   
   DEFINE WINDOW oWnd  MDICHILD of oWmain FONT oFont ;
          TITLE cTexto1
   DEFINE BUTTONBAR oBar1 OF oWnd SIZE 60, 50 2007
    
   DEFINE BUTTON OF oBar1 ACTION oWnd:End() ;
    RESOURCE "Salir" PROMPT "Salir" TOOLTIP "Salir de esta pantalla"
                                         
   oBrw = TXBrowse():New( oWnd ) 
   oBrw:nColDividerStyle     := LINESTYLE_BLACK
   oBrw:nRowDividerStyle   := LINESTYLE_BLACK
   oBrw:lRecordSelector      := .t.
   oBrw:nHeaderLines        := 1
   oBrw:nDataLines           := 1
   oBrw:nRowSel               := 1
   oBrw:nMarqueeStyle      := 5 
   oBrw:bClrSelFocus        := {||{RGB(255,204,204),RGB(176,196,222 )}}
   oBrw:cAlias := "FIVA"
   oBrw:bClrStd := {|| { nRGB( 0, 0, 51), nRGB(204,204,102) } } // colores para lineas normales 
   oBrw:bClrSel := {|| { nRGB(0,0,0), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco 
   oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(153,204,255) } } // para barra de linea selecc cuando el control tiene el foco 
   oBrw:lFooter := .t. 
   oBrw:lFastEdit  := .F.
   oBrw:nFreeze := 5 
   oBrw:CreateFromCode()
        
   
   For n := 22 to Len(oBrw:aCols())
       oBrw:DelCol(n)
       If(n > 22, n:= 22, n)
       If n = Len(oBrw:aCols())
          oBrw:DelCol(n)
          exit
       EndIf   
       sysrefresh()
   EndFor    
   oBrw:aCols[5]:cFooter := "Totales..."
   oBrw:aCols[09]:cFooter := Transform(aPie[1],"9,999,999.99")
   oBrw:aCols[11]:cFooter := Transform(aPie[2],"9,999,999.99")
   oBrw:aCols[13]:cFooter := Transform(aPie[3],"9,999,999.99")
   oBrw:aCols[14]:cFooter := Transform(aPie[4],"9,999,999.99")
   oBrw:aCols[16]:cFooter := Transform(aPie[5],"9,999,999.99")
   oBrw:aCols[18]:cFooter := Transform(aPie[6],"9,999,999.99")
   oBrw:aCols[19]:cFooter := Transform(aPie[7],"9,999,999.99")
   oBrw:aCols[20]:cFooter := Transform(aPie[8],"9,999,999.99")
   oBrw:aCols[21]:cFooter := Transform(aPie[9],"9,999,999.99")
   oWnd:oClient := oBrw 
                 
   

   ACTIVATE Window oWnd Maximized;
        ON INIT oBrw:SetFocus();
        valid(dbCloseAll(),.t.)
   SysRefresh() 
  
Return( nil )

Este es el módulo que me trae de cabeza. Despues de un dialogo donde se solicitan los datos para presentar o imprimir, al pulsar el boton aceptar del dialogo, lo envio a una funcion de comprobacion de los datos y de ésta a la funcion filtrariva que es la primera que teneis. Supuestamente en esa funcion (filtrariva) el scope funciona, pues los datos del pie, son buenos, y cuando pasa a la funcion pantfraiva el browse se genera y presenta bien los datos (siempre y cuando no superen la ventana del browse) pero una vez que has recorrido los datos visibles, llega la sorpresa, el resto de los datos tambien son presentados (el resto de los datos son aquellos que deben estar fuera del scope), y ese es mi problema
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Una ayuda
Posted: Tue Apr 14, 2009 08:26 AM
Pedro...

Te dejo un ejemplo basico y sencillo... por favor trata de repoducir tu error en el mismo y publicalo... a mi no me genra ningun error

la base de datos que usa es la encontrada en los samples de FWH

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "xbrowse.ch"


REQUEST DBFCDX

procedure main()

local oBrw, oWnd
   CheckCustCdx()


   USE CUSTOMER NEW SHARED VIA "DBFCDX"
   SET ORDER TO TAG SALARY
   customer->( OrdSetFocus(10) )
   customer->( dbgotop() )
   customer->(OrdScope(0,50000))
   customer->(OrdScope(1,57800))
   customer->( dbgotop() )

   DEFINE WINDOW oWnd title "Change Edit font xbrowse"
   
  
   oBrw := TxBrowse():New( oWnd )

   oBrw:cAlias := "customer"
  
     oBrw:CreateFromCode()  
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd

return

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

static function CheckCustCdx()

   local n

   if File( "customer.cdx" )
         FErase( "customer.cdx" )
   endif

   if !File( "customer.cdx" )
      USE CUSTOMER EXCLUSIVE VIA "DBFCDX"
      for n := 1 to FCount()
         CreateTag( FieldName( n ) )
      next
      USE
   endif

return nil

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

static function CreateTag( ctag )

   INDEX ON &ctag TAG &ctag

return nil

//----------------------------------------------------------------------------//
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Una ayuda
Posted: Tue Apr 14, 2009 08:46 AM
Creo que no me he explicado Daniel
El módulo al compilar y ejecutarse, no da ningun error, funciona. Lo que no funciona es el scope, que se salta su ámbito.
Para explicarme mejor.
Imagínate que en el dialogo tu escoges visualizar las facturas emitidas por registro. En los datos DESDE HASTA insertas 1 y 25 respectivamente, haces un scope a la tabla con su indice por registro desde el 1 al 25
Code (fw): Select all Collapse
FIVA->(ordSetFocus(1))----> indice por registro
         FIVA->(dbGotop())----> nos vamos al inicio de la tabla
         FIVA->(OrdScope(0,nInicio))-----> nInicio vale 1
         FIVA->(OrdScope(1,nFin))-------> nFin vale 25
         Y ahora hacemos el Browse

Pues bien, al pintarse el browse nos aparecen los registros del 1 al 25, perfecto, pero cuando llegas al 25 y haces un Down() al Browse....¡¡¡¡¡Aparece el 26!!!! y así sucesivamente cada vez que haces un Down.
Si hay un Scope, un filtro, el 26 no debe aparecer, el 25 es el fin de la tabla en el scope. De todas formas compilaré tu ejemplo a ver si se salta el scope. Te digo algo en cuanto lo tenga
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Una ayuda
Posted: Tue Apr 14, 2009 10:35 AM

He compilado tu ejemplo Daniel, y funciona OK, mi pregunta ahora sería, ¿es por culpa de la tabla?. Fue creada con clipper.
Haré una comprobación creando una tabla idéntica, le pasaré los datos y comprobaré si el scope hace lo mismo.

Pues hace lo mismo, presenta bien el scope, pero se lo salta a la torera. En cuanto pasas a un registro que no pertenece al ámbito del scope, lo presenta.

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO

Continue the discussion