Manuales de TuGA                                                                                                                      Página Principal

 

TuGa. Insertar archivos en una pantalla.

 

TuGa permite hacer inserción de archivos directamente en la base de datos por medio de un campo de formulario, para que esto funcione se debe seguir la siguiente plantilla como modelo base de tablas

 

El anterior modelo es un maestro detalle (prueba – pruebasarchivo) donde en la tabla prueba se puede insertar cualquier tipo de información (por ejemplo una hoja de vida) y en la tabla pruebasarchivo los archivos anexos a dicha hoja de vida. Cada tabla debe tener su llave primaria (en este caso código) y la tabla pruebasarchivo una llave foránea (prueba)  a la tabla tipo maestro. La tabla detalle (pruebasarchivo) debe contar con un campo de tipo carácter para guardar el nombre del archivo (nombre) y un campo tipo byte para almacenar la información del mismo (data).

Para adicionar el campo de captura de archivos en la pantalla, simplemente haga clic en “adicionar (campo)” y seleccione en tipo “archivo”.

Para insertar el archivo en la base de datos de acuerdo al modelo planteado, se debe insertar primero un registro en la tabla maestro (prueba) y guardar en una variable el valor de la llave primaria usada en dicho registro. Para esta operación se usan dos acciones:

1.       La primer acción es “Ejecuta una sentencia SQL” para calcular el valor de la llave primaria a usar en la tabla maestro (generalmente, a través de una secuencia) u guardarla en una variable (en el ejemplo, secprueba).

2.       La segunda acción es “Ejecutar Update con validación de datos” para meter el registro en la tabla maestro (usando el valor de la variable secprueba para la llave primaria).

Acción 1

Acción 2

Para insertar el archivo en la base de datos, escoja en el botón indicado la acción “Almacena archivos adjuntos”

 Ingrese los datos de acuerdo al modelo de tablas. El campo “Valor del Campo de la llave primaria” corresponde al valor con el cual se llena la llave primaria de la tabla (por lo general es una secuencia). El campo “Valor del Campo de la llave foránea” corresponde al valor usado como llave primaria en la tabla maestro (en este caso, secprueba).

Mostrar archivos en los reportes.

Para mostrar los archivos almacenados en la tabla por medio de un reporte, en el tipo de contenido escoja “SQL de archivos” y en SQL una sentencia solo para listar el nombre de los archivos, por ejemplo:

SELECT codigo, nombre FROM pruebasarchivo

Luego, en la opción “Campos en el SQL que hacen referencia a un archivo” enumere  de izquierda a derecha (empezando por 1), según el SQL que campo corresponde a la columna donde se debe generar el enlace en el reporte para descargar el archivo. Según el SQL anterior seria 2 (lo cual quiere decir que el usuario cuando haga clic en el nombre del archivo, este será descargado).

En la opción “Campo identificador del archivo en el SQL” enumere  de izquierda a derecha (empezando por 1), según el SQL que campo corresponde a la llave primaria identificadora del archivo. Según el SQL anterior seria 1.

Las siguientes opciones van de acuerdo al modelo de tablas descrito como ejemplo de este tema :

Tabla donde se almacenan los archivos: pruebasarchivo

Nombre del campo que almacena los bits: data

Nombre del campo que almacena el nombre: nombre

Campo PK del la tabla: código

De acuerdo a lo descrito anteriormente, la forma correcta de llenar esta opción de reporte sería la siguiente:

 

Recuperar los archivos en una pantalla después de haber consultado un reporte.

Este caso sucede cuando a partir de un reporte, se quiere volver a la pantalla para edición de datos y por lo tanto se requiere la lista de archivos ya sea apara agregar más o eliminar alguno de los existentes. Para lograr esto, en la edición de la pantalla en la opción “Querys de entrada” se debe escribir el SQL para calcular los archivos del registro a eliminar. Usando como base el modelo de tablas planteado como ejemplo, este sería:

SELECT codigo, nombre, data
FROM pruebasarchivo
WHERE prueba = <<X>>

 

Donde <<X>> corresponde a la llave primaria de la tabla prueba el cual será usado como parámetro del reporte.

 

Notas:

1.       Solo es válido usar un control de captura de archivos por pantalla.

2.       Si se desea limitar el número de archivos a capturar en una pantalla, debe programar por el javascript de fin de página la siguiente función :

document.FormXX.YYvariablearchivo.onchange = function (){
      var archivos = frames.iframeUpload.numberfiles;
      if(archivos <= 1){
        document.FormXX.submit();
      }
      else{
        alert("Solo se puede agregar un archivo");
      }  
  };

Donde FormXX corresponde al nombre del formulario de la pantalla y YYvariablearchivo corresponde a la variable que hace referencia al control para adjuntar los archivos. Para el código anterior, se permite adjuntar un solo archivo.