Error al volver de un Report

Post Reply
JoseLuis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Error al volver de un Report

Post by JoseLuis »

Muy buenas

Me ocurre algo que no entiendo, llamo a un report desde una barra, el report me lo lo hace correcto, y sin embargo al volver al dialogo del xbrowse desde el que lo llamé, éste no me responde, es más, intento volver a llamar al report y no hace nada. no sé si es que se quedan las bases de datos pilladas o qué.

Code: Select all | Expand

//------------------------------
Static function Listarutas(aAlias)
local oreport
local oFont1, oFont2
local ctitle:= "LISTADO DE RUTAS POR POBLACION"
Dbselectar(aAlias[2])
(aAlias[2])->(Dbgotop())
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0,-10 BOLD 
DEFINE FONT oFont2 NAME "ARIAL" SIZE 0,-8      
        REPORT oReport ;
                TITLE  ctitle,  ;
                        "",;
                "" ;
            FONT   oFont1,;
                oFont2 ;
            HEADER "Página: "+str(oReport:nPage,3) ;
        CENTERED ;
            PREVIEW

                COLUMN TITLE "RUTA"          DATA "  "
                COLUMN TITLE "POBLACION"     DATA (aAlias[2])->cNommun
                COLUMN TITLE "CONDUCTOR"     DATA (buscaconduc((aAlias[2])->Ruta,aAlias)) size 35
                GROUP ON (aAlias[2])->Ruta ;
                HEADER "Ruta "+(aAlias[2])->Ruta+' '+buscanombre((aAlias[2])->Ruta,aAlias);
                FOOTER "Total Poblaciones "+ltrim(str(oReport:aGroups[1]:nCounter)) 
        END REPORT
        IF oReport:lCreated
            oReport:aColumns[1]:bDataFont := {|| 2 }
            oReport:aColumns[2]:bDataFont := {|| 2 }
            oReport:aColumns[3]:bDataFont := {|| 2 }
        ENDIF
                oReport:oDevice:SetPortrait()   
                oReport:oDevice:lPrvModal:=.t.   
        ACTIVATE REPORT oReport for (aAlias[2])->Ruta <> space(2)
oFont1:End()
oFont2:End()
oReport:End()
Dbselectar(aAlias[29])
(aAlias[29])->(Dbgotop())
return nil
//------------
static function buscanombre(recibe,aAlias)
local rnombre
(aAlias[29])->(Dbseek(recibe))
rnombre:=alltrim((aAlias[29])->nRuta)
return rnombre
//----------
static function buscaconduc(recibe,aAlias)
local rnombre
(aAlias[29])->(Dbseek(recibe))
rnombre:=alltrim((aAlias[29])->Nombre)
return rnombre
 
--------------------------
Saludos

Jose Luis
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Error al volver de un Report

Post by karinha »

Porque no llamas el indice del .cdx, en vez del área?

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
JoseLuis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Error al volver de un Report

Post by JoseLuis »

Hola Joao

Previamente he abierto las bases de datos con sus índices

Code: Select all | Expand

  dbUseArea(.T.,,Publicas:cUnidad+"MUNICI",aAlias[2],.T.)
  (aAlias[2])->(ordSetfocus("Ruta"))
  (aAlias[2])->( dbGotop() )
  dbUseArea(.T.,,Publicas:cUnidad+Publicas:cSubd+"\Ruta",aAlias[29],.T.)
  (aAlias[29])->(OrdSetFocus("Ruta"))
  (aAlias[29])->( dbGotop() )
 
He visto que el problema surje porque llamo a otras bases de datos durante el report
En esta Linea:

Code: Select all | Expand

  COLUMN TITLE "CONDUCTOR"     DATA (buscaconduc((aAlias[2])->Ruta,aAlias)) size 35
Que llamo a la fucción buscaconduc

y en esta:

Code: Select all | Expand

                HEADER "Ruta "+(aAlias[2])->Ruta+' '+buscanombre((aAlias[2])->Ruta,aAlias);
                FOOTER "Total Poblaciones "+ltrim(str(oReport:aGroups[1]:nCounter)) 
 
Que llamo a la function buscanombre

Estas funciones las he puesto al principio
--------------------------
Saludos

Jose Luis
JESUS MARIN
Posts: 178
Joined: Wed Jan 02, 2019 8:36 am

Re: Error al volver de un Report

Post by JESUS MARIN »

Buenas tardes José Luis

Para evitar ese problema, (el llamar a una función que desarrollé para otra cosa y no se que tabla tengo abierta, etc....), lo que hago es lo siguiente :

Code: Select all | Expand

FUNCTION Nombre_de_la_funcion( ... parametros )

LOCAL xArea := Select()

..... resto de mi función


DBSelectArea(xArea)
RETURN( nil o lo que devuelva esta función)
 
De esta manera siempre devuelvo el control al área del que fué llamado.
Espero te ayude

Jesús Marín
Valencia - España
Jesús Marín
deumare@gmail.com

Mi especialidad en programación : Virtualidad real ( en vez de la realidad virtual ) ;)
Post Reply