Page 1 of 1

como validar una fecha erronea en un GET

PostPosted: Sat May 30, 2015 4:51 pm
by Patricio Avalos Aguirre
Estimados

antiguamente cuando uno colocaba una fecha erronea en un get el sistema automaticamente dejaba la fecha vacia para que el usuario la volviera a colocar
pero ahora la deja en el ultimo dia

por ejemplo hoy 30/05/2015 y en el get coloco 31/06/2015 error en fecha pero el sistema deja en 31/05/2015 y eso provoca que el usuario pase sin darse cuenta del error


ahora en el sistema trato de validar dicha fecha pero el valid me pone que el usuario puso 31/05/2015

alguna forma de dejarlo como antes?

Re: como validar una fecha erronea en un GET

PostPosted: Mon Jun 01, 2015 3:11 pm
by puenteda
Patricio:

El comportamiento normal de la clase tget es retornar .F. en el valid del get (aunque vos no hayas utilizado la clausula VALID en tu definicion del get) y emitir un pitido, por lo que usuario no deberia poder 'salir' del get si la fecha es erronea. Si vos le agregas clausula valid podes poner un cartel de aviso, cambiar el valor del get, etc.

Si lo que queres es que se vacie el get por defecto deberias modificar la clase tget y listo, en por ejemplo (depende de la version de fw que tengas):

METHOD lValid() CLASS TGet

local lRet := .t.

if ::oGet:BadDate

Tone( 100, 3 )
// agregar
if BadDate
::buffer:=CTOD(' / / ')
endif
return .f.

else



Saludos,
Daniel Puente

Re: como validar una fecha erronea en un GET

PostPosted: Wed Aug 10, 2016 10:01 pm
by Patricio Avalos Aguirre
Retomando esto

Daniel

Claro antiguamente eso funcionaba ahora no..

en la clase tGet siempre va una fecha valida

he estado dandole vualta a la clase pero no me entrega dicha fecha erronea para enviarselo al usuario
a alguien le sucede

Code: Select all  Expand view
METHOD lValid() CLASS TGet

   local lRet := .t.

  alert( ::oGet:varget ) // siempre devuelve la ultima fecha valida

//como esta la clase ahora esto estaria de mas
   if ::oGet:BadDate
      ::oGet:KillFocus()
      ::oGet:SetFocus()
      MsgBeep()
      return .f.
   else
      ::oGet:Assign()
      if GetASyncKey( VK_UP ) .or. (GetASyncKey( VK_SHIFT ) .and. !GetASyncKey( VK_RETURN )) //patricio
         return( .t. )
     endif

      if ValType( ::bValid ) == "B"
         lRet := Eval( ::bValid, Self  )
         if ! lRet
            ::oWnd:nLastKey = 0
         endif
      endif
   endif

return lRet

Re: como validar una fecha erronea en un GET

PostPosted: Fri Aug 12, 2016 6:59 am
by Antonio Linares
Patricio,

Prueba a comentar estas líneas:

// ::oGet:KillFocus()
// ::oGet:SetFocus()