Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Monitoreo de usuarios activos en la aplicación.

Buenas tardes Delphianos .

Me han solicitado en la empresa donde estoy que haga una opción donde se puedan observar los usuarios que están activos en la aplicación con los siguientes datos:

Nompre de la PC.
IP Local.
UsuarioID de la red.
Hora Entrada.
Hora Salida

y todo esto en tiempo real.

He logrado hacer las 3 primeras cosas que son lo mas complicado con este código:


Código Delphi [-]

uses  WinSock,
  //Para la ip y el nombre del computador

  ComObj;     //para el usuario actual


function GetPCName: string;
var
  Buffer: array[0..MAX_COMPUTERNAME_LENGTH] of Char;
  Size: Cardinal;
begin
  FillChar(Buffer,Sizeof(Buffer),0);
  Size:= Sizeof(Buffer);
  if GetComputerName(Buffer,Size) then
    Result:= String(PChar(@Buffer))
  else
    Result:= '';
end;


function LocalIP : string; 
type 
TaPInAddr = array [0..10] of PInAddr; 
PaPInAddr = ^TaPInAddr; 
var 
phe : PHostEnt; 
pptr : PaPInAddr; 
Buffer : array [0..63] of char; 
I : Integer; 
GInitData : TWSADATA; 
begin 
WSAStartup($101, GInitData); 
Result := ''; 
GetHostName(Buffer, SizeOf(Buffer)); 
phe := GetHostByName(buffer); 
if phe = nil then Exit; 
pptr := PaPInAddr(Phe^.h_addr_list); 
I := 0; 
while pptr^[i] <> nil do 
begin 
result:=StrPas(inet_ntoa(pptr^[i]^)); 
Inc(I); 
end; 
WSACleanup; 
end;

procedure TForm1.Button6Click(Sender: TObject);
var Buffer: array [0..31] of Char;
begin
 GetEnvironmentVariable('USERNAME', @Buffer, SizeOf(Buffer));

Edit1.Text:= GetPCName;
edit2.text := LocalIP;
edit3.Text := Buffer

end;

Hasta aquí estoy bien, sin embargo no se como es la temática de este monitoreo.

Si alguien tiene experiencia en esto favor de darme una manito.

Gracias de antemano.

Saludos.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #2  
Antiguo 26-06-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jeremiselxi Ver Mensaje
Hasta aquí estoy bien, sin embargo no se como es la temática de este monitoreo.
Si alguien tiene experiencia en esto favor de darme una manito.
La primera explicación bien, pero llegados a la pregunta te has "dispersado"...
¿Cual es la pregunta exactamente?
¿En qué te podemos ayudar?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 26-06-2015
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Hasta aquí estoy bien, sin embargo no se como es la temática de este monitoreo.
Todo depende de a qué te refieras con "monitoreo".

Si quieres ver quién está conectado, puedes guardar estos datos en una base de datos y luego mirar quien se conecta, a que hora, etc.

También puedes querer que un mismo usuario no se conecte dos veces.
En este caso debes guardar en una base de datos los datos y al momento de conectar mirar si hay un registro activo (sin hora de salida). Si es así, cancelas la conexión y cierras el programa.

Si quieres ver qué es lo que hace cada usuario deberás guardar además "donde está" dentro de tu aplicación (formulario, modulo, etc.)
Responder Con Cita
  #4  
Antiguo 26-06-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Si quieres ver quién está conectado, puedes guardar estos datos en una base de datos y luego mirar quien se conecta, a que hora, etc.

También puedes querer que un mismo usuario no se conecte dos veces.
En este caso debes guardar en una base de datos los datos y al momento de conectar mirar si hay un registro activo (sin hora de salida). Si es así, cancelas la conexión y cierras el programa.
Muy buenos días.

Estas dos cosas que mencionas es exactamente lo que necesito.

Adjunto una imagen de una aplicación que lo hace.

El tema es que no se cómo sería la mejor práctica ya que por ejemplo tengo una tabla llamada Usuarios con los datos básicos, ID, Usuario, Contraseña, Nombre Completo, Cédula etc.

Entonces no se como proceder, no se si crear un campo adicional que diga conectado (true = Si y false=no), o si mejor tomo los datos que necesito de la tabla usuarios y lo agrego a otra tabla para el monitoreo de los usuarios que están conectado para saber la hora y la salida de ellos.

Podrían darme algunas sugerencias de sus conocimientos de mas o menos como lo harían ustedes, ya que no tengo experiencia en este tipo de solicitudes .

Ademas dicen que dos o mas cabezas piensan mas que que una
Imágenes Adjuntas
Tipo de Archivo: jpg usuarios conectados.jpg (19,5 KB, 20 visitas)
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
  #5  
Antiguo 26-06-2015
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
En mis aplicaciones tengo una tabla de entradas, en donde guardo cada conexión a la aplicación.
ENTRADA (ID, ID_USUARIO, ID_UBICACION, FECHA_ENTRADA, FECHA_SALIDA)
Cuando entra un usuario creo una entrada con el campo FECHA_SALIDA vacío.
Cuando sale el usuario, modifico el campo FECHA_SALIDA con la fecha y hora actual.

Con esto puedo saber qué usuario está conectado y además marco otras tablas con el ID de la entrada para saber quien creo el registro y cuando.

Pare evitar que un mismo usuario entre desde dos ubicaciones distintas, lo que hago es rellenar el campo FECHA_SALIDA con la fecha y hora actual de las entradas abiertas (FECHA_SALIDA vacia) en ubicaciones distintas a la actual.
Un Timer mira cada minuto si la entrada todavía está abierta.
Si se ha cerrado, informo al usuario que alguien ha entrado con su nombre de usuario desde otra aplicación y cierro la aplicación.
Responder Con Cita
  #6  
Antiguo 26-06-2015
Avatar de jeremiselxi
jeremiselxi jeremiselxi is offline
Miembro
 
Registrado: ago 2008
Posts: 199
Poder: 16
jeremiselxi Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
En mis aplicaciones tengo una tabla de entradas, en donde guardo cada conexión a la aplicación.
ENTRADA (ID, ID_USUARIO, ID_UBICACION, FECHA_ENTRADA, FECHA_SALIDA)
Cuando entra un usuario creo una entrada con el campo FECHA_SALIDA vacío.
Cuando sale el usuario, modifico el campo FECHA_SALIDA con la fecha y hora actual.

Con esto puedo saber qué usuario está conectado y además marco otras tablas con el ID de la entrada para saber quien creo el registro y cuando.

Pare evitar que un mismo usuario entre desde dos ubicaciones distintas, lo que hago es rellenar el campo FECHA_SALIDA con la fecha y hora actual de las entradas abiertas (FECHA_SALIDA vacia) en ubicaciones distintas a la actual.
Un Timer mira cada minuto si la entrada todavía está abierta.
Si se ha cerrado, informo al usuario que alguien ha entrado con su nombre de usuario desde otra aplicación y cierro la aplicación.
Excelente muchas gracias.

Haré las pruebas de lugar y te dejo saber.

Saludos.
__________________
Cristo te ama, ven a d él, ya k te espera con los brazos abiertos. Dios te bendiga mucho
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como monitoreo a los usuarios desde firebird uper Firebird e Interbase 0 21-03-2007 01:12:45
Monitoreo de usuarios JAH Firebird e Interbase 4 07-08-2004 16:50:08
Usuarios conectados en mi aplicacion ? Jorge Taveras MS SQL Server 8 29-06-2004 22:18:41


La franja horaria es GMT +2. Ahora son las 18:37:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi