CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby CARLOS ATUNCAR » Tue Apr 17, 2018 2:59 am

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
Carlos Atuncar - CaSoftSystem
Chincha - Perú
CARLOS ATUNCAR
 
Posts: 171
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby Busmatic_wpb » Tue Apr 17, 2018 3:12 am

Saludes Carlos Actucar.
Ha pasado Tiempo amigo , saludes a la distancia.
Regards.
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
oscarchacon@Situcr.com
Desarrollos BA4/B4j androide
User avatar
Busmatic_wpb
 
Posts: 162
Joined: Wed Feb 22, 2017 2:19 am

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby CARLOS ATUNCAR » Tue Apr 17, 2018 4:32 am

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
Carlos Atuncar - CaSoftSystem
Chincha - Perú
CARLOS ATUNCAR
 
Posts: 171
Joined: Thu Sep 17, 2015 11:40 pm
Location: Chincha - Peru

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby FranciscoA » Thu Apr 19, 2018 2:30 pm

+1 Interesado.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby armando.lagunas » Thu Apr 19, 2018 5:15 pm

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
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS

Postby VitalJavier » Sat Apr 21, 2018 3:22 pm

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.
User avatar
VitalJavier
 
Posts: 239
Joined: Mon Jun 10, 2013 6:40 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 50 guests