Lector Biométrico

Lector Biométrico

Postby Prodix » Thu Feb 19, 2015 5:44 am

Estimados colegas,
Estoy tratando de crear una aplicación de ingreso de personas con lector biométrico U.are.U 4500 Digital Persona, estuve chequeando los posts anteriores, pero no tengo aún resultados satisfactorios, sólo llegue hasta: oWnd:cTitle(Time()+" "+Str(ret)+" "+Str(nId)+" "+Str(nIdScore)).
Si alguien pudiera extenderme una manita, please.
Fivewin 7.12
http://www.prodixperu.com
Lima-Perú
Prodix
 
Posts: 11
Joined: Fri May 02, 2014 6:25 pm
Location: Lima-Perú

Re: Lector Biométrico

Postby russimicro » Thu Feb 19, 2015 11:33 am

Buen día...

También estoy intentando con un ejemplo publicado en este foro... pero marca error en el oFingerX:Do("Initialize") ???


IF IsActiveX("GrFingerX.GrFingerXCtrl")
DEFINE dialog oWndx TITLE "FiveWin ActiveX Support"
oFingerX = TActiveX():New( oWndx, "GrFingerX.GrFingerXCtrl.1")
oWndx:oClient = oFingerX
oFingerX:Do("Initialize")


Por ahora la solución fue adaptar un ejemplo (java escritorio) que encontré en este blog y funciona perfecto...
http://blogjarc.blogspot.com/2011/10/pr ... eader.html

Pero me interesa poder hacerlo desde fivewin + xharbour....

Saludos
JONSSON RUSSI TELLO
Colombia
russimicro
 
Posts: 229
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Lector Biométrico

Postby karinha » Thu Feb 19, 2015 3:15 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Lector Biométrico

Postby elvira » Thu Feb 19, 2015 3:19 pm

Hola JONSSON,

¿Has conseguido adaptar el JavaScript a Harbour?.

Muy agradecida ;
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: Lector Biométrico

Postby Prodix » Thu Feb 19, 2015 5:55 pm

JONSSON:
Gracias por responder, la verdad no sé nada de Java y creo se me haría muy cuesta arriba.

João Santos:
Gracias por responder, si chequee anteriormente el post, pero me he "trancado" en una parte, ni modo, tendré que dedicarle más horas para salir del atolladero, chequearé más al detalle el ejemplo de Vailton (Biometría) y la clase de Pablo Botella (ClassGriaule).

Si algún colega lo tiene resuelto, pago por sus honorarios, escríbanme a cliperiano@hotmail.com (si, tienen razón, debería tener otro correo, creo que cliperiano_novato@hotmail.com sería más atinado :) ).

Elvira:
Apenas tenga avances significativos, con gusto los compartiré en el foro.
Fivewin 7.12
http://www.prodixperu.com
Lima-Perú
Prodix
 
Posts: 11
Joined: Fri May 02, 2014 6:25 pm
Location: Lima-Perú

Re: Lector Biométrico

Postby karinha » Thu Feb 19, 2015 6:22 pm

Creo, sea algo +- asi:

Code: Select all  Expand view

#Include "FiveWin.ch"

STATIC xLib

function Main()

   Local contextId,Ret

   lChDir("C:\Arquivos de programas\Griaule\GrFinger 4.1 FREE\bin")

   xLib:=LoadLibrary("GrFingerX.dll")

   Ret:=GrInitialize()

   ? ret

   contextId:=0

   Ret:=GrCreateContext(@contextId)
   Ret:=GrFinalize()

   FreeLibrary(xLib)

RETURN nil
*****************************

DLL32 FUNCTION GrInitialize() AS _INT PASCAL LIB xLib
DLL32 FUNCTION GrFinalize() AS _INT PASCAL LIB xLib
DLL32 FUNCTION GrCreateContext(@contextId As _INT) AS _INT PASCAL LIB xLib
 


http://forums.fivetechsupport.com/viewtopic.php?f=3&t=12698&start=15

http://fivetechsupport.com/forums/viewtopic.php?f=3&t=12698

http://174.129.231.1/pt-br/forum/active?page=137&order=dxfmmkpbexfkp

https://groups.google.com/forum/#!topic/comp.lang.xharbour/jlpe96jrs5U

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7315
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Lector Biométrico

Postby lucasdebeltran » Thu Feb 19, 2015 7:09 pm

Hola,

Los ejemplos del foro no funcionan bien.

Esto es lo que he conseguido hasta la fecha:

Code: Select all  Expand view
#include "FiveWin.ch"

STATIC oWnd ,OSAY, osay1
STATIC ttptSize
STATIC ttpt, xLib
static sensor



//====================================================================================================
FUNCTION Main()
//====================================================================================================

Local oFingerX

// Define your Sensor ID
sensor := "DPOTF456CA"

public x := 0

xLib:= LoadLibrary("GrFinger.dll")
*GrInitialize()

cStatus := Space(1000)
VAR1    := Space(100)



DEFINE WINDOW oWnd TITLE "Test de Griaulle" from 10, 10 to 400, 400 pixel

@2, 5 say oSay prompt space(200)
@5, 5 GET oSay1 VAR VAR1 MEMO SIZE 300, 200

oFingerX = TActiveX():New( oWnd, "GrFingerX.GrFingerXCtrl")
oWnd:oClient = oFingerX



oFingerX:Do("Initialize")
oFingerX:Do("CapInitialize")

oFingerX:bOnEvent = { | event, aParams, pParams | ProcessEventInfo( event, aParams, pParams, oFingerX ) }

ACTIVATE WINDOW oWnd ;
         VALID SalirHuella(oFingerX)  ;
         CENTERED

RETURN NIL
//====================================================================================================



//====================================================================================================
FUNCTION SalirHuella(oFingerX)
//====================================================================================================

oFingerX:Do( "CapStopCapture",sensor )
oFingerX:Do( "CapFinalize" )
oFingerX:Do( "Finalize" )

*     GrFinalize()
FreeLibrary(xLib)

RETURN ( .T. )
//====================================================================================================



//====================================================================================================
FUNCTION ProcessEventInfo( event, aParams, pParams, oFingerX )
//====================================================================================================

Local cEvent

  cEvent := cValToChar( event )

  OSAY1:varput( alltrim(OSAY1:VARGET()) + CRLF + cEvent + CRLF + valtoprg(aParams) + CRLF+CRLF  )
  OSAY1:refresh()

  alert(event)

  IF cEvent == "SensorPlug" .and. aParams[1] != "File"
     public sensor:=aParams[1]
     oFingerX:Do("CapStartCapture",sensor)
     OSAY:SETTEXT( "Sensor: " + sensor )
  ENDIF


  IF cEvent == "SensorUnplug"
     oFingerX:Do("CapStopCapture",sensor)
  ENDIF


  IF cEvent == "ImageAcquired"
     ttptSize = 10000
     ttpt = SPACE(10000)

     ret:= GrExtract( aParams[ 4], aParams[ 2], aParams[ 3], aParams[ 5], @ttpt, @ttptSize, 0 )

     // Save result
     ttpt := aParams[ 4]
     hb_memowrit( "dig.bmp", ttpt )
     //msginfo(ttpt, "dados")


   if (x==0)
    public cAntes:=ttpt
    public x:=1
   else

    nIdScore:= 0
    nId:= GrVerify( ttpt , cAntes, @nIdScore , 0 )
    public cAntes:=ttpt

    oWnd:cTitle(Time()+" "+Str(ret)+" "+Str(nId)+" "+Str(nIdScore))

   endif
  ENDIF

RETURN NIL
//====================================================================================================


DLL32 FUNCTION GrInitialize() AS LONG PASCAL FROM "_GrInitialize@0" LIB xLib
DLL32 FUNCTION GrFinalize()  AS LONG PASCAL FROM "_GrFinalize@0" LIB xLib
DLL32 FUNCTION GrExtract( rawImage AS LONG, width AS LONG, height AS LONG, res AS LONG, ttpt AS LPSTR, @ttptSize AS LONG , context AS LONG ) AS LONG PASCAL FROM "_GrExtract@28" LIB xLib
DLL32 FUNCTION GrIdentifyPrepare( ttpt AS LPSTR, context AS LONG ) AS LONG PASCAL FROM "_GrIdentifyPrepare@8" LIB xLib
DLL32 FUNCTION GrIdentify( ttpt AS LPSTR, @Idscore AS LONG, context AS LONG ) AS LONG PASCAL FROM "_GrIdentify@12" LIB xLib
DLL32 FUNCTION GrVerify( ttpt AS LPSTR, qtpt AS LPSTR, @Idscore AS LONG, context AS LONG ) AS LONG PASCAL FROM "_GrVerify@16" LIB xLib
 
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Lector Biométrico

Postby Prodix » Thu Feb 26, 2015 12:38 am

Por favor, díganme que no es verdad, Fingerprint SDK single computer $US 250.00 ??
http://www.griaulebiometrics.com/en-us/ ... rprint_sdk
Fivewin 7.12
http://www.prodixperu.com
Lima-Perú
Prodix
 
Posts: 11
Joined: Fri May 02, 2014 6:25 pm
Location: Lima-Perú

Re: Lector Biométrico

Postby albeiroval » Sat Feb 28, 2015 5:32 pm

Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 361
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Lector Biométrico

Postby russimicro » Sat Feb 28, 2015 9:36 pm

Tratando de resumir...

Parece que no existe un ejemplo que funcione con la librería(sdk) nativa de digitalpersona ?

Tendremos que buscar la solución fuera de (x)harbour ?

Saludos

Johnson Russi
russimicro
 
Posts: 229
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Lector Biométrico

Postby elvira » Sun Mar 01, 2015 3:09 pm

Yo no he encontrado un ejemplo que haga todo el proceso de capturar, salvar y comparar las huellas, pero creo que alguien lo debe de tener.

Y la clase del amigo Pablo Botella tampoco funciona... :oops:
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: Lector Biométrico

Postby Prodix » Sat Mar 28, 2015 5:51 pm

Queridos colegas, llegué a terminar la aplicación de control de ingreso-salida de personal, pero mediante la librería GrFinger.dll (no me funcionó lo de Pablo Botella), el problema es que ocurre aleatoriamente un GPF, lo cual está mortificando al cliente, alguien ha podido solucionar aquello?

apenas tenga tiempo prepararé un ejemplo autónomo completo como guía para los novatos como yo :)

saludos
Fivewin 7.12
http://www.prodixperu.com
Lima-Perú
Prodix
 
Posts: 11
Joined: Fri May 02, 2014 6:25 pm
Location: Lima-Perú

Re: Lector Biométrico

Postby lucasdebeltran » Mon Mar 30, 2015 7:29 am

Hola,

Si colocas aquí el ejemplo o me envías un email a mi Nick @gmail.com te podré echar un cable.

Un saludo
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Lector Biométrico

Postby elvira » Tue Mar 31, 2015 3:00 pm

Amigo Prodix,

¿Serías tan amable de compartir por favor tus avances?.

Muy agradecida :D
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: Lector Biométrico

Postby Prodix » Sat Apr 04, 2015 4:53 pm

Elvira,

Aquí está el código para leer, guardar y comparar una huella dactilar.
Utilizo el lector biométrico Digital Persona U.are.U 4500.
Persiste el problema del GPF aleatorio; en cuanto tenga tiempo libre intentaré con el SDK propio de Digital Persona.

[img]
https://www.facebook.com/prodixperu/pho ... =1&theater
[/img]

Code: Select all  Expand view

#include "FiveWin.ch"
#include "saytimer.ch"
#include "TSButton.ch"

//////////////////////
FUNCTION Main()    ///
//////////////////////
LOCAL oWndE , oFont
LOCAL oCODCLI, cCodCli
LOCAL oNom  , cNom
LOCAL oNoc  , cNoc
LOCAL oImage, cHuella:=""
LOCAL lProcesandoHuella:= .F. , oBmp , oSay
LOCAL ttpt , ttptSize , oFingerX , sensor
LOCAL oIng , nIng:=1     // 1: Ingreso    // 2: Salida
LOCAL cArch1:=".\Data\Tabla23.DAT"
LOCAL cArch2:=".\Data\Tabla24.DAT"
LOCAL nArea:=0

USE (cArch1) ALIAS Personal NEW SHARED
nArea:=Select("Personal")
IF nArea==0
      msginfo("No se pudo abrir la tabla de Personal","Atención")
      RETURN .F.
ENDIF

USE (cArch2) ALIAS IngresoP NEW SHARED
nArea:=Select("IngresoP")
IF nArea==0
      msginfo("No se pudo abrir la tabla de Ingresos de Personal","Atención")
      RETURN .F.
ENDIF

cCodCli := " "
cNom    := " "
cNoc    := " "

sysrefresh()
HB_GCAll(.t.)     // Aleatoriamente el programa produce un GPF, entonces invoco al colector para ver si se solucionaba el error, pero no.

DEFINE FONT oFont NAME "Times New Roman" BOLD SIZE 24, 24

IF IsActiveX("GrFingerX.GrFingerXCtrl")
    DEFINE WINDOW oWndE TITLE "Ingreso de Personal" from 100, 100 to 400, 700 pixel NOMAXIMIZE
        @01 , 56.0 BITMAP oBmp OF oWndE SIZE 110,160 ADJUST
//        @01 , 36 SAY oCodCli  VAR  "DNI     : " + cCodCli OF oWndE COLOR CLR_BLACK, nrgb(226,208,242)
//        @02 , 36 SAY oNom     VAR  "Nombre  : " + cNom    OF oWndE COLOR CLR_BLACK, nrgb(226,208,242)
//        @03 , 36 SAY oNoc     VAR  "N. Corto: " + cNoc    OF oWndE COLOR CLR_BLACK, nrgb(226,208,242)
        @04 , 32 RADIO oIng  VAR nIng  ITEMS "INGRESO","SALIDA" SIZE 102,22 OF oWndE ON CHANGE (iif(nIng=1,oWndE:settext("Ingreso de Personal"),oWndE:settext("Salida de Personal")))
        @16 , 220 SAYTIMER O OF oWndE FONT oFont PIXELS //TRANSPARENT NOBORDER
        // AMPM ;
        // SHORT ;
        // COLOR CLR_WHITE, CLR_HGREEN, CLR_BLUE, CLR_RED
       
        @11 , 075.0 SBUTTON oSalir  PROMPT "Salir" COLORS CLR_BLUE, nrgb(112,146,190), nrgb(0,128,255) CRYSTAL SIZE 106,46 ACTION oWndE:End()
       
        oFingerX = TActiveX():New( oWndE, "GrFingerX.GrFingerXCtrl")
        //oWndE:oClient = oFingerX
        oFingerX:Do("Initialize")
        oFingerX:Do("CapInitialize")
        oFingerX:bOnEvent = { | event,aParams,pParams | EventInfo2(event,aParams,pParams,oFingerX,oWndE,lProcesandoHuella,oBmp,@ttpt,@ttptSize,;
                                                                   oCodCli,@cCodCli,oNom,@cNom,oNoc,@cNoc,@sensor,nIng) }

    ACTIVATE WINDOW oWndE VALID SalirHuella(oFingerX,sensor)
ELSE
    msginfo("Tiene que estar instalado GRFINGER","Atención")
ENDIF

RETURN NIL



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION EventInfo2(event,aParams,pParams,oFingerX,oWndE,lProcesandoHuella,oBmp,ttpt,ttptSize,oCodCli,cCodCli,oNom,cNom,oNoc,cNoc,sensor,nIng)    ///
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Local cEvent , cHora:=""

sysrefresh()
HB_GCAll(.t.)    // ya expliqué de porqué invoco al colector

IF .not. lProcesandoHuella

  cEvent := cValToChar( event )

  IF cEvent == "SensorPlug" .and. aParams[1] != "File"
        sensor:=aParams[1]
  ENDIF

  IF cEvent == "SensorPlug" .or. cEvent == "1"
    IF aParams[1] != "File"
      oFingerX:Do("CapStartCapture",sensor)
    ENDIF
  ELSE
    IF cEvent == "SensorUnplug"
      oFingerX:Do("CapStopCapture",sensor)
    ELSE
      IF cEvent == "FingerDown" .or. cEvent = "4"
      ELSE
        IF cEvent == "FingerUp" .or. cEvent = "3"
        ELSE
          IF cEvent == "ImageAcquired" .or. cEvent = "5"

            lProcesandoHuella:= .T.

            xLib:= LoadLibrary("GrFinger.dll")

            GrInitialize()

            ttptSize = 10000
            ttpt = SPACE(10000)

            ret:= GrExtract( aParams[ 4], aParams[ 2], aParams[ 3], aParams[ 5], @ttpt, @ttptSize, 0 )

            GrCapSaveRawImageToFile( aParams[ 4] , aParams[ 2], aParams[ 3], ".\Lectura.bmp", 501)   // Aquí se graba la imagen
            oBmp:LoadBmp( '.\Lectura.bmp' )    // cargo la imagen guardada en la anterior línea
            oBmp:refresh()

            select("Personal")
            GO TOP
            nIdScore:= 0           
           
            WHILE !eof()
                  GrIdentifyPrepare( ttpt, 0 )
                  nId:= GrIdentify( Personal->Huella, @nIdScore , 0 )
                 
                  IF nId = 1
                       
                        cHora := ""
                        cHora := time()
                        cCodCli := Personal->DNIPER  //;  oCodCli : refresh()
                        cNom    := Personal->NOM     //;  oNom    : refresh()
                        cNoc    := Personal->NOC     //;  oNoc    : refresh()
                        //oWndE:refresh()
                       
                        select("IngresoP")
                        APPEND BLANK
                        GO Lastrec()
                       
                        IF IngresoP->(rlock())
                              REPLACE IngresoP->DNIPER WITH cCodCli
                              REPLACE IngresoP->NOM    WITH cNom
                              REPLACE IngresoP->NOC    WITH cNoc
                              REPLACE IngresoP->FING   WITH date()
                              REPLACE IngresoP->HING   WITH cHora
                              REPLACE IngresoP->TIPO   WITH nIng
                              IngresoP->(dbcommit())
                              IngresoP->(dbunlock())
                            ELSE
                              msginfo("El registro está bloqueado, intente otra vez","Atención")
                        ENDIF

                        MsgBeep()
                        MsgBeep()
                        msgwait(alltrim(Personal->Nom) + "  :  " + CRLF + ;
                                "Hora ingreso:" + cHora, "Grabado con éxito!",1)
                        EXIT
                      ELSE
                        SKIP +1
                  ENDIF
                 
                  IF eof()
                        SndPlaySound("Error.wav",1)
                        msgwait("Personal no encontrado!","Atención",1)
                  ENDIF
            ENDDO
           
            select("Personal")
            SysWait(1)
            GrFinalize()
            FreeLibrary(xLib)
            lProcesandoHuella:= .F.

          ENDIF

        ENDIF
      ENDIF
    ENDIF
  ENDIF

ENDIF

RETURN NIL



////////////////////////////////////////////
FUNCTION SalirHuella(oFingerX,sensor)    ///
////////////////////////////////////////////

IF valtype(sensor) ="U" .OR. valtype(sensor) ="u"
    ELSE
      oFingerX:Do("CapStopCapture",sensor)
      oFingerX:Do("CapFinalize")
      oFingerX:Do("Finalize")
ENDIF
      oFingerX:Do("CapFinalize")
      oFingerX:Do("Finalize")

RETURN ( .T. )

DLL32 FUNCTION GrInitialize() AS LONG PASCAL FROM "_GrInitialize@0" LIB xLib
DLL32 FUNCTION GrFinalize() AS LONG PASCAL FROM "_GrFinalize@0" LIB xLib

*DLL32 FUNCTION GrCapInitialize(status AS LPSTR) AS LONG PASCAL FROM "_GrCapInitialize@4" LIB xLib

DLL32 FUNCTION GrExtract( rawImage AS LONG, width AS LONG, height AS LONG, res AS LONG, ttpt AS LPSTR, @ttptSize AS LONG , context AS LONG ) AS LONG PASCAL FROM "_GrExtract@28" LIB xLib

