GrialFileStorage
De GrialWIKI
(Página creada con '{{Hierarchy header}} El GrialFileStorage permite relacionar archivos con cualquier registro de cualquier tabla troncal del sistema. Y posteriormente adjuntar, almacenar y recu...') |
(→Forma de Uso) |
||
Línea 17: | Línea 17: | ||
Donde el string “CORREO” representa el path para el almacenamiento de los archivos. El String no es arbitrario, debe estar configurado en la tabla SYS_FUNC_28_TAB_PATHS_STORAGE, campo SYSFUNC28_RELPATH | Donde el string “CORREO” representa el path para el almacenamiento de los archivos. El String no es arbitrario, debe estar configurado en la tabla SYS_FUNC_28_TAB_PATHS_STORAGE, campo SYSFUNC28_RELPATH | ||
- | ===Traer Datos ( | + | ===Traer Datos (incorporar en la carga de la Transacción)=== |
En el momento de preparar la transacción llamar a : | En el momento de preparar la transacción llamar a : | ||
- | GrialFileStorage. | + | GrialFileStorage.Init GrialCont, "RRHH\LEGAJOS\FOTOS", "SOC_USUA_01", IdSocUsua01 |
- | Donde se indica 1) La tabla TRONCAL y el ID del registro al cual se han de adjuntar los archivos. Con esta información el GrialFileStorage prepara un query de consulta sobre la tabla SYS_FUNC_30 | + | Donde se indica |
+ | 1) El GrialCont principal de la transacción | ||
+ | 2) El Path para almacenamiento en el server | ||
+ | El string “"RRHH\LEGAJOS\FOTOS"” representa el path para el almacenamiento de los archivos. El String no es arbitrario, <b>debe estar configurado en la tabla SYS_FUNC_28_TAB_PATHS_STORAGE, campo SYSFUNC28_RELPATH</b> | ||
+ | 3) La tabla TRONCAL y el ID del registro al cual se han de adjuntar los archivos. | ||
+ | |||
+ | Con esta información el GrialFileStorage prepara un query de consulta sobre la tabla SYS_FUNC_30, recuperando la información de los adjuntos al registro troncal índicado. | ||
Luego ha de incluirse el GrialFileStorage en la carga de datos como se haría con cualquier [[GrialQuery]] o Control Registrado, por Ejemplo: | Luego ha de incluirse el GrialFileStorage en la carga de datos como se haría con cualquier [[GrialQuery]] o Control Registrado, por Ejemplo: | ||
- | GrialCont.LoadData SysFunc20grq, SysFunc21grq, SysFunc21_scb, GrialFileStorage''' | + | GrialCont.LoadData SysFunc20grq, SysFunc21grq, SysFunc21_scb, '''GrialFileStorage''' |
Luego de la carga es posible limitar las acciones que el usuario puede realizar, por ejemplo: | Luego de la carga es posible limitar las acciones que el usuario puede realizar, por ejemplo: | ||
Línea 34: | Línea 40: | ||
.AllowAddNew = Not ModoConsulta | .AllowAddNew = Not ModoConsulta | ||
.AllowDelete = Not ModoConsulta | .AllowDelete = Not ModoConsulta | ||
- | |||
End With | End With | ||
- | === BottomButton_Click ACEPTAR, Incorporar en la Transacción=== | + | === BottomButton_Click ACEPTAR, Incorporar en la grabación de la Transacción=== |
En el momento de grabar la transacción llamar a: ''GrialFileStorage.AppendToTransaction, ''como un detalle de la cabecera a la cual los archivos se adjuntan: | En el momento de grabar la transacción llamar a: ''GrialFileStorage.AppendToTransaction, ''como un detalle de la cabecera a la cual los archivos se adjuntan: | ||
Línea 46: | Línea 51: | ||
</code> | </code> | ||
- | Mediante esta llamada el GrialFileStorage incorpora a la transacción el registro de la SYS_FUNC_30 con los cambios que haya realizado el usuario. '''El parámetro “SF20” es el NOMBRE DEL | + | Mediante esta llamada el GrialFileStorage incorpora a la transacción el registro de la SYS_FUNC_30 con los cambios que haya realizado el usuario. '''El parámetro “SF20” es el NOMBRE DEL HEADER en la transacción que contiene el registro al cual se adjuntan los archivos'''. |
Internamente,'''AppendToTransaction''' agrega a la transacción la grabación de la tabla SYS_FUNC_30 que contiene los nombres los archivos adjuntos. | Internamente,'''AppendToTransaction''' agrega a la transacción la grabación de la tabla SYS_FUNC_30 que contiene los nombres los archivos adjuntos. | ||
Línea 56: | Línea 61: | ||
'Agrega internamente... | 'Agrega internamente... | ||
'=> Txn.AddItem SYSFUNC30.Rst, “Header=SF20:ID_SYSFUNC30, RELA_TRONCAL” | '=> Txn.AddItem SYSFUNC30.Rst, “Header=SF20:ID_SYSFUNC30, RELA_TRONCAL” | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
</code> | </code> | ||
En el momento de grabar la transacción se grabará la referencia al nombre del archivo adjuntado, (tabla SYS_FUNC_30) | En el momento de grabar la transacción se grabará la referencia al nombre del archivo adjuntado, (tabla SYS_FUNC_30) | ||
- | + | quedando relacionados los archivos subidos al servidor con el registro cabecera indicado. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
==Métodos Adicionales== | ==Métodos Adicionales== |
Revisión de 17:19 31 oct 2012
Introducción al Framework Grial |
|
El GrialFileStorage permite relacionar archivos con cualquier registro de cualquier tabla troncal del sistema. Y posteriormente adjuntar, almacenar y recuperar estos archivos desde el servidor.
Contenido |
Forma de Uso
Inicializacion
En el UserDocument_Show llamar a:
GrialFileStorage.Initialize GrialCont, "CORREO"
Donde el string “CORREO” representa el path para el almacenamiento de los archivos. El String no es arbitrario, debe estar configurado en la tabla SYS_FUNC_28_TAB_PATHS_STORAGE, campo SYSFUNC28_RELPATH
Traer Datos (incorporar en la carga de la Transacción)
En el momento de preparar la transacción llamar a :
GrialFileStorage.Init GrialCont, "RRHH\LEGAJOS\FOTOS", "SOC_USUA_01", IdSocUsua01
Donde se indica
1) El GrialCont principal de la transacción 2) El Path para almacenamiento en el server
El string “"RRHH\LEGAJOS\FOTOS"” representa el path para el almacenamiento de los archivos. El String no es arbitrario, debe estar configurado en la tabla SYS_FUNC_28_TAB_PATHS_STORAGE, campo SYSFUNC28_RELPATH
3) La tabla TRONCAL y el ID del registro al cual se han de adjuntar los archivos.
Con esta información el GrialFileStorage prepara un query de consulta sobre la tabla SYS_FUNC_30, recuperando la información de los adjuntos al registro troncal índicado.
Luego ha de incluirse el GrialFileStorage en la carga de datos como se haría con cualquier GrialQuery o Control Registrado, por Ejemplo:
GrialCont.LoadData SysFunc20grq, SysFunc21grq, SysFunc21_scb, GrialFileStorage
Luego de la carga es posible limitar las acciones que el usuario puede realizar, por ejemplo:
With GrialFileStorage .AllowAddNew = Not ModoConsulta .AllowDelete = Not ModoConsulta End With
BottomButton_Click ACEPTAR, Incorporar en la grabación de la Transacción
En el momento de grabar la transacción llamar a: GrialFileStorage.AppendToTransaction, como un detalle de la cabecera a la cual los archivos se adjuntan:
Txn.Add SF20Grq.Rst, “Name=SF20:ID_SYSFUNC20” Txn.Add SF21Grq.Rst, “ID_SYSFUNC21;RELA_SYSFUNC20” GrialFileStorage.AppendToTransaction Txn, "SF20"
Mediante esta llamada el GrialFileStorage incorpora a la transacción el registro de la SYS_FUNC_30 con los cambios que haya realizado el usuario. El parámetro “SF20” es el NOMBRE DEL HEADER en la transacción que contiene el registro al cual se adjuntan los archivos.
Internamente,AppendToTransaction agrega a la transacción la grabación de la tabla SYS_FUNC_30 que contiene los nombres los archivos adjuntos.
En el ejemplo dado, el GrialFileStorage agregará internamente:
GrialFileStorage.AppendToTransaction Txn, "SF20" ... 'Agrega internamente... '=> Txn.AddItem SYSFUNC30.Rst, “Header=SF20:ID_SYSFUNC30, RELA_TRONCAL”
En el momento de grabar la transacción se grabará la referencia al nombre del archivo adjuntado, (tabla SYS_FUNC_30) quedando relacionados los archivos subidos al servidor con el registro cabecera indicado.
Métodos Adicionales
Adjuntos Específicos, por ejemplo, Foto de un Legajo
Ubicar y mostrar un adjunto especifico
Luego de cargar los datos, se puede buscar una adjunto mediante un codigo especifico, recuperarlo y mostrarlo (una imagen en este ejemplo)
'Muestro la foto si esta adjunta img_foto = LoadPicture("") 'clear LbFileName = "" With GrialFileStorage If .SelectAttachment("FOTOPPAL") Then LbFileName = .SelectedAttachmentInfo 'Muestro info del adjunto Dim TempFile As String If .GetSelectedAttachmentFile(TempFile) Then 'Descargo el archivo On Error Resume Next img_foto = LoadPicture(TempFile) End If End If End With
El Método SelectAttachment selecciona uno de los adjuntos presentes, como parámetro se puede pasar un ID_SYSFUNC30 específico o un string para buscar (usando el campo SYSFUNC30_COD [string(10)])
La función SelectedAttachmentInfo devuelve un string descriptivo con la descripción del adjunto, el nombre del archivo original y el tamaño del archivo en KB. Es útil para mostrar en un label la información del archivo adjunto.
La función GetSelectedAttachmentFile(TempFileName) recupera el archivo seleccionado del servidor y retorna el path completo local donde se grabó el archivo recuperado en el parámetro TempFileName. Si no puede recuperar el archivo la función retorna FALSE.
Crear un adjunto con un código específico
Para adjuntar un archivo con un codigo específico (“FOTOPPAL” en el ejemplo) se debe colocar un botón en el modulo y llamar a: GrialFileStorage.StartAttachByCode
Ejemplo:
Private Sub AdjuntarFotoCmd_Click() On Error GoTo ErrH 'Inicio un adjunto, con codigo "FOTOPPAL" If Not GrialFileStorage.StartAttachByCode("FOTOPPAL", “Foto Principal”) then Rem EL USUARIO CANCELO (No selecciono el archivo por ejemplo) End If Exit sub ErrH: MsgError GrialCont End Sub
La función StartAttachByCode inicial el proceso de adjuntar un Nuevo archivo, si no encuentra el código en la lista, o inicia el proceso de reemplazar un adjunto si el código ya existiera.
El código siempre es único en la lista de adjuntos.
La función retorna FALSE si el usuario cancela el proceso.
En caso seleccionar un archivo exitosamente, se dispara el evento GrialFileStorage_FileAttached. Este evento se puede utilizar para mostrar en pantalla el archivo adjunto, por ejemplo, si fuera una imagen. Por ejemplo:
Private Sub GrialFileStorage_FileAttached() With GrialFileStorage If .SelectedAttachment_Value("SYSFUNC30_COD") = "FOTOPPAL" Then 'si est adjuntando la foto LbFileName = .SelectedAttachmentInfo img_foto = LoadPicture(.SelectedFileName) End If End With End Sub
La Function SelectedAttachment_Value retorna el valor de cualquiera de los campos del registro de la SYS_FUNC_30 actualmente seleccionado en la lista de adjuntos. En este caso se usa para confirmar que el adjunto sea el del código específico (en este caso la foto principal)
Eliminar un adjunto con un código específico
Por ultimo, si se desea incluir un botón para remover un adjunto específico se debe utilizar el metodo DeleteAttachment luego de ubicar el adjunto especifico mediante SelectAttachment. Por Ejemplo:
Private Sub RemoverFotoCmd _Click() With GrialFileStorage If .SelectAttachment("FOTOPPAL") Then .DeleteAttachment img_foto.Picture = LoadPicture("") LbFileName = ”” End If End With
Cache de Descargas
Cada vez que se descarga un archivo, el control guarda el nombre del archivo temporal descargado en un campo del recordset llamado “LOCAL_FILE”. Mientras el campo .SelectedAttachment_value(“LOCAL_FILE”) tenga valor, la función GetSelectedAttachmentFile devolverá ese archivo sin ir a buscarlo nuevamente al servidor. El campo “LOCAL_FILE” se limpia con cada carga del control GrialFileStorage (GrialCont.LoadData GrialFileStorage)
Descargar Todos los Archivos
Para descargar todos los archivos adjuntos, se puede llamar a la function GetAllFiles que devuelve el número de archivos descargados correctamente. Ejemplo:
' Me bajo todos los archivos adjuntos GrialFileStorage.GetAllFiles
Filtros para seleccionar un tipo de archivo
Si se desea filtrar por tipo los archivos que el usuario ve al adjuntar, puede utilizar el método AddFileFilter. Este método adiciona filtros a la propiedad FileFilters (de tipo string).
Por Ejemplo:
GrialFileStorage.AddFileFilter "Text Files","*.txt" 'Solo archivos txt
Para restaurar el valor default: All Files (*.*) puede poner FileFilters = “”
Adjuntar un archivo manualmente
Ejemplo:
SF30DEscri = "foto del usuario" SelectedFileName = “C:\FotoASubir.jpg” SF30Cod = “FOTO” 'Agrego adjunto GrialFileStorage.AddFile SF30DEscri, SelectedFileName, SF30Cod
Donde:
- SF30DEscri
- es la descripcion, por ejemplo: "foto de xxxx"
- SelectedFileName
- es el path al archivo local
- SF30Cod
- es un codigo para diferenciar el adjunto de otros adjuntos al mismo registro, por ejemplo: "FOTO"
GrialPrint <<< >>> GrialTextStorage