Imprimir página | Cerrar ventana

Control de archivos de onedrive abiertos

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86345
Fecha de impresión: 02/Julio/2022 a las 22:54


Tema: Control de archivos de onedrive abiertos
Publicado por: dokk
Asunto: Control de archivos de onedrive abiertos
Fecha de publicación: 12/Mayo/2022 a las 10:05
Buenos días: 

A ver si alguien tiene alguna idea sobre lo siguiente.

En la empresa trabajamos con Onedrive y el ERP que tengo programado en Access trabaja bastante contra esa plataforma. Por ejemplo, si recibo una factura de un proveedor, cuando la registro en el ERP hago una copia de la factura con un nombre normalizado que va a la correspondiente carpeta del Onedrive. Hasta ahí, que sólo es añadir archivos a Onedrive, todo bien.

Otra de las funciones que he implementado es el envío de solicitudes de presupuesto y pedidos por email directamente desde el ERP. Esos envíos muchas veces llevan adjuntos planos de diseño. Ocurre que los planos de diseño los puede tener abiertos el delineante de turno y alguien de operaciones tener que hacer el pedido. ¿Se os ocurre cómo podría saber si un archivo de Onedrive está en uso en otro equipo (por ejemplo en el equipo del delineante cuando alguien quiere mandar ese plano)?

El tema se puede complicar más aún cuando lo que se quiere hacer es mover una carpeta y alguien tiene abierto alguno de los archivos de esa carpeta.

Gracias por adelantado.


-------------
Albert Hostein
Aprendiendo cayendo



Respuestas:
Publicado por: dokk
Fecha de publicación: 16/Mayo/2022 a las 13:21
Veo que nadie responde y yo de momento tampoco he llegado a ninguna solución. Investigando un poco he visto que hay una API para Onedrive, pero mi experiencia en programación se limita a Access y no sé si con esto se podría hacer algo. 

¿Hay alguien que haya trabajado con esta API por aquí? Si lo hay, ¿sabría ese alguien decirme si para una carpeta o archivo concretos la API puede indicar si éstos están siendo usados por alguien en un momento dado?


-------------
Albert Hostein
Aprendiendo cayendo


Publicado por: Mihura
Fecha de publicación: 16/Mayo/2022 a las 13:35
Hola,
Una manera de ver si el archivo está siendo usado es intentar abrirlo como fichero binario en modo exclusivo para lectura ... otra cosa distinta es como se comporte el onedrive.


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: dokk
Fecha de publicación: 16/Mayo/2022 a las 15:26
Gracias, Mihura. Eso es lo que hago en un equipo local.

El tema es que Onedrive mantiene una copia local en cada equipo. Si un equipo tiene una copia de un archivo abierta y yo usando FSO trato de llevarme la carpeta (moverla) me genera problemas de sincronización. Ese equipo sincroniza el archivo que tenía abierto y el árbol de carpetas, de forma que mantiene copias innecesarias.

Por eso quiero saber desde un equipo de la red si otros equipos tienen abiertos alguno/s de esos archivos. Y eso creo que la API de Onedrive lo permitirá de alguna forma, pero no sé nio por donde agarrarla.

De momento, hace un rato, he hecho una pequeña prueba que no parece ir mal, pero creo que tiene que haber una solución mejor (más óptima).

El ERP que tengo programado tiene un formulario timer oculto con el que hago una serie de comprobaciones permanentes. Por ejemplo, compruebo que si el archivo se ha mantenido abierto media hora sin que haya habido interacción por parte del usuario, se cierre el programa. O cuando voy a hacer una tarea de mantenimiento, cambio un valor en una tabla y, tras un aviso, a los 30 segundos hago que se cierre el programa en todos los equipos. 

Lo que he probado es lo siguiente: el equipo que va a ordenar el movimiento de una carpeta o archivo, guarda las rutas de los archivos en una tabla y luego dejo un tiempo de pausa en el que todos los demás equipos, a través de la rutina timer, hacen una comprobación en local del tipo que comentas, Mihura. Si algún archivo está en uso, detengo la movimiento de los archivos y doy un aviso al usuario.


-------------
Albert Hostein
Aprendiendo cayendo


Publicado por: lupecinda
Fecha de publicación: 17/Mayo/2022 a las 13:46
Hola, no tengo ninguna experiencia con la API de onedrive, pero buscando en su documentación encontré esto:
https://docs.microsoft.com/en-us/onedrive/developer/rest-api/resources/itemactivitytimeset?view=odsp-graph-online
Te da dos valores, el de cuando ha sido modificado el archivo y el de cuando ha sido "observado", que parece cuándo ha sido modificado offline.
Saludos
Carlos


-------------
Lupita


Publicado por: dokk
Fecha de publicación: 17/Mayo/2022 a las 14:08
Gracias, Lupecinda. Yo también estoy investigando esa documentación y el video de AUGE sobre Web servicio REST con Access. A ver si llego a algún sitio.

-------------
Albert Hostein
Aprendiendo cayendo



Imprimir página | Cerrar ventana