|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Programación Visual Basic / Macro Excell - Recorrer Filtro de Informe
|
en: 19 Septiembre 2016, 11:12 am
|
Muy buenas, he programado muy poco en VBA y nos han encargado en el curro agilizar un proceso y sería mediante macros. Mi duda es ¿cómo se puede ir recorriendo el filtro de una tabla dinámica? Y para cada resultado, recorrer sus filas (que no en cada item del filtro es igual). Me explico mejor: tengo el libro "Enero2016" con la tabla dinamica filtrada por proyectos, puedes elegir Proyecto1, Proyecto2, Proyecto3. Cada proyecto tiene varios programas prog1a, prog1b, ... prog1n, prog2a, ..., prog2m, etc. Y cada uno con sus datos, que son etiquetas de fila. Y luego Fecha de inicio, presupuesto, horas de trabajo y tal. Que son valores. El objetio es una macro que recorra en "Enero2016" todo Proyecto1, recorra cada programa (fila), copie los valores y los lleve a otro archivo (cada Proyecto tendría el suyo). Lo mismo para Proyecto 2, etc. Uno a uno se podría poner ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Proyecto").CurrentPage = "Proyecto1" y así para todos, pero no es muy práctico si existe un bucle. Muchas gracias!
|
|
|
2
|
Programación / PHP / Re: Duda PHP con include("pagina.php")
|
en: 27 Agosto 2016, 17:25 pm
|
Es la segunda vez que te leo que pones que te sale la página en blanco. Puedes configurar php, para que te muestre errores, es decir no se te quedará en blanco y te indicara en que línea tienes el fallo. Este fallo supongo que estarás redundando algún include. Para comprobarlo temporalmente puedes usar include_once.
Sí. La primera ya lo arreglé! :/ La segunda no es que no funcione. Si pongo los include("vehiculo.php") e include("cliente_vehiculo.php") en la página test_cliente.php, funciona la perfección y no sale en blanco. Sólo sale en blanco si añado include("vehiculo.php") en la página cliente_vehiculo.php. Y mi pregunta es: aunque cilente_vehiculo.php llame o use funciones de vehiculo, ¿no necesita incluir a vehiculo? Sin incluirlo el test funciona perfectamente. Gracias.
|
|
|
3
|
Programación / PHP / Duda PHP con include("pagina.php")
|
en: 27 Agosto 2016, 12:04 pm
|
Buenas, no llevo mucho tiempo con PHP, así que igual sabéis guiarme en esto.
- Tengo tres páginas: 'vehiculo.php', 'cliente_vehiculo.php', 'test_cliente.php'.
1. vehiculo.php tiene varias clases: Vehiculo{}, Coche extends Vehiculo {}, Moto extends Vehiculo {}, etc. Y todo funciona perfectamente.
2. cliente_vehiculo.php tiene la clase Cliente{}, en la que recibe nombre, identidad, se crea con cero vehiculos alquilados, etc... y luego función boolean de ha_alquilado_vehiculo(), alquilar vehiculo($vehiculo), devolver_vehiculo($vehiculo), etc. Y todo funciona perfectamente.
3. test_cliente.php es para hacer pruebas. Crea objetos Cliente, crea objetos Vehiculo y los alquila, devuelve, etc...
MI DUDA: En 'test_cliente.php' tengo include("vehiculo.php") e include("cliente_vehiculo.php") y funciona genial. Pero si pongo include ("vehiculo.php") en cliente_vehiculo.php también (y lo veía lógico porque las funciones de esa clase trabajan también con objetos de Vehiculo para alquilarlos, compararlos, etc.), entonces la página test_cliente.php se queda en blanco. Y si vuelvo a quitar el include("vehiculo.php") de cliente_vehiculo.php entonces vuelve a funcionar a las mil maravillas.
¿No necesita cliente_vehiculo.php incluir las clases de vehiculo.php? ¿Sólo tienen que estar en test_cliente.php? ¿Por qué?
Muchas gracias, y perdonad si no me he expresado bien o si es lioso. Si necesitáis código hacédmelo saber. Gracias.
|
|
|
4
|
Programación / PHP / Re: Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
|
en: 27 Agosto 2016, 11:50 am
|
Me di cuenta a ojo, en la linea 115 del ultimo codigo tenes: if ($product = null){
Estas haciendo una asignación en lugar de una comparación, deberia ser: if ($product == null){
Si no te tira errores ni warnings, revisa tu codigo linea por linea buscando este tipo de cosas, que no dan error pero alterar totalmente el funcionamiento de la aplicación. PD:($product = null) devolverá true siempre! Gracias. Y sí. Era todo fallo mío. Eso y alguna cosa más. Me aventuré a subir el código demasiado rápido y realmente pude revisar varias cosas y encontrar más errores. Muchas gracias por tu tiempo y revisión.
|
|
|
5
|
Programación / PHP / Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
|
en: 24 Agosto 2016, 19:10 pm
|
Muy buenas, sé que va a ser mucho código e igual sabéis responderme sin necesidad de verlo todo. Tengo tres archivos php (videoclub.php, clienteVideoclup.php, testCliente.php). La idea es que videoclub tenga una clase 'Soporte' y de ella heredan 'DVD' y 'Videojuego' que son cosas que se pueden alquilar. Con todos sus parámetros. Luego clienteVideoclub tiene la clase 'Cliente' para crear usuarios que alquilan (un máximo de tres soportes). Y luego la clase test en la que quiero hacer pruebas y que se impriman diferentes formas del programa según los datos. Pero se queda en blanco: MUCHAS GRACIAS DE ANTEMANO! testClient.php: <?php include ("videoclub.php"); include ("clienteVideoclub.php"); $client1 = new Cliente ("Carlos López", "CL001", false); $peli1 = new DVD ("Los Otros", 1, 2.99, 120, "Español"); $peli2 = new DVD ("Los Vengadores", 2, 2.99, 140, "Español, inglés y francés"); $peli3 = new DVD ("El Hundimiento", 3, 2.99, 167, "Español, inglés y alemán"); $vidJu1 = new Videojuego ("FIFA 17", 4, 5.99, "Play Station 4", "Deporte", 1, 4); $vidJu2 = new Videojuego ("Tomb Raider VII", 5, 6.99, "PC", "Aventuras", 1, 1); $peli1->imprime_caracteristicas(); $peli3->imprime_caracteristicas(); echo '<br>Mostramos info de cliente nada más crearlo: <br>'; $client1->show_info(); echo '<br> * - - - - - - - - - - - - * <br>'; $client1->alquila_soporte($peli1); echo '<br>'; $client1->alquila_soporte($peli2); echo '<br>'; $client1->show_info(); echo '<br>'; echo '<br> * - - - - - - - - - - - - * <br>'; ?>
videoclub.php <meta charset="utf-8"> <?php class Soporte { public $titulo; protected $numero; private $precio; function __construct($tit,$num,$precio){ $this->titulo = $tit; $this->numero = $num; $this->precio = $precio; } public function dame_precio_sin_iva(){ return $this->precio; } public function dame_precio_con_iva(){ return $this->precio * 1.16; } public function dame_numero_identificacion(){ return $this->numero; } public function imprime_caracteristicas(){ echo $this->titulo; echo "<br>" . $this->precio . " (IVA no incluido)"; } public function dame_titulo(){ return $this->titulo; } } class DVD extends Soporte { private $duracion; private $idiomas_disponibles; function __construct ($tit, $num, $precio, $duracion, $idiomas){ parent::__construct($tit, $num, $precio); $this->duracion = $duracion; $this->idiomas_disponibles = $idiomas; } public function dame_duracion(){ return $this->duracion; } public function dame_idiomas(){ return $this->idiomas_disponibles; } public function imprime_caracteristicas(){ echo 'Pelicula DVD<br>'; parent::imprime_caracteristicas(); echo '<br>Duración: ' . $this->dame_duracion() . ' min.'; echo '<br>Idimas: ' . $this->dame_idiomas(); } } class Videojuego extends Soporte{ private $consola; private $tipo; private $numMinJug; private $numMaxJug; function __construct ($tit, $num, $precio, $consola, $estilo, $min_j, $max_j){ parent::__construct($tit, $num, $precio); $this->consola = $consola; $this->tipo = $estilo; $this->numMinJug = $min_j; $this->numMaxJug = $max_j; } public function dame_consola(){ return $this->consola; } public function dame_tipo(){ return $this->tipo; } public function dame_jugadores(){ if($this->numMinJug == $this->numMaxJug){ if($this->numMinJug == 1){ echo 'Juego de un jugador'; } else { echo 'Juego de ' . $this->numMinJug . ' jugadores.'; } } else { echo 'De ' . $this->numMinJug . ' a ' . $this->numMaxJug . ' jugadres.'; } } public function imprime_caracteristicas(){ echo 'Juego de ' . $this->dame_consola() . '<br>'; parent::imprime_caracteristicas(); echo '<br> Num. Jugadores: '; $this->dame_jugadores(); echo '<br>Tipo: ' . $this->dame_tipo(); } } ?>
clienteVideoclub.php: <meta charset="utf-8"> <?php include ("videoclub.php"); class Cliente { private $user_name; private $user_id; private $max_rent_prd; private $isPremium; private $rented_products; private $num_of_rentPrd; function __construct ($name, $id, $premium){ $this->user_name = $name; $this->user_id = $id; $this->isPremium = $premium; if($this->isPremium == true){ $this->max_rent_prd = 5; } else { $this->max_rent_prd = 3; } $this->rented_prd = array(); $this->num_of_rentPrd = 0; for($i=0; $i<$this->max_rent_prd; $i++){ $this->rented_prd[$i] = null; } } public function get_privilege(){ if ($this->isPremium == true ){ return true; } else { return false; } } public function get_userName(){ return $user_name; } public function get_userID(){ return $user_id; } /**Este método recibe un soporte y devuelve true si está entre los alquileres del cliente. Devuelve false en caso contrario. */ public function ha_alquilado ($soporte){ foreach ($this->rented_products as $product){ if($product->dame_numero_identificacion() == $soporte->dame_numero_identificacion()){ return true; } } } } /**Este método comprueba si el cliente tiene alquilados todos los soportes que puede alquilar de una vez */ public function is_full(){ foreach ($this->rented_products as $product){ return false; } } return true; } /** Este método sirve para alquilar una película o juego por parte del cliente. Recibe el soporte a alquilar y, en caso que el alquiler se pueda producir, debe introducir el objeto soporte recibido en el array de soportes alquilados del cliente. */ public function alquila_soporte($soporte){ if ($this->ha_alquilado($soporte)){ echo 'El cliente ya ha alguilado el soporte'; } else if ($this->is_full()) { echo 'No puede alquilar más. Devuelva algún soporte'; } else { foreach($this->rented_products as $product){ if ($product == null){ echo 'Ha alquilado ' . $product->dame_titulo(); $product = $soporte; $num_of_rentPrd ++; break; } } } } /** Método que devuelve el soporte a caja. El soporte desaparece del array $rented_products del cliente*/ public function devuelve_soporte($soporte){ foreach ($this->rented_products as $product){ if($soporte->dame_numero_indentificacion() == $product->dame_numero_identificacion()){ echo 'Devuelto: ' . $product->dame_titulo(); $product = null; $num_of_rentPrd --; } } } /** Método que muestra toda la información disponible del cliente*/ public function show_info(){ echo '<br> Nombre: ' . $this->get_userName(); echo '<br> ID_client: ' . $this->get_userID(); if ($this->get_privilege()) { echo "Es premium.<br>"; } else { echo "No es premium.<br>"; } //echo "Ha alquilado " . $num_of_rentPrd . " productos."; foreach ($this->rented_products as $product){ if ($product = null){ echo '<br>- ...'; } else { echo'<br>- ' . $product->dame_titulo(); } } } } ?>
|
|
|
|
|
|
|