Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Gestionar archivos adjuntos (https://www.clubdelphi.com/foros/showthread.php?t=87149)

Delphitest 20-11-2014 19:47:25

Gestionar archivos adjuntos
 
Buenas tardes,

en un form de clientes voy a necesitar "adjuntar" o vincular archivos a los registros.

Buscando en el foro veo que hay dos formas de hacerlo, o bien se adjuntan al registro y ese archivo como quien dice se "mete" en la base de datos o bien se podría indicar una ruta que apunte al fichero pero físicamente estaría en el disco duro del ordenador.

Este último método me gusta más, supongo que cada uno tendrá sus gustos.

Lo que no se es por donde empezar para hacer algo de esto.

La finalidad es que la Ficha del Cliente tenga una pestaña que por ejemplo se llame Documentos Adjuntos y que desde ahí pueda ver como un explorador de archivos desde donde pueda añadir o borrar ficheros o carpetas. Supongo que quizás exista un componente que ayude a ello.

¿Podríais orientarme?

Muchas Gracias

ecfisa 20-11-2014 20:23:41

Hola Delphitest.

Para añadir los nombres de archivos podes usar un TOpenDialog, por ejemplo mostrar en un TListBox los archivos seleccionados:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  OpenDialog1.Options:= OpenDialog1.Options + [ofAllowMultiSelect];
end;

procedure TForm1.btnAdjuntarClick(Sender: TObject);
begin
  with OpenDialog1 do
    if Execute then
      ListBox1.Items.Assign(Files);
end;
...
Logicamente el mostrado, borrado o modificación de las rutas, lo harías sobre la lista previamente cargada de la columna de una tabla y podrías mostrar estos con cualquier componente que maneje TStrings.

Te convendría almacenan las rutas a los archivos en una tabla separada de la de clientes y relacionarla a la columna ID del cliente. Esto flexibiliza la cantidad de rutas por usuario y optimiza el espacio utilizado ya que cada cliente tendrá las rutas a los archivos que haya elegido, sea ninguna o miles.

Saludos :)

Neftali [Germán.Estévez] 21-11-2014 10:09:11

Cita:

Empezado por ecfisa (Mensaje 485175)
Te convendría almacenan las rutas a los archivos en una tabla separada de la de clientes y relacionarla a la columna ID del cliente. Esto flexibiliza la cantidad de rutas por usuario y optimiza el espacio utilizado ya que cada cliente tendrá las rutas a los archivos que haya elegido, sea ninguna o miles.

Más que conveniente yo diría que es obligatorio, para poder definir correctamente una relación 1..N.
;)

Delphitest 21-12-2014 12:42:45

Buenos días,

he retomado este asunto y le estoy dando vueltas para no complicarlo mucho.

En lugar de registrar en la tabla todas las rutas de los archivos prefiero registrar solamente la ruta de la carpeta que los contenga.

Se me está ocurriendo lo siguiente pero no se como hacerlo.

Poner un Edit donde haya que reflejar el path completo de la carpeta donde se encuentren los documentos de ese cliente.

En lugar de tener que escribir esa ruta quiero poner un botón que la "Capture". Es decir que al pulsar el botón se abra una ventana con un explorador donde pueda ir desplazándome por el disco duro hasta llegar a la carpeta deseada. Una vez en ella, seleccionarla, cerrar la ventana y poner en el Edit la ruta que nos lleva a ella con ánimo de ver por debajo en un webbrowser su contenido.

No se si sería la forma correcta de hacer pero es una idea que me podría resultar práctica al menos que existan otras formas.

Lo que no sé en como hacer que se capture la ruta después de elegir la carpeta.

¿Alguna sugerencia para hacerlo?

Muchas Gracias y Felices Fiestas para todos

pacopenin 21-12-2014 17:38:32

Hola.

A la hora de gestionar documentos vinculados a una tabla yo siempre hago lo siguiente. :
  • Una tabla con la relación entre ambas, es decir, si es con clientes, la tabla documentos y la tabla clientes se relacionarían a través de otra que contendría las claves únicas de ambas.
  • Copio los documentos en cuestión a carpetas controladas por el programa, de forma que no haya problemas si cambian, mueven o borran el documento. Es necesario que a partir de ese momento sólamente se trabaje con el documento importado al programa.
  • Organizo las carpetas de la gestión documental generalmente por años.
Espero que te ayude.


Felices Fiestas a todos también.

newtron 22-12-2014 10:00:02

Cita:

Empezado por Delphitest (Mensaje 486948)
Lo que no sé en como hacer que se capture la ruta después de elegir la carpeta.

El maestro ecfisa te puso en su día un ejemplo de cómo asignar a una lista los archivos seleccionados desde el OpenDialog, ¿lo has probado?.

Saludos

Delphitest 22-12-2014 21:20:43

Muchas gracias a todos por vuestra ayuda,

quería simplificarlo al máximo y al final lo he hecho de la siguiente manera:

En la tabla clientes he añadido un campo que he llamado RutaDocumentos y el en Form he puesto un DBEdit que representa ese campo y un botón que ejecuta el componente JvSelectDirectory, en el evento OnAcceptChange se recoge la ruta seleccionada y se copia al DBEdit.

Para ver el contenido de esa carpeta pongo un WebExplorer.

Lo he probado y funciona bien aunque como en todo habrá otras formas de hacerlo. Lo único que no me hace mucha gracia es que la ruta está en un servidor y apunta a un path un poco largo así que se nota que ralentiza el acceso.

Ahora ando luchando con la presentación de los archivos en el WebExplorer a ver si puedo hacer que por defecto aparezcan en una lista en lugar de iconos.

Un saludo


La franja horaria es GMT +2. Ahora son las 19:25:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi