Como Saber si una DBF y aplicacion esta abierta en red

2,856 views
Skip to first unread message

Gelsen

unread,
May 14, 2012, 7:30:27 PM5/14/12
to publice...@googlegroups.com
Tengo un sistema y necesito que al cerrar caja y fecha en una pc principal, antes de realizar el proceso que todas las maquinas esten apagadas o fuera del sistema, y me falta conocer alguna funciona que me indique si aun esta abierto la aplicacion en algun punto de red.

Carlos Miguel FARIAS

unread,
May 14, 2012, 8:05:41 PM5/14/12
to publice...@googlegroups.com
Deberías tener una tabla que cuente las veces que está abierta cada tabla, y hasta si una pc, tiene la aplicación corriendo, más allá si abrió tablas. Por supuesto que, además, si se cae el sistema, deberás contar con algún sistema que resetee el sistema.
Saludos: Miguel, La Pampa (RA)

Guillermo MDQ

unread,
May 14, 2012, 10:52:42 PM5/14/12
to publice...@googlegroups.com
Te aconsejo que utilices esta clase de Victor Espina, que te permite saber que equipos tienen activa tu aplicacion.
Funciona excelente.

http://www.victorespina.com.ve/wiki/index.php?title=Como_controlar_el_numero_de_estaciones_que_pueden_ejecutar_una_aplicacion_%28VFP%29

Saludos
Guillermo

Walter R. Ojeda Valiente

unread,
May 15, 2012, 12:15:24 AM5/15/12
to publice...@googlegroups.com
Lo más fácil sería que tengas una tabla .DBF abierta en modo compartido en todas y cada una de las computadoras, desde que se inicia tu aplicación hasta que se termina.

Cuando necesitas hacer un proceso que requiere que solamente una computadora esté ejecutando tu aplicación intentas abrir esa tabla en modo exclusivo. Si lo consigues, nadie más está usándola lo cual significa que en ninguna otra computadora se está ejecutando tu aplicación. Para evitar que después de iniciado ese proceso ejecuten tu aplicación en otra computadora, lo primero que debes hacer en tu programa MAIN.PRG es evitar la ejecución si no se pudo abrir la tabla en modo compartido.

TRY
  USE MiTablaTestigo SHARED
CATCH
  =MessageBox("No se puede ejecutar la aplicación ahora, inténtalo más tarde")
  QUIT
ENDTRY

Saludos.

Walter.







Date: Mon, 14 May 2012 16:30:27 -0700
From: gel...@hotmail.com
To: publice...@googlegroups.com
Subject: [vfp] Como Saber si una DBF y aplicacion esta abierta en red

Julio Cesar Vente Ruiz

unread,
May 15, 2012, 12:18:46 AM5/15/12
to publice...@googlegroups.com
Hola, yo desde hace un tiempo uso estas funciones..


******* SABER SI LA DB ESTA EN USO
FUNCTION DBUSO(NOMBRE)
Local OpenDB
OpenDb=.F.
On Error OpenDB=.T.
Open database &NOMBRE Exclusive
if opendb Then
 *Base de datos esta en uso por otra PC
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 1
Else
 *Base de datos Libre
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
RETURN 0
Endif
ENDFUNC


******* SABER SI LA DB ESTA EXCLUSIBE
FUNCTION DBEXCLU(NOMBRE)
Local OpenDB
OpenDb=.F.
On Error OpenDB=.T.
Open database &NOMBRE SHARED

if OpenDB Then
 *Base de datos esta en uso Exclusivo
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
 RETURN 1
Else
 *Base de datos esta Libre
ON ERROR MG_ERROR(ERROR(),MESSAGE(),MESSAGE(1),PROGRAM(),LINENO())
 RETURN 0
Endif
ENDFUNC
--


Julio Cesar Vente Ruiz

Gelsen

unread,
May 15, 2012, 12:47:28 PM5/15/12
to publice...@googlegroups.com
Muchas gracias, me fueron muy utiles sus respuestas

Mario Dal Degan

unread,
May 16, 2012, 8:24:48 AM5/16/12
to publice...@googlegroups.com
Yo utilizo esta función que publicó LMG en Portal Fox, que además sirve para cualquier tipo de archivo.
http://www.portalfox.com/index.php?name=News&file=article&sid=27&mode=nested&order=0&thold=0

Éxitos

Mario Oviedo

unread,
May 23, 2012, 6:23:58 PM5/23/12
to publice...@googlegroups.com
si quieres utilizar la opcion de cierre, colocas un bandera en una tabla

use tabla cierre
repl next 1 cierre with "C"

un timer en la forma que queres que este cerrada
podes estar abriendo esa tabla
si esa tabla en cierre tiene una C

cierras la aplicacion

haces el cierre

y luego volves el cierre a blanco o una "A"

Arnaldo Toledano

unread,
May 15, 2012, 7:03:53 PM5/15/12
to publice...@googlegroups.com
A mi criterio lo que plantea Walter es lo mas facil y correcto.
1.-Tenes una Tabla Testigo.
2.-Cuando abris el sistemas, usas esa tabla y la dejas ABIERTA.
3.- Al momento de "cerrar la caja", en el form correspondiente en el INIT cerras la tabla Testigo.
4.- A continuacion la abris de manera EXCLUSIVA.
4.1. Si no te permite UTILIZALA porque otra PC la tiene abierta, punto no emitis la caja.
4.2. SI por el contrario te permite UTILIZARLA, emitis el cierre de caja y punto.


Arnaldo Toledano


Lourdes Casco Guerrero

unread,
Nov 16, 2017, 6:16:48 PM11/16/17
to Comunidad de Visual Foxpro en Español
Me pareció genila esta idea... ya la implemeté y está de lujo 
Reply all
Reply to author
Forward
0 new messages