Check the new version here

Popular channels

Saber los usuarios que están usando la Aplicación en Foxpro

Te contaré como controlo yo este tema de los usuarios en aplicaciones en red, quizás te pueda servir.Añado una tabla adicional con los siguientes campos: Puesto, Fecha, Hora, UsuarioEn esta tabla, al configurar el puesto de red para que pueda operar con la aplicación, el proceso agrega un registro a dicha tabla ydeja en el campo "Puesto" el valor de sys(0) que devuelve como ya sabrás (la máquina de red cuando se utiliza VFP en un entornode red.)Cuando una máquina, arranca la aplicación lo primero que hace es buscar en dicha tabla su sys(0)SELE "loquesea"LOCATE FOR sys(0) $ "loquesea".puesto*** y si no lo encuentra está claro que no se le permite seguir ....

IF eof() && no se encontró***(mensaje de: terminal no autorizado y a la P. calle)QUITENDIFsi lo encuentra, BLOQUEA EL REGISTRO Y pone en los campos fecha, hora, usuario los respectivos valoresSET REPROCESS TO 1IF .not. lock() && ya esta bloqueado la aplicación esta arrancada en este puestoquit && salidaENDIFREPLACE "loquesea".Fecha WITH date(), "loquesea".Hora with time(),"loquesea".Usuario with m.user SET REPROCESS TO "lo que uses habitualmente"Este bloqueo, lo mantengo hasta que salga de la aplicación como se debe salir y entonces deja en blanco los campos fecha, hora,usuario a la vez que desbloquea el registro.REPLACE "loquesea".Fecha WITH {" "}, "loquesea".Hora with "","loquesea".Usuario with ""unlock

La ventaj que esto tiene, es que al salir de la aplicación "de forma incorrecta, por error, apagon etc" se desbloquea el registro si bien quedan anotados los datos del puesto, usuario, fecha y hora; los que borro si sale como es debido.Si al entrar en la aplicación, el registro está bloqueado, es señal de que ya tiene abierta la aplicación y seguramente la tieneminimizada por lo que puedes procedo a levantarsela y no seguir en esta nueva apertura.Si al entrar en la aplicación, no esta bloqueado el registro pero resulta que se encuentra los valores de fecha, hora, usuario; esseñal de que la vez anterior que entró, no salido de forma correcta; en tal caso procedo a lanzarle un mensaje de SEVERO YPELIGROSO AVISO ( ...tal usuario, entro en fecha y hora a la aplicación y no salio como debía, "es la XXXX vez que se apagade forma ilegal" operación muy peligrosa, posible perdida de datos ...avise al servicio tecnico...)¡ No te puedes hacer idea, de lo bien que queda uno cuando hay problemas y puedes mirar y decirles que ya se ha salido de laaplicación 23 veces de forma incorrecta, que ¿que es lo que quieren que hagas?, merece la pena guardar estos incidentes ya queseguramente, acabarán por mostrarte que puestos tienen problemas, bien sea de operador o de máquina o quizás dewindows, reinstalar nuevamente el windows en algunas máquinas suele ser el final de muchos problemas.Para saber si un terminal, esta conectado, o cuantos hay conectados solamente habrá que repasar la tabla en cuestión y contar elnumero de registro bloqueados.

SET REPROCESS TO 1SELE "loquesea"GO TOPm.contador=0DO WHIL .not. eof()m.contador=m.contador+IIF(lock(),0,1)unclock SKIPENDDSET REPROCESS TO "lo que uses habitualmente"? "Hay "+str(m.contador)+" terminales conectados"Espero que todo lo anterior, te pueda servir de algo.
0No comments yet