por explorer » 2011-06-30 12:32 @564
¿No sería mejor sincronizar la información de la hoja Excel con la base de datos? Es decir, en cada nueva entrega de la hoja Excel por parte del usuario, pones "a cero" la base de datos, y la rellenas con la información de la hoja.
El límite es (y que yo uso mucho últimamente) usar la propia hoja Excel como la base de datos de la aplicación.
Otro tema es si la base de datos está almacenando más información que la trae la hoja Excel, como es el caso de que existan más campos o columnas, que la aplicación ha ido alimentando con el tiempo.
En ese caso, primero te lees la información de la hoja Excel a memoria, en una estructura Perl del tipo hash, en que las claves sean las palabras que pone el usuario (se supone que no hay palabras repetidas). Segundo, abres la base de datos y la vas recorriendo palabra por palabra. Y ahora, a procesar:
* Si la palabra que encuentras en la base de datos existe en la hoja Excel, eliminas su entrada en la estructura (borras la entrada hash), ya que se trata de una palabra que ya teníamos.
* Si la palabra que encuentras en la base de datos no existe en la hoja Excel, quiere decir que el usuario la ha borrado. Guardamos dicha palabra en un array para eliminar esa palabra más tarde (no ejecutamos la eliminación ahora, sino cuando terminemos de mirar todas las palabras).
* Al final del bucle, tendremos el array de palabras viejas, que eliminaremos de la base de datos, y en la estructura hash las nuevas palabras, que agregaremos.
Bueno, es una forma de hacerlo. Hay otras.
En cuanto a lo del hash y array, las prestaciones son muy parecidas, pero hash es ideal para relacionar y recordar información. Localizar información en un array implica saber su posición, o hacer un bucle para buscarla.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES