Problemas al exportar cuadro

Hola, al inciar una pantalla elimino todos los cuadros con eliminar_dep, luego si filtro los datos y agrego el cuadro correspondiente con agregar_dep, el cuadro aparece y los datos tambien, pero al momento de exportarlo a Excel, el contenido del archivo excel solo dice No hay datos cargados. Que puede ser? (el set_Datos se hace en el conf del cuadro)
Muchas gracias.

Saludos.

Agustin.-

Hola Agustín, creo que el problema puede estar en que estás perdiendo el valor el filtro.
¿Definiste una variable de sesión del tipo s__XXXX?
Fijate si la pusiste bien, porque recuerdo que una vez me pasó que, sin darme cuenta, sólo le puse un guión bajo (por lo cual no se creó la variable en la sesión) y se perdían los datos del filtro luego de refrescar el cuadro, por lo cual no mostraba nada al exportar los datos a xls o pdf.

Saludos

Hola Agustin,

no es mas facil eliminar solo los que no necesitas?, o sino agregar solo el que necesitas y dejando todo el resto fuera de la pantalla?.

el cuadro aparece y los datos tambien, pero al momento de exportarlo a Excel, el contenido del archivo excel solo dice No hay datos cargados. Que puede ser? (el set_Datos se hace en el conf del cuadro)

En que metodo del ci estas agregando y quitando los cuadros?, podes subir el codigo del mismo?

Saludos

Hola Richard, elimine todo desde las propiedades de la pantalla (solapa dependencias) el tema que agregarlas por codigo ahora no se agregan… entonces ahora ya ni puedo exportar jaja.
te dejo codigo

<?php
class dependencias extends myExport_ci
{
    protected $s__filtro;


    //-----------------------------------------------------------------------------------
    //---- cuadro_dependencias ----------------------------------------------------------
    //-----------------------------------------------------------------------------------

    function conf__cuadro_dependencias(myExport_ei_cuadro $cuadro)
    {
        $personasSql = "SELECT * FROM personas;";
        $personas = toba::db()->consultar($personasSql);
        $cuadro->set_datos($personas);  
    }
    //-----------------------------------------------------------------------------------
    //---- cuadro_titulos ---------------------------------------------------------------
    //-----------------------------------------------------------------------------------

    function conf__cuadro_titulos(myExport_ei_cuadro $cuadro)
    {
        $personasSql = "SELECT * FROM personas;";
        $personas = toba::db()->consultar($personasSql);
        $cuadro->set_datos($personas);    
    }

    //-----------------------------------------------------------------------------------
    //---- cuadro_licenciasxpersona -----------------------------------------------------
    //-----------------------------------------------------------------------------------
    function conf__cuadro_licenciasxpersona(myExport_ei_cuadro $cuadro)
    {
        
        //--1- Arma el mensaje
        $opciones = array('action' => 'getLicenciasxPersona');    //En action se detalla la operacion a invocarse
        $filtro = array();
        
        //$filtro[] = array('campo'=>'apellido', 'operador' => 'contiene', 'valor'=> 'Vidal');
        //$mensaje = new toba_servicio_web_mensaje(array('parametros' => array('filtro' => $filtro )) , $opciones);
        $mensaje = new toba_servicio_web_mensaje($filtro, $opciones);
        //--2- Arma el servicio
        $opciones = array();
        $servicio = toba::servicio_web('ServicioAgentes', $opciones);

        //-- 3 - Muestra la respuesta
        try {
            $respuesta = $servicio->request($mensaje);
            //ei_arbol($respuesta->get_array());    
            $personas = $respuesta->get_array();
            $cuadro->set_datos($personas);    
        }
        catch (toba_error_servicio_web $e) {
            toba::notificacion()->info($e->get_mensaje().' (codigo "'.$e->get_codigo().'")');
        }
    }

        
    //-----------------------------------------------------------------------------------
    //---- cuadro_licenciasxcargo -------------------------------------------------------
    //-----------------------------------------------------------------------------------

