Jump to content
Fivewin Brasil

Manipulação de datas


ZECA

Recommended Posts

Um colega meu tem um sistema adquirido de terceiro que tem uma particularidade muito interessante

quanto a manipulação de DATAS. No campo data, voce pode digitar 101112 e ele retorna

10/11/2012; digitando 10/11 ele retorna 10/11/2012; digitando somente 10 ele retorna 10/11/2012.

Como é possivel fazer isto? É uma função criada pelo desenvolvedor? ou alguns sistemas pelas proprias LIBs retorna a data conforme solicitado?. É possivel fazer isto em CLIPPER ou FIVEWIN?

Grato

Link to comment
Share on other sites

Ola Zeca,

Veja se Isso Ajuda.....Esta Funçao vai fazer a conversão Automática.....

....a Funçao eh simples, se quiser melhorar fique a vontade:

 
local cData := Space(10)
.
.
     REDEFINE GET oGet[02] VAR cData ID 22 OF oDlg PICTURE "9999999999"
                  oGet[02]:bValid := {|lRet| lRet := Data_Auto(@cData), ;
                                                 if( lRet, nil, ;
                                                              (cData := Space(10)) ), oGet[02]:Refresh(),  ;
                                                          lRet }
.
.
.
Return
 

function Data_Auto(_cData)
  
  local cDia_Mes, cAno
  
  if Len(AllTrim(_cData)) == 1 .or. Len(AllTrim(_cData)) == 2
     _cData := StrZero(Val(_cData),2) + "/" + StrZero(Month(Date()),2) + "/" + StrZero(Year(Date()),4)
  elseif Len(AllTrim(_cData)) == 4    
      _cData := Stuff(AllTrim(_cData),3,2,"") + "/" + Stuff(Alltrim(_cData), 1, 2, "" ) + "/" + StrZero(Year(Date()),4)
  elseif Len(AllTrim(_cData)) == 6
        cDia_Mes := Stuff(AllTrim(_cData),5,2,"")
        cDia_Mes := stuff(cDia_Mes,3,0,"/")
      _cData := DtoC(ctod(cDia_Mes + "/" + Str(Val(Stuff(Alltrim(_cData), 1, 4, "" )),4)))
  elseif Len(AllTrim(_cData)) == 8
      cDia_Mes := Stuff(AllTrim(_cData),5,4,"")
        cDia_Mes := Stuff(cDia_Mes,3,0,"/")
        cAno := Stuff(AllTrim(_cData),1,4,"/")
      _cData := cDia_Mes + cAno
  else
     MsgInfo("Erro no Campo Data, Verifique a Data Digitada!","...Atenção..")
     return .f.
  endif
  
return .t.

@braços Ale

Link to comment
Share on other sites

Ola Zeca,

Veja se Isso Ajuda.....Esta Funçao vai fazer a conversão Automática.....

....a Funçao eh simples, se quiser melhorar fique a vontade:

 
local cData := Space(10)
.
.
     REDEFINE GET oGet[02] VAR cData ID 22 OF oDlg PICTURE "9999999999"
                  oGet[02]:bValid := {|lRet| lRet := Data_Auto(@cData), ;
                                                 if( lRet, nil, ;
                                                              (cData := Space(10)) ), oGet[02]:Refresh(),  ;
                                                          lRet }
.
.
.
Return
 

function Data_Auto(_cData)
  
  local cDia_Mes, cAno
  
  if Len(AllTrim(_cData)) == 1 .or. Len(AllTrim(_cData)) == 2
     _cData := StrZero(Val(_cData),2) + "/" + StrZero(Month(Date()),2) + "/" + StrZero(Year(Date()),4)
  elseif Len(AllTrim(_cData)) == 4    
      _cData := Stuff(AllTrim(_cData),3,2,"") + "/" + Stuff(Alltrim(_cData), 1, 2, "" ) + "/" + StrZero(Year(Date()),4)
  elseif Len(AllTrim(_cData)) == 6
        cDia_Mes := Stuff(AllTrim(_cData),5,2,"")
        cDia_Mes := stuff(cDia_Mes,3,0,"/")
      _cData := DtoC(ctod(cDia_Mes + "/" + Str(Val(Stuff(Alltrim(_cData), 1, 4, "" )),4)))
  elseif Len(AllTrim(_cData)) == 8
      cDia_Mes := Stuff(AllTrim(_cData),5,4,"")
        cDia_Mes := Stuff(cDia_Mes,3,0,"/")
        cAno := Stuff(AllTrim(_cData),1,4,"/")
      _cData := cDia_Mes + cAno
  else
     MsgInfo("Erro no Campo Data, Verifique a Data Digitada!","...Atenção..")
     return .f.
  endif
  
return .t.

@braços Ale

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...