Una ayuda

Una ayuda

Postby Pedro » Mon Apr 13, 2009 5: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
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

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

Re: Una ayuda

Postby Pedro » Mon Apr 13, 2009 7: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
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Postby Daniel Garcia-Gil » Mon Apr 13, 2009 8:14 pm

Pedro

Podrias colocar un ejemplo que represente el problema que tienes por favor
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Una ayuda

Postby Ricardo Ramirez E. » Mon Apr 13, 2009 8:17 pm

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

Re: Una ayuda

Postby Pedro » Tue Apr 14, 2009 7:17 am

Code: Select all  Expand view  RUN
* ------------------------------------------------------------------
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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

Postby Daniel Garcia-Gil » Tue Apr 14, 2009 8: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: Select all  Expand view  RUN
#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

//----------------------------------------------------------------------------//
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Una ayuda

Postby Pedro » Tue Apr 14, 2009 8: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: Select all  Expand view  RUN
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: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Una ayuda

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: SantaCroya and 55 guests