por explorer » 2015-07-24 19:41 @862
No, no, no... Estamos liando cosas...
La creación de %columnas se refiere al array @columnas que contiene los nombres de las columnas de la hoja, no las columnas de las SQL que estamos extrayendo.
El error que sale está diciendo que $testing[0] contiene un valor que no corresponde a ninguno de los valores de las claves creadas para %columnas. Si lo hubieras dejado como te puse en el mensaje anterior, %columnas contendría como claves los mismos nombres que las columnas de la hoja, que, estamos suponiendo, son justo los valores que estamos obteniendo de la base de datos.
Sigues usando $a, pero no la incrementas ni nada. En mi código la renombré a $fila, y se supone que se incrementa en alguna parte del bucle, para que se pinte la siguiente línea de la hoja de cálculo.
En la línea 47 estás almacenando en @titulos todos los resultados de las consultas a la base de datos, pero además, de todas las vulnerabilidades solicitadas por el usuario. Y cuando terminas, haces el bucle de las líneas 52 a 54, recorriendo esos valores. Y yo creo que eso no es correcto. Vamos a ver... las columnas están determinadas por los valores devueltos por la base de datos, pero ¿y las filas? ¿cómo se rellenan? Si hay que rellenar una fila por cada vulnerabilidad solicitada por el usuario, lo estamos haciendo mal colocando ese bucle fuera.
Repasa mi código anterior. Verás que uso $testing[0] y $testing[1], para saber en qué columnas pintar y qué pintar, pero la verdad es que no sé el aspecto real que tienen los resultados devueltos por la base de datos. Un pequeño ejemplo de eso y de cómo quedaría en la hoja, estaría bien.
Repasa con tranquilidad el orden de ejecución de las cosas. Programar no es ir poniendo las cosas "a ver si ahora funcionan". Programar es un arte parecido a la relojería: o funciona o no funciona. Y si funciona, es porque todo se realiza en la secuencia deseada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES