Como controlar dialogo de password (Solucionado)

Como controlar dialogo de password (Solucionado)

Postby ACC69 » Fri Apr 29, 2016 6:47 pm

Hola buenas tardes a todos, de antemano les envio cordial saludos.

Tengo inconveniente de como controlar en un dialogo que se me pide usuario y clave al darle boton aceptar si antes no he tecleado sea usuario y clave, me saca del dialogo y no me regresa de nuevo al get del campo de usuario o clave ,cualquiera que sea condicion, pero si tecleo correctamente usuario y clave todo bien me abre la pantalla de menu,pero no logro controlar el dialogo de que no me saque del dialogo si le doy enter al boton aceptar si me muestra mensaje favor de teclear usuario ,pero me saca luego.

Como estoy creando nuevo proyecto, en ese modo, es lo que no me habia topado antes,porque lo hacia de otra manera y todo funcionaba bien.

Pongo el codigo:


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

IF !ACCESA()  // Pide Dialogo Usuario y Clave

     *MsgStop("Se sale de aqui...")
     SET RESOURCES TO

     DbCloseAll()

     RETURN NIL
 ELSE
     DbCloseAll()
 ENDIF
 
 
 DEFINE WINDOW oWnd MENU DespMenu() ICON oICON Title "Control de obligaciones de SAT" MenuInfo 1 MDI COLOR nClr,nClr
   SET FONT OF oWnd TO oFont1
   SET MESSAGE OF oWnd TO "Selección de empresa..." CENTER

   DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 OF oWnd

   oWnd:bPainted := { | hDC | BmpTiled( hDC, oWnd, oBmp ) }

   oWnd:oMsgBar:KeybOn()
   oWnd:oMsgBar:DateOn()
 ACTIVATE WINDOW oWnd MAXIMIZED ON INIT (Sel_Empr(oWnd,oFont2))

 DbCloseAll()
 oFont1:End()
RETURN NIL


//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso), oDlg:End() // Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:END() CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

      RETURN .F.
 ENDIF

 Release lRet
RETURN (lRet)



Alguien me pueda echar la mano con ese detalle, que alguien me tire que mas me falta.

Saludos

Gracias

Atte: Adrian C. C.
acc69@hotmail.com
Last edited by ACC69 on Tue May 03, 2016 8:15 pm, edited 1 time in total.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby ACC69 » Fri Apr 29, 2016 9:49 pm

ACC69 wrote:Hola buenas tardes a todos, de antemano les envio cordial saludos.

Tengo inconveniente de como controlar en un dialogo que se me pide usuario y clave al darle boton aceptar si antes no he tecleado sea usuario y clave, me saca del dialogo y no me regresa de nuevo al get del campo de usuario o clave ,cualquiera que sea condicion, pero si tecleo correctamente usuario y clave todo bien me abre la pantalla de menu,pero no logro controlar el dialogo de que no me saque del dialogo si le doy enter al boton aceptar si me muestra mensaje favor de teclear usuario ,pero me saca luego.

Como estoy creando nuevo proyecto, en ese modo, es lo que no me habia topado antes,porque lo hacia de otra manera y todo funcionaba bien.

Pongo el codigo:


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

IF !ACCESA()  // Pide Dialogo Usuario y Clave

     *MsgStop("Se sale de aqui...")
     SET RESOURCES TO

     DbCloseAll()

     RETURN NIL
 ELSE
     DbCloseAll()
 ENDIF
 
 
 DEFINE WINDOW oWnd MENU DespMenu() ICON oICON Title "Control de obligaciones de SAT" MenuInfo 1 MDI COLOR nClr,nClr
   SET FONT OF oWnd TO oFont1
   SET MESSAGE OF oWnd TO "Selección de empresa..." CENTER

   DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 OF oWnd

   oWnd:bPainted := { | hDC | BmpTiled( hDC, oWnd, oBmp ) }

   oWnd:oMsgBar:KeybOn()
   oWnd:oMsgBar:DateOn()
 ACTIVATE WINDOW oWnd MAXIMIZED ON INIT (Sel_Empr(oWnd,oFont2))

 DbCloseAll()
 oFont1:End()
RETURN NIL


//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso), oDlg:End() // Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:END() CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

      RETURN .F.
 ENDIF

 Release lRet
RETURN (lRet)



Alguien me pueda echar la mano con ese detalle, que alguien me tire que mas me falta.

Saludos

Gracias

Atte: Adrian C. C.
acc69@hotmail.com


Bueno ya le cambie a Default Pushbutton, pero siempre me saca del dialogo y no me retorna al primer get o segundo get cuando valida que debo teclear Usuario o clave,como controlar el foco, alguien que me corrija mi codigo .

Pongo el rc
Code: Select all  Expand view
// RESOURCE SCRIPT generated by "Pelles C for Windows, version 8.00".

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>

LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US

ALTASAT DIALOGEX DISCARDABLE 6, 18, 498, 234
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "Group-box", 4001, "Button", BS_GROUPBOX, 0, 0, 496, 40
  CONTROL "Group-box", 4002, "Button", BS_GROUPBOX, 0, 40, 496, 20
  CONTROL "Group-box", 4003, "Button", BS_GROUPBOX, 0, 60, 496, 128
  CONTROL "", 101, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 44, 8, 40, 12
  CONTROL "Custom control", 106, "TXBrowse", WS_TABSTOP|0x00b00000, 8, 68, 468, 160
  CONTROL "Insertar", 201, "Button", WS_TABSTOP, 228, 44, 50, 14
  CONTROL "Modificar", 202, "Button", WS_TABSTOP, 280, 44, 50, 14
}

USERCVE DIALOGEX DISCARDABLE 6, 18, 210, 142
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "", 101, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 80, 28, 96, 12
  CONTROL "", 102, "Edit", ES_AUTOHSCROLL|ES_PASSWORD|WS_BORDER|WS_TABSTOP, 80, 48, 64, 12
  CONTROL "Aceptar", 201, "Button", BS_DEFPUSHBUTTON|WS_TABSTOP, 44, 80, 50, 14
  CONTROL "Cancelar", 202, "Button", WS_TABSTOP, 108, 80, 50, 14
  CONTROL "Usuario", 4001, "Static", WS_GROUP, 48, 32, 24, 8
  CONTROL "Clave", 4002, "Static", WS_GROUP, 52, 52, 20, 8
}

S_CATAL DIALOGEX DISCARDABLE 6, 18, 170, 98
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "Group-box", 4001, "Button", BS_GROUPBOX, 0, 0, 168, 96
  CONTROL "Custom control", 101, "TXBrowse", WS_TABSTOP|0x00b00000, 4, 8, 164, 84
}

CAPDET DIALOGEX DISCARDABLE 6, 18, 362, 142
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "Group-box", 4001, "Button", BS_GROUPBOX, 4, 4, 352, 104
  CONTROL "Edit", 101, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 8, 44, 40, 12
  CONTROL "Edit", 102, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 52, 44, 40, 12
  CONTROL "Edit", 103, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 100, 44, 88, 12
  CONTROL "Edit", 104, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 192, 44, 40, 12
  CONTROL "Guardar", 201, "Button", WS_TABSTOP, 4, 16, 50, 14
  CONTROL "Nuevo", 202, "Button", WS_TABSTOP, 56, 16, 50, 14
  CONTROL "Borrar", 203, "Button", WS_TABSTOP, 108, 16, 50, 14
}

LISTEMP DIALOGEX DISCARDABLE 6, 18, 338, 142
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "Group-box", 4001, "Button", BS_GROUPBOX, 0, 0, 208, 92
  CONTROL "Custom control", 101, "TXBrowse", WS_TABSTOP|0x00b00000, 0, 0, 296, 108
  CONTROL "Aceptar", 201, "Button", WS_TABSTOP, 36, 116, 50, 14
  CONTROL "Cancelar", 202, "Button", WS_TABSTOP, 100, 116, 50, 14
}

CONFIGEMP DIALOGEX DISCARDABLE 6, 18, 538, 198
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_CONTEXTHELP|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "Dialog"
FONT 8, "Tahoma", 0, 0, 1
{
  CONTROL "Group-box", 4001, "Button", BS_GROUPBOX, 0, 0, 408, 80
  CONTROL "Nombre", 101, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 24, 12, 348, 12
  CONTROL "Direccion", 102, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 24, 28, 344, 12
  CONTROL "RFC", 103, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 24, 44, 56, 12
  CONTROL "CURP", 104, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 128, 44, 72, 12
  CONTROL "Regimen", 105, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 24, 60, 40, 12
  CONTROL "Group-box", 4007, "Button", BS_GROUPBOX, 0, 80, 408, 96
  CONTROL "Edit", 106, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 12, 92, 40, 12
  CONTROL "Edit", 107, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 12, 108, 40, 12
  CONTROL "Edit", 108, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 12, 124, 40, 12
  CONTROL "Edit", 109, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 12, 140, 40, 12
  CONTROL "Edit", 110, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 12, 156, 40, 12
  CONTROL "Aceptar", 201, "Button", WS_TABSTOP, 64, 180, 50, 14
  CONTROL "Cancelar", 202, "Button", WS_TABSTOP, 120, 180, 50, 14
}


Saludos

Gracias
Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby FranciscoA » Fri Apr 29, 2016 11:20 pm

Hola Adrian. No lo probé, pero talvez te da una idea, siguiendo tu codigo.

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   [b]REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso, @nIntentos), if(!lAcceso .and. nIntentos>3, oDlg:End(), ) ) [/b]// Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
[b]STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso, nIntentos)[/b]
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

     [b] nIntentos+=1[/b]
      RETURN .F.
 ENDIF

 [b]if !lRet
    nIntentos+=1
 endif[/b]
 
 Release lRet
RETURN (lRet)
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Como controlar dialogo de password

Postby ACC69 » Sat Apr 30, 2016 2:00 am

FranciscoA wrote:Hola Adrian. No lo probé, pero talvez te da una idea, siguiendo tu codigo.

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   [b]REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso, @nIntentos), if(!lAcceso .and. nIntentos>3, oDlg:End(), ) ) [/b]// Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
[b]STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso, nIntentos)[/b]
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

     [b] nIntentos+=1[/b]
      RETURN .F.
 ENDIF

 [b]if !lRet
    nIntentos+=1
 endif[/b]
 
 Release lRet
RETURN (lRet)



Buenas noches Ing. Francisco, gracias por tu atencion,hago la prueba y le comento,ya intente con un sin fin de condiciones ,pero me siempre me saca de la pantalla del dialogo y no me retorna al primer o segundo campo del get sin salirse de la pantalla del dialogo,pero lo bueno que me valida todo bien al teclear correctamente usuario y clave y me abre la pantalla del menu, pero no me gusta en la manera cuando el usuario le da aceptar al boton y valida que no tecleo usuario y zas me saca del dialogo,es lo que no logro controlar.

Gracias hago la prueba y le comento.

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby ACC69 » Sat Apr 30, 2016 2:39 am

ACC69 wrote:
FranciscoA wrote:Hola Adrian. No lo probé, pero talvez te da una idea, siguiendo tu codigo.

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   [b]REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso, @nIntentos), if(!lAcceso .and. nIntentos>3, oDlg:End(), ) ) [/b]// Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
[b]STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso, nIntentos)[/b]
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

     [b] nIntentos+=1[/b]
      RETURN .F.
 ENDIF

 [b]if !lRet
    nIntentos+=1
 endif[/b]
 
 Release lRet
RETURN (lRet)



Buenas noches Ing. Francisco, gracias por tu atencion,hago la prueba y le comento,ya intente con un sin fin de condiciones ,pero me siempre me saca de la pantalla del dialogo y no me retorna al primer o segundo campo del get sin salirse de la pantalla del dialogo,pero lo bueno que me valida todo bien al teclear correctamente usuario y clave y me abre la pantalla del menu, pero no me gusta en la manera cuando el usuario le da aceptar al boton y valida que no tecleo usuario y zas me saca del dialogo,es lo que no logro controlar.

Gracias hago la prueba y le comento.

Atte: Adrian C. C.



Gracias Ing. Francisco si funciona :D ,ya no me saca del dialogo al intentar 3 veces es logico, pero...ahora ya no me abre la pantalla del menu principal, ha de ser porque no cierra el dialogo oDlg:End() y abrir el menu principal :? ...sino es una es otra jajajaja,pero bueno a ver que hago para corregir,por lo menos ya funciona sin que me saque a la primera.

Gracias Ing. Francisco.

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby ACC69 » Sat Apr 30, 2016 3:17 am

ACC69 wrote:
ACC69 wrote:
FranciscoA wrote:Hola Adrian. No lo probé, pero talvez te da una idea, siguiendo tu codigo.

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   [b]REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso, @nIntentos), if(!lAcceso .and. nIntentos>3, oDlg:End(), ) ) [/b]// Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
[b]STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso, nIntentos)[/b]
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

     [b] nIntentos+=1[/b]
      RETURN .F.
 ENDIF

 [b]if !lRet
    nIntentos+=1
 endif[/b]
 
 Release lRet
RETURN (lRet)



Buenas noches Ing. Francisco, gracias por tu atencion,hago la prueba y le comento,ya intente con un sin fin de condiciones ,pero me siempre me saca de la pantalla del dialogo y no me retorna al primer o segundo campo del get sin salirse de la pantalla del dialogo,pero lo bueno que me valida todo bien al teclear correctamente usuario y clave y me abre la pantalla del menu, pero no me gusta en la manera cuando el usuario le da aceptar al boton y valida que no tecleo usuario y zas me saca del dialogo,es lo que no logro controlar.

Gracias hago la prueba y le comento.

Atte: Adrian C. C.



Gracias Ing. Francisco si funciona :D ,ya no me saca del dialogo al intentar 3 veces es logico, pero...ahora ya no me abre la pantalla del menu principal, ha de ser porque no cierra el dialogo oDlg:End() y abrir el menu principal :? ...sino es una es otra jajajaja,pero bueno a ver que hago para corregir,por lo menos ya funciona sin que me saque a la primera.

Gracias Ing. Francisco.

Saludos

Atte: Adrian C. C.



Bueno al parecer ya le busque y ya funciona!, pero diganme o usted ing. Francisco que me ha ayudado con ese detalle y que le agradezco mucho su atencion o mejorar mas el codigo,si es la mejor manera de hacerlo asi dentro de la funcion V_ACCESO() la instruccion de oDlg:End(),que una vez validado usuario y clave,ya me pasa al menu principal.

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION V_Acceso(lAcceso,nIntentos,oDlg)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) // .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.


    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 END CASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(OrdSetFocus("USUAPASS"))

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))

 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      *cNombUsua := (S01)->NOMUSUA
      *cNombre   := (S01)->NOMBRE
      *nStation  := LTRIM(STR((S01)->(RECNO())))

      lRet    := .T.
      lAcceso := .T.

      [b][code]oDlg:End()  // Aqui ya cierra el dialogo y me abre el menu principal sin problemas, o hay otra mejor manera de hacerlo...[/code][/b]
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)
      nIntentos+=1

      RETURN .F.
 ENDIF

 IF !lRet
     nIntentos+=1
 ENDIF



Gracias Ing. Francisco nuevamente le agradezco su apreciable ayuda,que ya le debo mil... :D

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby ACC69 » Sat Apr 30, 2016 5:54 am

ACC69 wrote:Hola buenas tardes a todos, de antemano les envio cordial saludos.

Tengo inconveniente de como controlar en un dialogo que se me pide usuario y clave al darle boton aceptar si antes no he tecleado sea usuario y clave, me saca del dialogo y no me regresa de nuevo al get del campo de usuario o clave ,cualquiera que sea condicion, pero si tecleo correctamente usuario y clave todo bien me abre la pantalla de menu,pero no logro controlar el dialogo de que no me saque del dialogo si le doy enter al boton aceptar si me muestra mensaje favor de teclear usuario ,pero me saca luego.

Como estoy creando nuevo proyecto, en ese modo, es lo que no me habia topado antes,porque lo hacia de otra manera y todo funcionaba bien.

Pongo el codigo:


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

IF !ACCESA()  // Pide Dialogo Usuario y Clave

     *MsgStop("Se sale de aqui...")
     SET RESOURCES TO

     DbCloseAll()

     RETURN NIL
 ELSE
     DbCloseAll()
 ENDIF
 
 
 DEFINE WINDOW oWnd MENU DespMenu() ICON oICON Title "Control de obligaciones de SAT" MenuInfo 1 MDI COLOR nClr,nClr
   SET FONT OF oWnd TO oFont1
   SET MESSAGE OF oWnd TO "Selección de empresa..." CENTER

   DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 OF oWnd

   oWnd:bPainted := { | hDC | BmpTiled( hDC, oWnd, oBmp ) }

   oWnd:oMsgBar:KeybOn()
   oWnd:oMsgBar:DateOn()
 ACTIVATE WINDOW oWnd MAXIMIZED ON INIT (Sel_Empr(oWnd,oFont2))

 DbCloseAll()
 oFont1:End()
RETURN NIL


//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn,lRet:= .F., lAcceso := .F.

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ACTION lAcceso:=V_ACCESO(cUsuar,cPassw,@lAcceso), oDlg:End() // Aqui me saca del dialogo ,aunque me valida que
                                                                                                                                                                      // debo teclear usuario o clave

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION oDlg:END() CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  := "..\CObSAT\EMP01"

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 *MsgInfo( cRutaDat )
RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw,lAcceso)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")

          lRet := .F.

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")

          lRet := .F.
 ENDCASE

 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

      RETURN .F.
 ENDIF

 Release lRet
RETURN (lRet)



Alguien me pueda echar la mano con ese detalle, que alguien me tire que mas me falta.

Saludos

Gracias

Atte: Adrian C. C.
acc69@hotmail.com


Bueno amigos del foro, sigo con el mismo tema,que ya me trae loco por un simple login usuario y password, jajajaja

Viendo mi codigo de la funcion v_acceso,al final me retorna Return lRet,bueno he querido modificar que dentro de esa funcion que si no existe usuario o clave erronea, que me retorne de esa manera Return .F.,pero y si es verdadero que ambos validan usuario y clave , ya no me deja accesar al menu principal, porque!, por la forma de retornar Return .t. o return .f. cuando al final de la condicion es return lRet por una variable....el detalle que se me presenta es que cuando tecleo bien usuario me valida el siguiente campo o sea me hace el salto cuando no este en la posicion del get del password,espero haberme explicado o me confundo mas,pero por lo menos el Ing. Francisco me ayudo en esa parte ,ahora solo me falta validar cada get usuario ...favor de teclear usuario o usuario no existe,sin hacer salto al campo que clave erronea cuando no he pasado al sguiente paso, bueno es algo confuso pero la logica ya se la saben.


Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION V_Acceso(lAcceso,nIntentos,oDlg)
 LOCAL lRet := .F.

 IF EMPTY(cUsuar)
     MsgAlert("Favor de teclear usuario")

     Return .F.
 ENDIF

 // Valida Usuario \\
 IF (S01)->( DbSeek( cUsuar ) )
     Return .F.

     lAcceso := .T.

     oDlg:End()
 ELSE
     MsgInfo('Usuario no existe...',"Confirme")

     cUsuar    := SPACE(22)
     nIntentos += 1

     RETURN .F.
 ENDIF

 IF EMPTY(cPassw)
     MsgAlert("Favor de teclear su clave de acceso")

     Return .F.
 ENDIF

 // Valida Usuario y mas Clave \\
 IF (S01)->( DbSeek(cUsuar+cPassw) )
     lAcceso := .T.

     oDlg:End()

     Return .T.
 ELSE
     MsgInfo('La contraseña es incorrecta...',"Confirme")

     cUsuar    := SPACE(22)
     nIntentos += 1

     RETURN .F.
 ENDIF

 *(S01)->(OrdSetFocus("USUAPASS"))

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 **(S01)->( DbSeek(cUsuar+cPassw) )



 IF !lRet
     nIntentos+=1
 ENDIF



 Release lRet
RETURN (lRet)


Gracias Ing. Francisco

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Como controlar dialogo de password

Postby FranciscoA » Sun May 01, 2016 4:50 am

Adrian, intenta adaptar las modificaciones de prueba que te expongo.
Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn, lRet:= .F., lAcceso := .F.
 local nIntentos := 0

LOCAL cUsuar, cPassw, cRutaDat:=" "  //PRUEBA



 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)

//DIALOG E IDs DE BOTONES DE PRUEBA

 DEFINE DIALOG oDlg RESOURCE "BUSCADOR2" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 201 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 202 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 312 OF oDlg ;
      ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw, @nIntentos, oGet[01],oGet[02]),;
               if(nIntentos>3, oDlg:End(), if(lAcceso, oDlg:End(),)) ) // Aqui me saca del dialogo ,aunque me valida que

   REDEFINE BUTTON oBtn[2] ID 313 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  :=  "..\CObSAT\EMP01"
     MsgInfo("Esta es mi ruta : "+cRutaDat)

     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

 if(lRet, MsgInfo("Retornando Verdadero"), MsgInfo("Retornando Falso"))

RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw, nIntentos, oGet01,oGet02)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) // .AND. !EMPTY(cUsuar)

          MsgAlert("Favor de teclear usuario")

          RETURN .F.    //lRet := .F.

    CASE EMPTY(cPassw)

          MsgAlert("Favor de teclear su clave de acceso")

          RETURN .F.    //lRet := .F.
 ENDCASE

/*
 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
      lAcceso := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")

      cPassW  := SPACE(6)

      nIntentos+=1

      RETURN .F.
 ENDIF
*/




//PRUEBA  (DBF y Uso locate para prueba)
   dbUseArea(.t.,,"Usuarios","Usuarios",.t.)
   usuarios->(dbgotop())
   locate for ALLTRIM(usuarios->nombre) + ALLTRIM(usuarios->codigo) = Alltrim(cUsuar) +Alltrim(cPassw)
   If Found()
      MsgInfo("Usuario encontrado...")
      lRet := .T.
   Else
      MsgInfo('Verifique su contraseña...',"Confirme")
      lRet := .f.
   Endif
   Usuarios->(dbCloseArea())
//FIN PRUEBA



 if !lRet
    nIntentos+=1
    oGet01:SetFocus()
 endif
 
RETURN (lRet)
 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Como controlar dialogo de password

Postby FranciscoA » Sun May 01, 2016 2:59 pm

Mejor dicho, tu codigo deberia funcionar asi:

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn, lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)


 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ;
      ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw, @nIntentos, oGet[01],oGet[02]),;
               if(nIntentos>3, oDlg:End(), if(lAcceso, oDlg:End(),)) )

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  :=  "..\CObSAT\EMP01"
     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw, nIntentos, oGet01,oGet02)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) // .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")
          RETURN .F.  

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")
          RETURN .F.  
 ENDCASE


 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")
      lRet := .f.
 ENDIF

 if !lRet
    nIntentos+=1
    oGet01:SetFocus()
 endif
 
RETURN (lRet)
 


Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: Como controlar dialogo de password (Solucionado)

Postby ACC69 » Tue May 03, 2016 8:15 pm

FranciscoA wrote:Mejor dicho, tu codigo deberia funcionar asi:

Code: Select all  Expand view
//------------------------------------------------------------------------------\\
STATIC FUNCTION ACCESA()
 LOCAL oDlg, oSay, oGet, oBtn, lRet:= .F., lAcceso := .F.
 local nIntentos := 0

 oGet   := Array(2)
 oSay   := Array(1)
 oBtn   := Array(2)

 cUsuar := SPACE(22)
 cPassw := SPACE(6)


 DEFINE DIALOG oDlg RESOURCE "USERCVE" TITLE "Acceso al control obligaciones de SAT"
   REDEFINE GET oGet[01] VAR cUsuar ID 101 OF oDlg PICTURE "@K"
   REDEFINE GET oGet[02] VAR cPassw ID 102 OF oDlg PICTURE "@K!"

   REDEFINE BUTTON oBtn[1] ID 201 OF oDlg ;
      ACTION ( lAcceso:=V_ACCESO(cUsuar,cPassw, @nIntentos, oGet[01],oGet[02]),;
               if(nIntentos>3, oDlg:End(), if(lAcceso, oDlg:End(),)) )

   REDEFINE BUTTON oBtn[2] ID 202 OF oDlg ACTION (  oDlg:END() ) CANCEL
 ACTIVATE DIALOG oDlg CENTERED

 IF lAcceso
     cRutaDat  :=  "..\CObSAT\EMP01"
     lRet := .T.
 ELSE
     lRet := .F.
 ENDIF

RETURN (lRet)


//------------------------------------------------------------------------------
STATIC FUNCTION V_Acceso(cUsuar,cPassw, nIntentos, oGet01,oGet02)
 LOCAL lRet := .F.

 DO CASE
    CASE EMPTY(cUsuar) // .AND. !EMPTY(cUsuar)
          MsgAlert("Favor de teclear usuario")
          RETURN .F.  

    CASE EMPTY(cPassw)
          MsgAlert("Favor de teclear su clave de acceso")
          RETURN .F.  
 ENDCASE


 S01 := Abre_Dbf(1,1) // USUARIOS.DBF

 *(S01)->(DbSeek(STR(nNumEmp,2)+EnDeCrypt(cPassW,'+')))
 (S01)->( DbSeek(cUsuar+cPassw) )

 IF (S01)->( FOUND() )
      MsgInfo("Usuario encontrado...")
      lRet := .T.
 ELSE
      MsgInfo('Verifique su contraseña...',"Confirme")
      lRet := .f.
 ENDIF

 if !lRet
    nIntentos+=1
    oGet01:SetFocus()
 endif
 
RETURN (lRet)
 


Saludos



Buenas tardes a todos.

Gracias Ing. Francisco, aprecio tu valioso apoyo y tu tiempo, ya quedo resuelto .

Gracias de nuevo.

Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 35 guests