Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Yo lo que hago es muy simple.
Tengo usuarios que entran al programa por medio de un login.
Una vez que esta autorizado cambio un campo activo por SI.
Una vez que el usuario sale del programa el campo activo vuelve a cambiar a NO.
Simple, en una pantalla puedo ver los usuarios que estan usando el programa en tiempo real, incluso si quisiera podria poner hora y dia de entrada y salida.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 10-06-2011
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 21
casacham Va por buen camino
Cool Que pasa si se corta la energia

Hola Caral

Yo utilizo un sistema similar para loguear a los usuarios de la base de datos, y esta pregunta que da inicio al hilo me ha surgido un monton de veces. No me anime a hacer lo que propones porque se me ocurrio que si hubo un corte de luz o algo por el estio (resetean la maquina), queda registrado como logueado cuando puede no estarlo.

Se me ocurre que se pueden utilizar los componentes INDY cliente y servidor UDP o TCP, similar a un programa de chat, para lograr una interconeccion entre los ejecutables y se den aviso entre ellos de quien esta logueado. Estoy tratando de aprender mas sobre como utilizar esos componentes. Me gustaria saber si alguien ha logrado plasmar esa idea y que opinas tu (CARAL) al respecto.
__________________
La vida no trata de encontrarse a uno mismo, sino de crearse a uno mismo.
Tanto si piensas que puedes como si no, estarás en lo cierto
Responder Con Cita
  #3  
Antiguo 10-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
Red face

El metodo de caral es mejor, solo agrega la fecha y hora.

Si la fecha de ingreso es menor a la del dia es que se desconecto de mala manera.
Si la hora de ingreso es menor a 4 horas por ejemplo pues lo mismo, es cuestion de poner restricciones.

La opcion de indy la maneja el software de Contpaq i aqui en Mexico, donde manejan un software en el servidor llamado Administrador de licencias y asi tambien validas cuantos usuarios entran.

Si el servidor de licencias detecgta que cierta IP perdio la conexion simplemente la quita de la lista de conectados y ya.

Por esa razon no me gusta poner esas cosas jejejeje.
__________________
OEsqueda
Responder Con Cita
  #4  
Antiguo 10-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Ya sabeis que me complico poco la vida, por eso trato de hacer las cosas mas sencillas.
En el caso del sistema que uso lo he probado apagando los ordenadores (simulando una falla eléctrica), saliendo del programa etc y siempre actualiza la lista por que uso una comprobación con un sencillo timer cada 20 minutos.
Me imagino que habran sistemas mas complejos y mejores, pero en mi caso funciona bien.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 10-06-2011
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: 19.503
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 casacham Ver Mensaje
Yo utilizo un sistema similar para loguear a los usuarios de la base de datos, y esta pregunta que da inicio al hilo me ha surgido un monton de veces. No me anime a hacer lo que propones porque se me ocurrio que si hubo un corte de luz o algo por el estio (resetean la maquina), queda registrado como logueado cuando puede no estarlo.
Hace tiempo utilizamos un sistema similar. La única modificación para evitar esto, es que cada minuto (configurable) el usuario/cliente hacía un UPDATE a la tabla de ENTRADAS para guardar la hora (hora del servidor). El UPDATE no "perjudica" mucho, pues 1 UPDATE cada minuto es poco (ojo si tenemos 400 clientes conectados que entonces a lo mejor si sobrecarga... ) y de esta forma puedes detectar las conexiones fantasma.

Las conexiones que llamamos "zombies" o "fantasmas" son aquellas que llevan entre 1 y 5 minutos sin actualizar. Pasados 5 minutos se borran esas entradas. De esta forma cuando una máquina se cuelga, pasado 1 minuto esa entrada se considera zombie, y pasados 3 o 5 se borra. Es una forma de tener "actualizada" esa información de la tabla de ENTRADAS. Los tiempo son configurables dependiendo de las necesidades y de la sobrecarga del sistema. Si son 5 máquinas puedes usar 1 minuto, si son 300 tal vez sea mejor utilizar 10 minutos.

Cita:
Empezado por casacham Ver Mensaje
Se me ocurre que se pueden utilizar los componentes INDY cliente y servidor UDP o TCP, similar a un programa de chat, para lograr una interconeccion entre los ejecutables y se den aviso entre ellos de quien esta logueado.
Esta la estamos utilizando ahora, pero la verdad es que cuando hay muchas máquinas (hablamos de 100 conexiones), y sobre todo cuando se conectan a la vez (todo el mundo llega a las 9:00 conecta el ordenador y entra en la aplicación) estamos notando retardos.
__________________
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
  #6  
Antiguo 15-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 20
ingabraham Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Yo lo que hago es muy simple.
Tengo usuarios que entran al programa por medio de un login.
Una vez que esta autorizado cambio un campo activo por SI.
Una vez que el usuario sale del programa el campo activo vuelve a cambiar a NO.
Simple, en una pantalla puedo ver los usuarios que estan usando el programa en tiempo real, incluso si quisiera podria poner hora y dia de entrada y salida.
Saludos
no me actualiza la lista

1. al iniciar usuario
Código Delphi [-]
   DMDatos.CambiarUsuario(CBUsuarios.Text,'Conectado');

