Bloqueo de fichero
Bloqueo de fichero
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
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
-
- Posts: 366
- Joined: Wed Aug 30, 2006 5:25 pm
- Location: Uruguay
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.
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.
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
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.
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
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
- 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
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
yo lo hago asi
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.
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.
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
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
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
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".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
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Hola Armando, me referia al propio programa, no al operador, puse esta rutina 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
Code: Select all
//----------------------------------
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
//---------------------------------
Además puse un boton para cargar las imágenes, todo controlado por la BD, y funciona fabuloso
Saludos
Jose Luis
- Armando Picon
- Posts: 448
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
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.
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com