Page 1 of 1

CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Tue Apr 17, 2018 2:59 am
by CARLOS ATUNCAR
Saludos, una ayuda alguien tiene experiencia como conectarse a un relog marcador de asistencia, leer la información de la asistencia del personal
muy agradecido de antemano

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Tue Apr 17, 2018 3:12 am
by Busmatic_wpb
Saludes Carlos Actucar.
Ha pasado Tiempo amigo , saludes a la distancia.

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Tue Apr 17, 2018 4:32 am
by CARLOS ATUNCAR
Busmatic_wpb wrote:Saludes Carlos Actucar.
Ha pasado Tiempo amigo , saludes a la distancia.



Saludos Amigo como has estado saludos un abrazo a la distancia

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Thu Apr 19, 2018 2:30 pm
by FranciscoA
+1 Interesado.

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Thu Apr 19, 2018 5:15 pm
by armando.lagunas
generalmente estos dispositivos entregan una archivo de texto con la información de marcaje

algo asi como el siguiente ejemplo:

r0120160815001.dat -> RELOJ 01 día 15/08/2016 arch 001
# Estructura interna #
IN0005201608151355 -> IN = INGRESO 0005 = COD.TARJETA 20160815=FECHA DEL MOV 1355= 13:55
OT0005201608151823 -> OT= SALIDA 0005 = COD.TARJETA 20160815=FECHA DEL MOV 18:23= 18:23
IN0006020160815823
OT0006201608151618
...
Con esta estructura creaba una dbf con los mismos campos * esto es como ejemplo
....
mov caracter 2
code caracter de 4
fecha caracter de 8
hora caracter 5
...

y lo llamaba mas menos de esta forma como ejemplo

Code: Select all  Expand view

#include "FiveWin.ch"

STATIC oWnd

FUNCTION Main()
LOCAL oBar, oPopup, oBtn, oSay

SET DATE FRENCH
SET CENTURY  ON
SET DELETED  ON
SET _3DLOOK  ON
SetBalloon( .T. )

   DEFINE WINDOW oWnd TITLE "Subir Datos del Reloj Control"

      DEFINE BUTTONBAR oBar OF oWnd SIZE 60, 60 2007

      DEFINE BUTTON OF oBar ACTION Llamar(), oWnd:End() RESOURCE "attach" PROMPT "Marcas" TOOLTIP "Subir Marcas del BioMetrico"
      SET MESSAGE OF oWnd TO "Soporte para el sistema RENNOXP" KEYBOARD 2007

   ACTIVATE WINDOW oWnd

RETURN nil

//----------------------------------------------------------------------------//

STATIC FUNCTION Llamar()
LOCAL cFile, xMov, xTar, xDia, xMes, xAno, xFec, xEnt, xSal , yMov, yTar, yDia, yMes, yAno, yFec, yEnt, ySal, uTar   , tuca
LOCAL Mov1 , Mov2, xTim

tuca  := 0
cFile := cGetFile("*.DAT","Archivo de Transmisión de Capturador de Huellas","Archivo de Marcas | *.dat","F:\VIGATEC\TEMPO\")


  USE "
UNICORN.DBF" ALIAS PAS1 NEW EXCLUSIVE

  USE "
RELOJCO.DBF" ALIAS PAS2 NEW EXCLUSIVE
  INDEX ON PAS2->MOV+PAS2->TARJETA+PAS2->DIA+PAS2->MES+PAS2->ANO+PAS2->ENTR TO R1.NTX
  INDEX ON PAS2->MOV+PAS2->TARJETA+PAS2->DIA+PAS2->MES+PAS2->ANO            TO R2.NTX
  SET INDEX TO R1,R2

IF LEN(cFile) > 0
   IF MsgYesNo("
Esta por recibir el Archivo del Capturador de Huellas...Está seguro de realizar proceso ?", cFile)

      SELECT PAS1   ;  __DBZAP()

      APPEND FROM &cFile SDF
      dbgotop()

      // calculando los tiempos en minutos

      MSGWAIT("
ESPERE POR FAVOR...CALCULANDO LOS TIEMPOS...")
      DO WHILE !EOF()
         PAS1->TIME := STRTRAN( STR((VAL(SUBSTR(PAS1->HORA,1,2))*60)+(VAL(SUBSTR(PAS1->HORA,4,2))),5,0) ,"
","0")
         SKIP
      ENDDO

      // validando la fecha

      MSGWAIT("
ESPERE POR FAVOR...VALIDANDO FECHAS...")
      DBGOTOP()
      DO WHILE !EOF()
         PAS1->DATA := CTOD(PAS1->FECHA)
         SKIP
      ENDDO
      //---------------------------------------------

      FERASE( "
F:\RENNOXP\INDICES\001\RELOJC1.NTX" )
      FERASE( "
F:\RENNOXP\INDICES\001\RELOJC2.NTX" )
      WinExec("
.\RENOM.BAT")
      MSGINFO("
Proceso terminado con exito...","ok")
   ENDIF
ENDIF

RETURN Nil



con esto tenia una DBF con los campos necesarios para seguir con el procedimiento especifico para mi programa de sueldos.

Espero que te sirva

saludos

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

PostPosted: Sat Apr 21, 2018 3:22 pm
by VitalJavier
Los quipos que tenemos, todos tienen DB Access (Son Equipos de lectura de huella)
Primero debes de descargar todas la checadas del equipo al software que traen.

Te muestro algo de lo que hice haber si te funciona
Code: Select all  Expand view

FUNCTION PRUEBA_ACCES   
    LOCAL oDlgHide, oBrowHide
    PRIVATE dFecha1, dFecha2, dFecha3, dFecha4, dFecha5, cRutamdb := RETORNA_SYSP("RELOJ_COMIDAS") //".\att2000.mdb;"
   
    IF !File(cRutamdb)
        ?"Verifique con Sistemas Ruta del Reloj..."
        RETURN .T.
    ENDIF
   
    oSQL:=CreateObject("ADODB.Connection")
    oSQL:ConnectionString:="Provider= MicroSoft.Jet.OLEDB.4.0;Data Source="+cRutamdb
    oSQL:Open()
   
    dFecha1 := Date()
    IF !MiMsgGet("Fecha de Proceso", "Teclee la Fecha de Captura", @dFecha1,,,"D")
        oSQL:Close()
        RETURN .T.
    ENDIF          

*   dFecha1 := Ctod("10/07/2016") //Date()
*   dFecha1 := Date()
    dFecha2 := dFecha1 + 6 
    cF1 := SubStr(DtoS(dFecha1),7,2)+"/"+SubStr(DtoS(dFecha1),5,2)+"/"+SubStr(DtoS(dFecha1),1,4)
   
    aFechas := {}
    IF dFecha1 = dFecha2
        cQuery1 := "SELECT CHECKINOUT.USERID,CHECKINOUT.CHECKTIME,USERINFO.NAME FROM CHECKINOUT LEFT OUTER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE CHECKINOUT.CHECKTIME LIKE '%"+cF1+"%' ORDER BY CHECKINOUT.USERID,CHECKINOUT.CHECKTIME"
        AADD(aFechas,dFecha1)
    ELSE
        nDias := dFecha2 - dFecha1
        cCad := ""
        dAux := dFecha1
        FOR I := 1 TO nDias
            AADD(aFechas,dAux)
            cF1 := SubStr(DtoS(dAux),7,2)+"/"+SubStr(DtoS(dAux),5,2)+"/"+SubStr(DtoS(dAux),1,4)
            IF I = 1               
                cCad += "LIKE '%"+cF1+"%' "
            ELSE
                cCad += " OR CHECKINOUT.CHECKTIME LIKE '%"+cF1+"%' "          
            ENDIF
            dAux += 1
        NEXT       
        cQuery1 := "SELECT CHECKINOUT.USERID,CHECKINOUT.CHECKTIME,USERINFO.NAME FROM CHECKINOUT LEFT OUTER JOIN USERINFO ON CHECKINOUT.USERID = USERINFO.USERID WHERE CHECKINOUT.CHECKTIME "+cCad+" ORDER BY CHECKINOUT.USERID,CHECKINOUT.CHECKTIME"
    ENDIF
   
    oRs1 := CreateObject( "ADODB.Recordset" )
    oRs1:cursortype :=1
    oRs1:CursorLocation := 3
    oRs1:locktype := 3
    oRs1:Open( cQuery1, oSQL:ConnectionString, 1, 3 )   
    IF oRs1:RecordCount = 0
        ?"No Existen Registros de Esa Fecha..."
        oSQL:Close()
        oRs1:Close()
        RETURN .T.
    ENDIF
 


Saludos.