DLL32 FUNCTION GrIdentifyPrepare( ttpt AS LPSTR, context AS LONG ) AS LONG PASCAL FROM "_GrIdentifyPrepare@8" LIB xLib
DLL32 FUNCTION GrIdentify( ttpt AS LPSTR, @Idscore AS LONG, context AS LONG ) AS LONG PASCAL FROM "_GrIdentify@12" LIB xLib
DLL32 FUNCTION GrCapSaveRawImageToFile( rawImage AS LONG, width AS LONG, height AS LONG, qtpt AS LPSTR, n AS LONG ) AS LONG PASCAL FROM "_GrCapSaveRawImageToFile@20" LIB xLib
DLL32 FUNCTION GrVerify( ttpt AS LPSTR, qtpt AS LPSTR, @Idscore AS LONG, context AS LONG ) AS LONG PASCAL FROM "_GrVerify@16" LIB xLib

#include 'saytimer.PRG'



/////////////////////////// Alias: "Personal"
//FUNCTION CreaT23()    ///
///////////////////////////
//LOCAL aEstruc:={}
//LOCAL cArch:=".\DATA\"+"Tabla23.DAT"

//AADD(aEstruc,{"DNIPER", "C" , 11 ,00})   // DNI Personal
//AADD(aEstruc,{"CRE"   , "L" ,  1 ,00})   // Si es sujeto de Crédito
//AADD(aEstruc,{"LCR"   , "N" , 10 ,02})   // Límite de Crédito
//AADD(aEstruc,{"SDE"   , "N" , 10 ,00})   // Saldo Deudor
//AADD(aEstruc,{"PSE"   , "N" , 10 ,00})   // Pago Diario
//AADD(aEstruc,{"NOM"   , "C" , 45 ,00})   // Nombre
//AADD(aEstruc,{"DOM"   , "C" , 45 ,00})   // Domicilio
//AADD(aEstruc,{"NOC"   , "C" , 12 ,00})   // Nombre Corto
//AADD(aEstruc,{"FO1"   , "N" , 10 ,00})   // Telefono
//AADD(aEstruc,{"CUM"   , "D" , 08 ,00})   // Cumpleaños
//AADD(aEstruc,{"MAI"   , "C" , 20 ,00})   // Mail
//AADD(aEstruc,{"WEB"   , "C" , 30 ,00})   // WEB
//AADD(aEstruc,{"CON"   , "C" , 45 ,00})   // CONTACTO
//AADD(aEstruc,{"FOTO"  , "C" , 52 ,00})   // Foto del Personal, mejor dicho la dirección de donde se encuentra en el disco duro
//AADD(aEstruc,{"CORREO", "C" , 26 ,00})   // correo electronico
//AADD(aEstruc,{"SENHA" , "C" , 16 ,00})   // contraseña
//AADD(aEstruc,{"HUELLA", "M" , 10 ,00})   // campo MEMO para guardar la huella dactilar
//DBCREATE(cArch,aEstruc)
//RETURN NIL



/////////////////////////// Alias: "IngresoP"
//FUNCTION CreaT24()    ///
///////////////////////////
//LOCAL aEstruc:={}
//LOCAL cArch:=".\DATA\"+"Tabla24.DAT"

//AADD(aEstruc,{"DNIPER", "C" , 11 ,00})   // DNI Personal
//AADD(aEstruc,{"NOM"   , "C" , 45 ,00})   // Nombre
//AADD(aEstruc,{"NOC"   , "C" , 12 ,00})   // Nombre Corto
//AADD(aEstruc,{"FING"  , "D" , 08 ,00})   // Fecha de Ingreso
//AADD(aEstruc,{"HING"  , "C" , 08 ,00})   // Hora de Ingreso
//AADD(aEstruc,{"TIPO"  , "N" , 01 ,00})   // Para saber=  1 : Ingreso    2: Salida
//DBCREATE(cArch,aEstruc)
//RETURN NIL
 
Fivewin 7.12
http://www.prodixperu.com
Lima-Perú
Prodix
 
Posts: 11
Joined: Fri May 02, 2014 6:25 pm
Location: Lima-Perú


Return to FiveWin para Harbour/xHarbour

Who is online

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