Error al volver de un Report

Error al volver de un Report

Postby JoseLuis » Wed Mar 15, 2023 2:19 pm

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 view
//------------------------------
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
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Error al volver de un Report

Postby karinha » Wed Mar 15, 2023 2:32 pm

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
User avatar
karinha
 
Posts: 7384
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Error al volver de un Report

Postby JoseLuis » Wed Mar 15, 2023 3:22 pm

Hola Joao

Previamente he abierto las bases de datos con sus índices


Code: Select all  Expand view
 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 view
 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 view
               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
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Error al volver de un Report

Postby JESUS MARIN » Wed Mar 15, 2023 3:54 pm

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 view

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
JESUS MARIN
 
Posts: 175
Joined: Wed Jan 02, 2019 8:36 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: richard-service and 33 guests