FoxPro/Visual FoxPro - SAber si la aplicacion esta siendo usada

 
Vista:

SAber si la aplicacion esta siendo usada

Publicado por Yo (19 intervenciones) el 15/09/2001 00:35:11
Como puedo saber si una aplicacion que trabaja a nivel de red esta siendo utilizada por alguna otra maquina..
Lo que quiero es algo como Cuando se abre un archivo de word en una maquina y otra persona en otra maquina intenta abrirlo por lo cual a la segunda persona se le presenta un ventana de informacion en la cual se indica el archivo esta siendo usado por otra persona....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Normalmente son tablas....

Publicado por Pedro Gómez (86 intervenciones) el 15/09/2001 01:47:36
Mira ha excepcion de que alguien sepa otra cosa me interesaria.
Pero normalmente he sabido que si usas una tabla al comienzo de tu sistema podrias ocupar la funcion FLOCK() junto con un tiempo estimado del SET REPROCESS TO para bloquear la tabla y si no se bloquea por otro usuario quiere decir que esta ocupado por otro usuario y puedes enviar el mensaje, es decir:

FLOCK( ) Example
CLOSE DATABASES
SET REPROCESS TO 3 SECONDS
SELECT * FROM parts INTO TABLE newparts
IF FLOCK( )
*** Year end sales & commission initialization ***
REPLACE ALL onhand WITH 0.00
REPLACE ALL onorder WITH 0.00
WAIT 'Initialization Complete - Press any key' WINDOW NOWAIT
ELSE
*** File is locked, warn user ***
WAIT WINDOW 'Unable to open sales file, try again later!' NOWAIT
ENDIF
BROWSE
CLOSE DATABASES
ERASE newparts.dbf

Investiga esto, ya que lo saque del Help de Fox
lo mismo aplica si deseas hacerlo por cada formulario, es decir tendrias que crear una tabla por formulario y identificar por medio de que tabla se esta usando que pantalla se esta ocupando.
Por mi parte es todo pero si seria interesante saber otra opinion
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Normalmente son tablas....

Publicado por wences (457 intervenciones) el 15/09/2001 12:40:53
Puedes hacerlo de otra manera , posiblemente mas facil ... simplemente abre una tabla en exclusivo (use mi_tabla in 0 exclusive ) , cuando otro cualquiera quiera ejecutarlo devolvera que ya esta en uso , si tienes un programa de errores , bloqueas el mensaje y devuelves el que quieras y cierras ...

Existe alguna utilidad en universalthread . programas que se encargan de eso ...

Espero te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Y si no es una tabla?

Publicado por Raúl Godoy (86 intervenciones) el 16/09/2001 20:22:09
La mejor solución que encontré para saber si un archivo (aplicación, tabla, lo que fuere) está siendo usado es la siguiente función:

FUNC USEDX (pArchivo)
local vFHnd
vFHnd=fopen(pArchivo)
if vFHnd=-1
* Puede ir un mensaje.
messageb("El archivo "+pArchivo+" está siendo utilizado.....")
retu .t.
else
retu .f.
endif
ENDF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Y si no es una tabla?

Publicado por Raúl Godoy (86 intervenciones) el 16/09/2001 20:22:38
La mejor solución que encontré para saber si un archivo (aplicación, tabla, lo que fuere) está siendo usado es la siguiente función:

FUNC USEDX (pArchivo)
local vFHnd
vFHnd=fopen(pArchivo)
if vFHnd=-1
* Puede ir un mensaje.
messageb("El archivo "+pArchivo+" está siendo utilizado.....")
retu .t.
else
fclose(pArchivo)
retu .f.
endif
ENDF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muy bien....

Publicado por Pedro Gomez (86 intervenciones) el 17/09/2001 16:52:50
Lo que Raul Godoy comenta esta bien ya que son funciones para abrir archivos a bajo nivel, es decir de manera hexadecimal puede verse caracter a caracter. Con poder saber que el FOPEN pudo abrir cualquier archivo se identifica si esta en uso o no. Muy bien, Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar