Bloqueo de fichero

Bloqueo de fichero

Postby JoseLuis » Fri Jan 12, 2007 11:17 pm

Hola amigos
Tengo un trabajo entre manos y no se como resolverlo
La idea es que en un directorio hay varios ficheros .jpg que contienen imagenes de albaranes, cargarlos en un array, y presentar siempre el primero para trabajar, una vez hecho el trabajo, borrar dicho fichero. Hasta ahí no hay problema si hubiera un solo operador, pero en un sistema de red, si un operador tiene el jpg en pantalla y todavía no lo ha destruido, al cargar otro operador el array, también cargaría en pantalla el mismo fichero, ya que sería el primero del array; por lo que los dos trabajarían en el mismo albarán.

Me gustaría saber si hay alguna forma de cuando trabajo con un .jpg, bloquearlo para que no lo pueda capturar otro operador.

Si no fuera así, sería buena idea para impedir duplicidad, copiar éste fichero en otro directorio temporal y borrarlo del directorio anterior mientras se meten los datos de éste?

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Ruben Fernandez » Sat Jan 13, 2007 4:53 am

Jose Luis:

Quizas te pueda servir:
Archivos: Alba1.jpg, Alba2.jpg, Alba3.jpg, ....

Base de datos: con 2 campos nombre y estatus:
Nombre -> Alba1
Estatus -> H (Habilitado), U (usando,en uso)

Cuando borras el archivo tambien lo borras de la base de datos.

Es lo que se me ocurre.

Saludos

Ruben Fernandez.
Ruben Fernandez
 
Posts: 366
Joined: Wed Aug 30, 2006 5:25 pm
Location: Uruguay

Postby Armando Picon » Sat Jan 13, 2007 5:27 am

Complementando...

Tus jpg se encuentran inscritas en la BD. Si uno está en uso el flag de estatus debe ponerse en "U" y por tanto no se carga a tu array... cuando terminan el trabajo el status cambia a "H".

Me parece que sía una solución por la via que estás yendo.

Ruben Fernandez wrote:Jose Luis:

Quizas te pueda servir:
Archivos: Alba1.jpg, Alba2.jpg, Alba3.jpg, ....

Base de datos: con 2 campos nombre y estatus:
Nombre -> Alba1
Estatus -> H (Habilitado), U (usando,en uso)

Cuando borras el archivo tambien lo borras de la base de datos.

Es lo que se me ocurre.

Saludos

Ruben Fernandez.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby JoseLuis » Sat Jan 13, 2007 10:06 am

Entonces deduzco por vuestra idea, que tendría que haber una BD por ejemplo "Imagenes.DBF", en la que cuando un operador cualquiera entre en ésta opción haga lo siguiente:
- 1º Cargar un array con los nombres de los documentos que hay en el directorio.
- 2º Comprobar los nombres de éste array con los que hay en la BD
- 3º Añadir los que no existan.
- 4º Cuando se ponga a trabajar con ellos, que marque el que está en uso

Tendré que usar ésta opción, ya que no veo otra en la que no se duplique el trabajo en un momento dado.

Muchas gracias por vuestra ayuda

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Armando Picon » Sat Jan 13, 2007 3:54 pm

Esa es la idea...!!! De ese modo aseguras que no haya uso duplicado o mas segun los usuarios de tu programa.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

yo lo hago asi

Postby fleal » Sun Jan 14, 2007 12:20 am

Yo lo hago asi con imagenes tif
Tengo 5 usuarios las imagenes van desde el 0001.tif hasta x número de imagenes.
El programa hace un while desde el 0001 en adelante. El primer usuario en tomar una imagen hace que el programa cree un archivo txt con el mismo nombre de la imagen. Entonces el siguiente usuario al entrar el programa verifica si existe un archivo txt con el mismo nombre de la imagen. Si ya existe pasa al siguiente archivo... y asi sucesivamente hasta que encuentre una imagen que no tenga un archivo txt con el mismo nombre.
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Postby JoseLuis » Sun Jan 14, 2007 10:43 am

He hecho pruebas, y me es mas facil tener controlado el tema por una base de datos, ya que además puedo incluir un campo que se llama Usuario, con lo que el usuario puede dejar reservadas imágenes para pasarlas él, por ejemplo las de un determinado cliente si pertenece a su zona, etc.

