Autor |
Mensaje |
Moderador

|
#1 Publicado: 12 Dic 2019 22:49 - Editado por: apyguay
No sé si hay algo sobre el tema, pero no lo he encontrado. Ahí va mi aporte... que consiste en abrir cualquier tipo de archivo alojado en un campo contenedor de forma automática al pinchar sobre él. En primer lugar, creamos una carpeta donde se almacenará y desde la que se abrirá el archivo alojado en el contenedor. La creamos donde queramos, pero recomiendo en una ruta relativa de la base de datos. Después creamos un campo contenedor que, en mi caso, almacena el contenido de forma externa. Al pinchar sobre él, si está vacío nos da la opción de insertar un archivo. Si no está vacío, nos abre el archivo que contenga Este es el paso de guión:
Permitir cancelación del usuario [ Inactivo ] Establecer captura de errores [ Activo ] If [ IsEmpty (CAMPO_CONTENEDOR) ] Ir al campo [ CAMPO_CONTENEDOR] Insertar archivo [ ] [ Método de almacenamiento: Insertar ] [ Mostrar contenido ] [ Compresión: No comprimir nunca ] Consignar registros/peticiones Detener guión Else Establecer variable [ $temporal ; Valor:"file:" & Get ( TemporaryPath ) & "archivo." & Let ( [ ~nombreArchivo = GetValue (CAMPO_CONTENEDOR ; ValueCount ( CAMPO_CONTENEDOR ) ) ; //te da el último elemento del nombre de archivo. ~largoNombreArchivo = Length ( ~nombreArchivo ) ; //longitud del último elemento del nombre de archivo ~posicionUltimoPunto = Position ( ~nombreArchivo ; "." ; 1 ; PatternCount ( ~nombreArchivo ; "." ) ) //posición del último punto ] ; Right ( ~nombreArchivo ; ~largoNombreArchivo - ~posicionUltimoPunto ) ) ] Exportar contenido del campo [ CAMPO_CONTENEDOR ; "$temporal" ; Abrir automáticamente ] Consignar registros/peticiones [ Sin diálogo ] End If
Lo que hago es, mediante la ruta que se le asigna en la variable, abre en una carpeta temporal que asigna Filemaker y que al cerrar la base de datos elimina los datos, el archivo llamado "file" más la extensión que se calcula justo después en la misma variable. Según lo que sea, será "file.jpg", "file.doc", "file.pdf", "file.mp4", etc Al abrirlo en la carpeta temporal, siempre se sobrescribe el que coincide con el mismo nombre y así no se satura dicha carpeta.
Seguro que esto ya se ha visto por aquí antes, pero yo no lo he encontrado y espero que le sirva a alguien
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 // FileMaker 11 + 12 Advanced
|
Moderador

|
#2 Publicado: 12 Dic 2019 22:58
Gracias apiguay. Ahí va el puntazo verde  Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay solo 10 tipos de personas en el mundo: las que saben binario y las que no.
__Date de alta en la Zona De Descargas Reservada__
Windows 10 + FileMaker Pro 11/19
|
Moderador

|
#3 Publicado: 12 Dic 2019 23:02
Bueno, ahí quizá habría que meter tu aporte. Seguramente es más correcto que mi cálculo:
Let ( [ ~nombreArchivo = GetValue ( CampoContenedor ; ValueCount ( CampoContenedor ) ) ; //te da el último elemento de la lista. ~largoNombreArchivo = Length ( ~nombreArchivo ) ; //longitud del último elemento de la lista ~posicionUltimoPunto = Position ( ~nombreArchivo ; "." ; 1 ; PatternCount ( ~nombreArchivo ; "." ) ) //posición del último punto ] ;
Right ( ~nombreArchivo ; ~largoNombreArchivo - ~posicionUltimoPunto )
)
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 // FileMaker 11 + 12 Advanced
|
Administrador

|
#4 Publicado: 13 Dic 2019 08:05
apyguay, me he permitido cambiar el título del hilo y pasarlo a TRUCOS Espero que no te moleste.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Moderador

|
#5 Publicado: 13 Dic 2019 09:33
jcu: apyguay, me he permitido cambiar el título del hilo y pasarlo a TRUCOS Espero que no te moleste. Faltaría más. No tienes que dar ninguna explicación 
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 // FileMaker 11 + 12 Advanced
|
Miembro
 Constante
  
|
#6 Publicado: 16 Dic 2019 12:55
Muchas gracias por el aporte, es fenomenal. Super útil, precisamente iba a preguntar como solventar lo que hace el guión. Por favor, está escrito el guión con la modificación Let incluida?. Caso de no estar, sería posible incluirlo en su posición correcta?. De nuevo muchas gracias por este trabajo. Saludos y si no tenemos oportunidad después, aprovecho para desearos a todos una Feliz Navidad.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Filemaker 19. Mac OS Big Sur
|
Moderador

|
#7 Publicado: 16 Dic 2019 17:20 - Editado por: flusheddata
Hola: Permitir cancelación del usuario [ Inactivo ] Establecer captura de errores [ Activo ] If [ IsEmpty (Clientes::Contenedor1 ) ] Ir al campo [ Clientes::Contenedor1 ] Insertar archivo [ ] [ Método de almacenamiento: Insertar ] [ Mostrar contenido ] [ Compresión: No comprimir nunca ] Consignar registros/peticiones Detener guión Else Establecer variable [ $temporal ; Valor:"file:" & Get ( TemporaryPath ) & "archivo." & Let ( [ ~nombreArchivo = GetValue ( Clientes::Contenedor ; ValueCount ( Clientes::Contenedor ) ) ; //te da el último elemento del nombre de archivo. ~largoNombreArchivo = Length ( ~nombreArchivo ) ; //longitud del último elemento del nombre de archivo ~posicionUltimoPunto = Position ( ~nombreArchivo ; "." ; 1 ; PatternCount ( ~nombreArchivo ; "." ) ) //posición del último punto ] ;
Right ( ~nombreArchivo ; ~largoNombreArchivo - ~posicionUltimoPunto )
) ] Exportar contenido del campo [ Clientes::Contenedor ; "$temporal" ; Abrir automáticamente ] Consignar registros/peticiones [ Sin diálogo ] End If
Nota: donde pone Clientes::Contenedor tienes que poner tu campo contenedor. He modificado un poco lo de la ruta a la carpeta temporal mediante la función apropiada.
Sls. y Feliz Navidad
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay solo 10 tipos de personas en el mundo: las que saben binario y las que no.
__Date de alta en la Zona De Descargas Reservada__
Windows 10 + FileMaker Pro 11/19
|
Moderador

|
#8 Publicado: 16 Dic 2019 19:40 - Editado por: apyguay
Francisco Comeron: Muchas gracias por el aporte, es fenomenal. Super útil, precisamente iba a preguntar como solventar lo que hace el guión. Por favor, está escrito el guión con la modificación Let incluida?. Caso de no estar, sería posible incluirlo en su posición correcta?. De nuevo muchas gracias por este trabajo. Saludos y si no tenemos oportunidad después, aprovecho para desearos a todos una Feliz Navidad. Ya está con la función "Let" y la modificación de la carpeta temporal
flusheddata: Nota: donde pone Clientes::Contenedor tienes que poner tu campo contenedor. He modificado un poco lo de la ruta a la carpeta temporal mediante la función apropiada. Esto ya lo he modificado también por "CAMPO_CONTENEDOR" Gracias por las modificaciones y la ayuda. He leído en la ayuda de FM que utiliza una carpeta temporal y al cerrar la base de datos elimina esos archivos. Eso es especialmente importante porque a veces son informes médicos y no conviene dejar más rastros de los necesarios. En mi guión, al principio, utilizaba una carpeta temporal propia y siempre quedaba el último archivo de cada extensión
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 10 // FileMaker 11 + 12 Advanced
|
Miembro
Habitual

|
#9 Publicado: 22 Ene 2020 23:27
Hola,
Tenia el mismo problema y se ha solucionado con este guion, asi que, muchisimas gracias. Pero ahora no me adjunta los pdf a los correos. Alguien sabe como solucionarlo?
Gracias por vuestra ayuda Un saludo
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Filemaker Pro 18.0.3 Advance, Windows 10
|