ZECA Posted November 8, 2013 Report Share Posted November 8, 2013 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 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted November 9, 2013 Report Share Posted November 9, 2013 Duas maneiras são de ele armazenar num DB e sempre pegar a ultima data digitada ou em um vetor(caso o programa não seja fechado, claro.) usando a mesma regra. Acredito que apenas assim será possível. Quote Link to comment Share on other sites More sharing options...
Ale SB Posted November 9, 2013 Report Share Posted November 9, 2013 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 Quote Link to comment Share on other sites More sharing options...
ZECA Posted November 9, 2013 Author Report Share Posted November 9, 2013 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 Quote Link to comment Share on other sites More sharing options...
ZECA Posted November 9, 2013 Author Report Share Posted November 9, 2013 Boa Tarde @Le!!! Bingo Era isto mesmo que eu estava precisando. Gato Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.