Ya está acabado. La idea era que a primera hora, se escaneen todos los albaranes, y en lugar de pasarlos físicamente, pasarlos visualmente. Esto tiene la ventaja de que si necesitamos una copia en el futuro, no hay que ir a archivo a buscarla, simplemente se localiza y se imprime.

Los albaranes se escanean en una carpeta provisional de trabajo, según se van realizando, borrarlos de ésta carpeta y pasarlos a una definitiva, desde la que incluso los clientes con una clave pueden acceder a éstas imagenes.

Lo que yo no sé es si será un trabajo excesivo para el ordenador, estar continuamente por cada operador, copiando mediante copy file to, a éste directorio defitinitivo, y borrando el fichero del directorio de trabajo, en fin ya veremos.

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Armando Picon » Mon Jan 15, 2007 3:14 pm

JoseLuis wrote:He hecho pruebas, y me es mas facil tener controlado el tema por una base de datos, ya que además puedo incluir un campo que se llama Usuario, con lo que el usuario puede dejar reservadas imágenes para pasarlas él, por ejemplo las de un determinado cliente si pertenece a su zona, etc.

Ya está acabado. La idea era que a primera hora, se escaneen todos los albaranes, y en lugar de pasarlos físicamente, pasarlos visualmente. Esto tiene la ventaja de que si necesitamos una copia en el futuro, no hay que ir a archivo a buscarla, simplemente se localiza y se imprime.

Los albaranes se escanean en una carpeta provisional de trabajo, según se van realizando, borrarlos de ésta carpeta y pasarlos a una definitiva, desde la que incluso los clientes con una clave pueden acceder a éstas imagenes.

Lo que yo no sé es si será un trabajo excesivo para el ordenador, estar continuamente por cada operador, copiando mediante copy file to, a éste directorio defitinitivo, y borrando el fichero del directorio de trabajo, en fin ya veremos.

Saludos

Jose Luis


Mi sugerencia es que a tu aplicacion le dotes de un boton que lee la carpeta de trabajo y que si encuentra una imagen nueva que lo inscriba en la BD. De esa forma creo que disminuiría la carga de trabajo y que los operadores hagan algo más productivo que estar haciendo "copy file".
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby JoseLuis » Mon Jan 15, 2007 7:29 pm

Hola Armando, me referia al propio programa, no al operador, puse esta rutina
Code: Select all  Expand view
//----------------------------------
static function borraimagen(aAlias,ficheros)
local numero
numero:=Str((aAlias[24])->Orden,7)+'.jpg'
copy file (Publicas:rimagen+ficheros) to (Publicas:eimagen+numero)
Ferase(Publicas:rimagen+ficheros)
While .not. (aAlias[14])->(Rlock()); end
(aAlias[14])->( dbdelete())
(aAlias[14])->( dbUnlock() )
return nil
//---------------------------------
Quería decir que si no sería mucho trabajo para los discos duros del Ordenador.
Además puse un boton para cargar las imágenes, todo controlado por la BD, y funciona fabuloso

Saludos

Jose Luis
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby Armando Picon » Mon Jan 15, 2007 11:10 pm

Bien... no creo que sea muchotabajo para el disco duro. Lo que puede suceder esque haya bastantes imagenes que copiar y borrar en cuyo caso, al estar la PC haciendo trabajo en bajo nivel, podría bajar la performance del equipo... no se hasta cuanto pero si que lo puede bajar.

Otra forma seria que inscribieras directamente, desde la carpeta inicial de imagenes, los nombres en la base de datos... sin borrarlas y que despues mediante una rutina utilitaria separada de este modulo efectuaras el borrado de las imagenes existentes en la carpeta inicial... porque ya no las necesitas.

Otra forma forma, que puede servirte siempre y cuando tengas disco duro suficiente, es almacenar las imágenes directamente en la BD en el momento que las inscribes (en campos blob). En este caso seria tu BD la que contenga las imagenes para consultas en linea.

Bueno... hay varias formas, cada una tiene sus particularidades a favor y en contra.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 48 guests