    function conf__cuadro_licenciasxcargo(myExport_ei_cuadro $cuadro)
    {
        toba::logger()->debug('Ejecutando servicio LicenciasxCargo');
        //--1- Arma el mensaje
        $opciones = array('action' => 'getLicenciasxCargo');    //En action se detalla la operacion a invocarse
        $filtro = array();
        
        //$filtro[] = array('campo'=>'apellido', 'operador' => 'contiene', 'valor'=> 'Vidal');
        //$mensaje = new toba_servicio_web_mensaje(array('parametros' => array('filtro' => $filtro )) , $opciones);
        $mensaje = new toba_servicio_web_mensaje($filtro, $opciones);
        //--2- Arma el servicio
        $opciones = array();
        $servicio = toba::servicio_web('ServicioAgentes', $opciones);

        //-- 3 - Muestra la respuesta
        try {
            $respuesta = $servicio->request($mensaje);
            //ei_arbol($respuesta->get_array());    
            $personas = $respuesta->get_array();
            $cuadro->set_datos($personas);    
        }
        catch (toba_error_servicio_web $e) {
            toba::notificacion()->info($e->get_mensaje().' (codigo "'.$e->get_codigo().'")');
        }
    }

    //-----------------------------------------------------------------------------------
    //---- cuadro_trayectoria -----------------------------------------------------------
    //-----------------------------------------------------------------------------------

    function conf__cuadro_trayectoria(myExport_ei_cuadro $cuadro)
    {
        toba::logger()->debug('Ejecutando servicio Trayectoria');
        //--1- Arma el mensaje
        $opciones = array('action' => 'getTrayectoriaAgente');    //En action se detalla la operacion a invocarse
        $filtro = array();
        
        //$filtro[] = array('campo'=>'apellido', 'operador' => 'contiene', 'valor'=> 'Vidal');
        //$mensaje = new toba_servicio_web_mensaje(array('parametros' => array('filtro' => $filtro )) , $opciones);
        $mensaje = new toba_servicio_web_mensaje($filtro, $opciones);
        //--2- Arma el servicio
        $opciones = array();
        $servicio = toba::servicio_web('ServicioAgentes', $opciones);

        //-- 3 - Muestra la respuesta
        try {
            $respuesta = $servicio->request($mensaje);
            //ei_arbol($respuesta->get_array());    
            $personas = $respuesta->get_array();
            $cuadro->set_datos($personas);    
        }
        catch (toba_error_servicio_web $e) {
            toba::notificacion()->info($e->get_mensaje().' (codigo "'.$e->get_codigo().'")');
        }
    }

    //-----------------------------------------------------------------------------------
    //---- fl_dependencia ---------------------------------------------------------------
    //-----------------------------------------------------------------------------------

    function conf__fl_dependencia(myExport_ei_filtro $filtro)
    {
        if (isset($this->s__filtro)) {
            return $this->s__filtro;
        }
    }
    
    function filtrar_datos()
    {

        for ($i = 0; $i < count($this->s__filtro['listado']['valor']); $i++) {
        switch($this->s__filtro['listado']['valor'][$i])
        {
            case 'Datos Personales': $this->pantalla()->agregar_dep('cuadro_dependencias');break;
            case 'Trayectoria':$this->pantalla()->agregar_dep('cuadro_trayectoria');break;
            case 'Licencias por Cargo':$this->pantalla()->agregar_dep('cuadro_licenciasxcargo');break;
            case 'Licencias por Persona': $this->pantalla()->agregar_dep('cuadro_licenciasxpersona');break;
            case 'Titulos': $this->pantalla()->agregar_dep('cuadro_titulos');
        }
    }
    
    
    }
    
    function evt__fl_dependencia__filtrar($datos)
    {
        $this->s__filtro = $datos;
        $this->filtrar_datos();
    }

    function evt__fl_dependencia__cancelar()
    {
        unset($this->s__filtro);
    }
    
}
?>

Creo que el error puede estar en el instante en el cual ejecutas

 $this->filtrar_datos();

Creo que, en lugar de invocarlo desde el evento del botón filtrar, debería ir en el evento conf__ de la pantalla.
En el evento filtrar, sólo deberías hacer la asignación. Luego en el conf__ de la pantalla consultas si tiene algún valor s__filtro y entonces recién asignas los cuadros a la pantalla.

Creo que lo mismo ocurre con el excel. Vos pulsas sobre el icono para exportar, en ese momento se refrezca la pantalla que por defecto no tiene cuadros cargados y por lo tanto no imprime nada, en ese caso no pasas por el evento del botón filtrar, por lo cual no carga el cuadro correspondiente.

Espero que se haya entendido.
Podrías probar haciendo ese cambio.

Perfecto,solucionado!! gracias

Hola Agustin,

te marque un pequeño detalle, si los eliminas de esa solapa… los estas sacando de la operacion y por tanto te va a pasar lo que comentas, solamente tenias que quitar la asignacion a la pantalla especifica, eso lo haces desde la pestaña de pantallas.

Una vez hecho eso, vale el comentario que te hizo Roberto, bien ahi!

Saludos