MATAR TODAS LAS SESIONES ACTIVAS AL SALIR DEL SISTEMA

252 views
Skip to first unread message

Juan Carlos M

unread,
Mar 11, 2021, 2:32:42 PM3/11/21
to Comunidad de Visual Foxpro en Español
Saludos Amigos Foxeros

Hay alguna manera de matar TODAS las sesiones activas al salir de un sistema (Del usuario que libera su sesión)  ??? , antes consideraba que al salir del sistema se cerraba la sesión automáticamente, pero al parecer no es así, ya que se alenta drasticamente el funcionamiento del sistema ciertas horas del día, y de cada usuario, cuando se debirea tener solo 1 sesión se tienen hasta  20 o más sesiones en estado Sleeping.

Agradezco de Antemano su apoyo 

Francisco Lorente

unread,
Mar 12, 2021, 3:12:18 AM3/12/21
to Comunidad de Visual Foxpro en Español
Hola, Juan Carlos.

Desconozco si hay algún comando o método que haga lo que dices.
A bote pronto se me ocurre un bucle que recorra X número de sesiones y si puede seleccionarlas cierre las tablas y cursores abierta en ellas, algo así como esto:

    m.lCurrentSession = Set("Datasession")
    For m.i = 1 To 100
        Try
            Set Datasession To m.i
            Close Tables All
        Catch
        EndTry
    EndFor
    Set Datasession To m.lCurrentSession

Saludos.
Francisco Lorente.
Murcia. España.

Victor L. Lujan C.

unread,
Mar 12, 2021, 10:00:41 AM3/12/21
to publice...@googlegroups.com

Hola Juan Carlos

 

Por lo que entiendo usas una base de datos tipo MSSQL server o parecida. En algún momento me pareció que me sucedía algo parecido a lo que comentas. Hice pruebas usando el método “destroy” pero no me fue muy bien (quizá algo no usé bien) y lo que hice es q en el formulario el usuario no lo cierre usando la “X” de las ventanas de Windows y coloque un botón “Cerrar” y allí escribí:

 

close database all

sqldisconnect(<VarConexion>)

quit

 

Hasta ahora me resulta y para ayudar al usuario a no usar mucho el mouse activé la propiedad “Cancel” a True para que cierre el formulario presionando “Esc”

 

Espero haberte ayudado.

 

Atentamente

 

Luis Lujan

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/d13604bf-67fe-4506-bb75-e7f8d6e27256n%40googlegroups.com.

Fernando Puyuelo Ossorio

unread,
Mar 12, 2021, 10:11:50 AM3/12/21
to Comunidad de Visual Foxpro en Español
Personalmente yo empleo un programita para limpiar todo.. lo que incluye cerrar transacciones, etc.
Segúramente podrás seleccionar la parte del código que necesites.

*---------------------------------------------------------
* Método:
* INICIA.PRG
* Parameters:
*
* Objetivo:
* Limpiar todo el entorno de Fox, limpiar variables, objetos, macros, revertir transaciones pendientes y desconectar todas las sesiones
* Programador:
* Fernando PUyuelo Ossorio
* Fecha de Terminación:
* 12/03/2021 16:09:21
* Modificaciones:
*---------------------------------------------------------



ON SHUTDOWN
CLEAR EVENTS
CLEAR PROGRAM
release all
clear all
clear all class
clear all classlib
clear all dlls
clear all fields
clear all gets
clear all macros
clear all memory
clear all menus
clear all popups
clear all prompt
clear read all
clear all typeahead
clear all windows

set procedure to
set classlib to


FOR i = 1 to 255
SELECT i
IF !empty(alias())
=tablerevert(.t.)
ENDIF
ENDFOR


CLOSE TABLES ALL
CLOSE DATA ALL
CLOSE ALL
Release ALL
Clear ALL


set procedure to
set classlib to


Clear
Clear ALL
CLOSE ALL
CLEAR PROGRAM
Release ALL
MODI WINDOW SCREEN

set procedure to
set classlib to


ON KEY
ON KEY LABEL TAB
ON KEY LABEL ENTER
ON KEY LABEL ESCAPE

clear resources

SET SYSMENU TO
SET SYSMENU AUTOMATIC
SET SYSMENU TO DEFAULT



*!*  Limpia el entorno de otras transacciones 
DO WHILE TXNLEVEL( ) > 0
   ROLLBACK
ENDDO


? SQLDISCONNECT(0)


* KEYBOARD 'CANCEL {ENTER}'

* Despues de darme un montón de errores de tipo C0000005, he conseguido aislar que haciendo
* un SET SYSMENU TO DEFAULT en la ventana de comandos me dejaba de dar esos errore.
* Por programación no lo he conseguido, pero así ya no me da errores.
* Bienvenido sea.
KEYBOARD 'SET SYSMENU TO DEFAULT {ENTER}'

_screen.LockScreen = .F.
_screen.Cls()



El jueves, 11 de marzo de 2021 a las 20:32:42 UTC+1, Juan Carlos M escribió:
Reply all
Reply to author
Forward
0 new messages