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
CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
-
- Posts: 41
- Joined: Thu Sep 17, 2015 11:40 pm
- Busmatic_wpb
- Posts: 162
- Joined: Wed Feb 22, 2017 2:19 am
Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
Saludes Carlos Actucar.
Ha pasado Tiempo amigo , saludes a la distancia.
Ha pasado Tiempo amigo , saludes a la distancia.
Regards.
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
_@Situcr.com
Desarrollos BA4/B4j androide
S.I.T.U.
Sistemas Inteligentes de transporte urbano
http://www.situcr.com
_@Situcr.com
Desarrollos BA4/B4j androide
-
- Posts: 41
- Joined: Thu Sep 17, 2015 11:40 pm
Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
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
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
+1 Interesado.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
- armando.lagunas
- Posts: 340
- Joined: Mon Oct 05, 2009 3:35 pm
- Location: Curico-Chile
- Contact:
Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
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 _ * 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
con esto tenia una DBF con _ necesarios para seguir con el procedimiento especifico para mi programa de sueldos.
Espero que te sirva
saludos
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 _ * 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
#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
Espero que te sirva
saludos
-
- Posts: 188
- Joined: Mon Jun 10, 2013 6:40 pm
Re: CONEXION A UN RELOG DE ASISTENCIA Y LEER DATOS
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
Saludos.
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
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