Procedure TDMDatos.CambiarUsuario(PUsuario,PEstado:String);
Begin
   With ConsultaFlash do
   Begin
    close;
    SQL.Clear;
    SQL.Add('Update Usuarios Set US_ESTADO=''' +PEstado+'''  where US_USUARIO =''' +PUsuario+''' ');
    ExecQuery;
  end;
     DMDatos.IBTransaction.CommitRetaining;
End;
2. al salir
Código Delphi [-]
  DMDatos.CambiarUsuario(CBUsuarios.Text,'DesConectado');
3. el timer q me muestra los usuarios
Código Delphi [-]

 if Temporizador.Interval  = 5000  then
 begin

  TreeView1.Items.Clear;
   With DMDatos.IBConsultaSql do
    Begin
      Sql.Clear;
      Sql.Add('Select * From USUARIOS ');
      Open;
      DMDatos.IBConsultaSql.First;
       While Not DMDatos.IBConsultaSql.Eof Do
       Begin
          if  'Conectado' = DMDatos.IBConsultaSql.fieldbyname('US_ESTADO').AsString THEN
            TreeView1.Items.AddChild(nil, DMDatos.IBConsultaSql.fieldbyname('US_USUARIO').AsString  );

           DMDatos.IBConsultaSql.Next;
       End;
   End;
 end;
pero al momento de otro pc q esta en la red entra no me actualiza la lista. parece que no reconociera los cambios de la bdatos, lo la refrescara no se si algun trigger o procedure me pueda solucionar esto.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #7  
Antiguo 15-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
Red face

Revisa tu transaccion como esta configurada, te paso un codigo que acelera tu codigo:

Código Delphi [-]
 if Temporizador.Interval  = 5000  then  begin    TreeView1.Items.Clear;    With DMDatos.IBConsultaSql do     Begin       Sql.Clear;       Sql.Add('Select * From USUARIOS where US_ESTADO = ''Conectado''';       Open;       DMDatos.IBConsultaSql.First;        While Not DMDatos.IBConsultaSql.Eof Do        Begin             TreeView1.Items.AddChild(nil, DMDatos.IBConsultaSql.fieldbyname('US_USUARIO').AsString  );             DMDatos.IBConsultaSql.Next;        End;    End;  end;
Ademas te recomiendo cambiar el us_esado a numerico y ponerle un indice, seria mucho mas rapido.

Saludos
__________________
OEsqueda
Responder Con Cita
  #8  
Antiguo 15-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 20
ingabraham Va por buen camino
Cita:
Empezado por oesqueda Ver Mensaje
Revisa tu transaccion como esta configurada, te paso un codigo que acelera tu codigo:

Código Delphi [-]
 if Temporizador.Interval  = 5000  then  begin    TreeView1.Items.Clear;    With DMDatos.IBConsultaSql do     Begin       Sql.Clear;       Sql.Add('Select * From USUARIOS where US_ESTADO = ''Conectado''';       Open;       DMDatos.IBConsultaSql.First;        While Not DMDatos.IBConsultaSql.Eof Do        Begin             TreeView1.Items.AddChild(nil, DMDatos.IBConsultaSql.fieldbyname('US_USUARIO').AsString  );             DMDatos.IBConsultaSql.Next;        End;    End;  end;
Ademas te recomiendo cambiar el us_esado a numerico y ponerle un indice, seria mucho mas rapido.

Saludos

Mi transaccion
esta de la sgt manera

active true
autostopaction saNone

defaulaction TARollback


que propiedades deberia tener,
ps te comento que las cambie x todas las posibles combinaciones, y no me actualiza los usuarios.
__________________
Enseñar es la virtud de un sabio.

Última edición por ingabraham fecha: 15-06-2011 a las 18:57:19.
Responder Con Cita
  #9  
Antiguo 15-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
hablo de la propiedad params, si esta vacia te falta ajustarla

saludos
__________________
OEsqueda
Responder Con Cita
  #10  
Antiguo 16-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 20
ingabraham Va por buen camino
k tipo de parametro le ingreso .
no tengo ni idea
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #11  
Antiguo 16-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
Mi estimado, aqui creo y que me corrijan los moderadores, pero ya necesitas ponerte a estudiar, yo practico con este precepto dale un pescado a un hombre y comera un dia, enseñale a pescar y comera toda la vida.

Por lo que te encomiendo a buscar en google articulos de delphi con firebird, con interbase 6.0 por lo menos, encontre esto en internet, es un manual de firebird.

http://infoback.com.ar/buhardilla/firebird/firebird.htm

Que alguna vez fue publicado en el foro, y pues si necesitas algo mas estoy a tus ordenes, pero creo que necesitas darle un clavado a por lo menos las bases de firebird y como funciona y asi ya empezar a entender como funcionan la conexion con al base, transacciones y el uso de IBDataset (no ibtable o ibquery que solo estan para compatibilidad).
__________________
OEsqueda
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Saber si esta conectado el adaptador de corriente en una laptop javier_ecf API de Windows 8 14-01-2011 01:51:37
como saber si un clientSocket esta conectado pipo123 Internet 0 19-04-2007 23:22:20
¿ Quien está conectado a mi equipo ? Roilo Redes 1 28-07-2006 00:01:40
Programa para saber si estoy conectado. Kamikaze Internet 2 13-11-2004 17:47:46
Saber si esta conectado Kaesbu Internet 1 22-09-2003 15:09:45


La franja horaria es GMT +2. Ahora son las 17:38:47.


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