Una ayuda

Post Reply
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Una ayuda

Post by Pedro »

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
User avatar
Ricardo Ramirez E.
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde
Contact:

Re: Una ayuda

Post by Ricardo Ramirez E. »

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
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Post by Pedro »

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
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Una ayuda

Post by Daniel Garcia-Gil »

Pedro

Podrias colocar un ejemplo que represente el problema que tienes por favor
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Ricardo Ramirez E.
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde
Contact:

Re: Una ayuda

Post by Ricardo Ramirez E. »

Pedro

Podrias colocar un ejemplo que represente el problema que tienes por favor
Si eso mismo :D
Saludos
Ricardo R.
xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Post by Pedro »

Code: Select all

* ------------------------------------------------------------------
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
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Una ayuda

Post by Daniel Garcia-Gil »

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: Select all

#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

//----------------------------------------------------------------------------//
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Post by Pedro »

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: Select all

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
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Post by Pedro »

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
Post Reply