Acceder Registrarme

JasperReport


Por: Carlos Eduardo Rodríguez Carrillo Publicado el: 2018-01-17 16:29:20 Pregunta cerrada

Buenas tardes amigos nuevamente con una duda. Sabrían como se podría hacer un reporte asi como en la figura en donde el usuario ingrese a través de un formulario el mes y el repote automaticamente genere tantas filas como días tenga ese mes?? 




Java MySql

Usuario de (Perú)

Hola Carlos, sólo deberías calcular la cantida de días en base a un algoritmo que tú mismo lo puedes crear, luego crear una lista de un objeto con esos valores "Un DTO" y posteriormente enviarlo al reporte tal como lo harías con una colección de registros extraídos de una base de datos.

Te recomiendo revisar un poco de los reportes en Java... te dejo el siguiente enlace http://enlawebdekaaf.blogspot.pe/p/java-desktop.html  hay alugnos temas aunque bastante básicos pero podrían servirte.

Saludos.

  • 2018-01-17 17:44:51
  • Me gusta(0)

Hola Kevin  aquí dejo la consulta (mysql) de cómo obtener la estructura de la imagen de arriba.

delimiter $$
create procedure reporte_elis(in quincena int, in mes int, in año int)
begin

	declare var_inicio, var_final int default 0;
	declare fecha_Inicial, fecha_Final, fecha_incremento, dia_entrada date;

	IF quincena = 1 then
		set dia_entrada = concat(año,'-',mes,'-','01');
	ELSEIF quincena = 2 then
		set dia_entrada = concat(año,'-',mes,'-','16');
	END IF;

	set fecha_Inicial = dia_entrada;
	set fecha_Final = last_day(fecha_Inicial);
	set var_inicio = extract(day from fecha_inicial);
	set var_final = extract(day from fecha_final);
	set fecha_incremento = fecha_inicial;

	create temporary table examen.tmp_dias_mes(id int,dia_mes date,nombre_dia varchar(200));

	while var_inicio <= var_final do	
	    insert into examen.tmp_dias_mes (id, dia_mes, nombre_dia) 
		values 
			(var_inicio, fecha_incremento, dayname(fecha_incremento));
	    set var_inicio = var_inicio + 1;
	    set fecha_incremento = date_add(fecha_incremento, interval 1 day);
	end while;

	select DATE_FORMAT(dia_mes, "%d-%m-%Y") as 'DÏA', nombre_dia as 'NOMBRE', IF(nombre_dia = 'viernes', "DESCANSO", "") as 'DESCANSO' from examen.tmp_dias_mes;

	drop table examen.tmp_dias_mes;
end;
$$
delimiter ;
  • 2018-01-22 15:08:49
  • Me gusta(1)
delimiter $$
create procedure reporte_descanso(in quincena int, in mes int, in año int, in dia_descanso varchar(200))
begin

	declare var_inicio, var_final int default 0;
	declare fecha_Inicial, fecha_Final, fecha_incremento, dia_entrada date;
	set lc_time_names = 'es_PE';
	IF quincena = 1 then
		set dia_entrada = concat(año,'-',mes,'-','01');
        set fecha_Final = concat(año,'-',mes,'-','15');
	ELSEIF quincena = 2 then
		set dia_entrada = concat(año,'-',mes,'-','16');
        set fecha_Final = last_day(dia_entrada);
	END IF;

	set fecha_Inicial = dia_entrada;
	set var_inicio = extract(day from fecha_inicial);
	set var_final = extract(day from fecha_final);
	set fecha_incremento = fecha_inicial;

	create temporary table examen.tmp_dias_mes(id int,dia_mes date,nombre_dia varchar(200));

	while var_inicio <= var_final do	
	    insert into examen.tmp_dias_mes (id, dia_mes, nombre_dia) 
		values 
			(var_inicio, fecha_incremento, dayname(fecha_incremento));
	    set var_inicio = var_inicio + 1;
	    set fecha_incremento = date_add(fecha_incremento, interval 1 day);
	end while;

	select DATE_FORMAT(dia_mes, "%d-%m-%Y") as 'DÏA', nombre_dia as 'NOMBRE', IF(nombre_dia = dia_descanso, "DESCANSO", "") as 'DESCANSO' from examen.tmp_dias_mes;

	drop table examen.tmp_dias_mes;
end;
$$
delimiter ;
  • 2018-01-22 15:14:18
  • Me gusta(1)

  • Debes estar logueado para realizar comentarios