edutraini Posted November 16, 2022 Report Share Posted November 16, 2022 Bom dia Pessoal Existe alguma funcao que valida a data digitada para que quando for gravar na base dados sql não de erro Obrigado Quote Link to comment Share on other sites More sharing options...
gilmer Posted November 16, 2022 Report Share Posted November 16, 2022 Bom Dia, Seu get não é tipo data ? por padrão ele não deixa digitar uma data inválida Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2022 Report Share Posted November 16, 2022 Explique melhor Edú. Tá dúbia a sua pergunta. Mostre o que você está fazendo e o que gostaria de fazer, sim? Regards, saludos. Quote Link to comment Share on other sites More sharing options...
edutraini Posted November 16, 2022 Author Report Share Posted November 16, 2022 Obrigado a todos mas as vezes o usuario digita uma data errada em um campo get exemplo 01/01/1000 ai quando grava no sql da erro queria nao deixar ele digitar exemplo menor que 01/01/2000 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 16, 2022 Report Share Posted November 16, 2022 O Programa va falar por si... Abs. // C:\FWH..\SAMPLES\TRAINDAT.PRG - 16/11/2022 By Joao Santos-Sao Paulo. #Include "FiveWin.ch" STATIC oDlg, oFont STATIC lActualiza := .F. FUNCTION Main() LOCAL oGet1, oGet2, oGet3 LOCAL oBtnX2, cTitle, aGrad, oSay1, oBtn, oActualiza LOCAL DtSorteo, DtConsulta, DtproxCons, DtUltReg SET CENTURY ON SET DATE BRITISH SET EPOCH TO YEAR( DATE() ) - 30 cTitle := "Validar Data EduTraini" DtUltReg := CTOD( "11/12/2022" ) DtSorteo := CTOD( "12/11/2022" ) DtConsulta := CTOD( "14/11/2022" ) DtProxCons := CTOD( "15/11/2022" ) DEFINE FONT oFont NAME "TAHOMA" SIZE 0, - 14 DEFINE DIALOG oDlg SIZE 600, 200 PIXEL TRUEPIXEL RESIZABLE ; TITLE cTitle COLOR CLR_BLACK, CLR_WHITE TRANSPARENT FONT oFont oDlg:lHelpIcon := .F. @ 12, 10 SAY oSay1 PROMPT "último sorteo en archivo:" SIZE 200, 16 PIXEL ; OF oDlg FONT oFont UPDATE @ 32, 10 GET oGet1 VAR DtSorteo SIZE 100, 24 PIXEL OF oDlg FONT oFont ; PICTURE "@D 99/99/9999" CENTER ; VALID( VALIDAR_DATA_DIGIT( DtSorteo, oActualiza ) ) @ 60, 10 SAY oSay1 PROMPT "Fecha(Date) de consulta:" SIZE 200, 16 PIXEL ; OF oDlg FONT oFont UPDATE @ 80, 10 GET oGet2 VAR DtConsulta SIZE 100, 24 PIXEL OF oDlg FONT oFont ; PICTURE "@D 99/99/9999" CENTER ; VALID( VALIDAR_DATA_DIGIT( DtSorteo, oActualiza ) ) @ 106, 10 SAY oSay1 PROMPT "Fecha(Date) Proxima consulta:" SIZE 200, 16 PIXEL ; OF oDlg FONT oFont UPDATE @ 128, 10 GET oGet3 VAR DtProxCons SIZE 100, 24 PIXEL OF oDlg FONT oFont ; PICTURE "@D 99/99/9999" CENTER ; VALID( VALIDAR_DATA_DIGIT( DtSorteo, oActualiza ) ) @ 050, 500 BUTTON oActualiza PROMPT 'Actualiza' SIZE 80, 50 PIXEL OF oDlg ; ACTION( ACTUALIZA_LOTTO() ) WHEN( lActualiza ) @ 120, 500 BUTTON 'Close' SIZE 80, 50 PIXEL OF oDlg ACTION( oDlg:End() ) ; CANCEL ACTIVATE DIALOG oDlg CENTERED RELEASE oFont RETURN NIL FUNCTION VALIDAR_DATA_DIGIT( cDate, oActualiza ) IF( cDate ) >= CTOD( "01/01/2000" ) // A Data que voce quiser bloquear. RETURN( .T. ) // Pode passar, data valida. ELSE MsgInfo( "Data Incorreta", "Data Incorreta" ) ENDIF IF CDOW( cDate ) = "Saturday" .OR. ; CDOW( cDate ) = "Tuesday" lActualiza := .T. RETURN( .T. ) ENDIF RETURN( .F. ) FUNCTION ACTUALIZA_LOTTO() RETURN NIL Regards, saludos. Quote Link to comment Share on other sites More sharing options...
edutraini Posted November 16, 2022 Author Report Share Posted November 16, 2022 perfeito Kapi obrigado vou criar a funcao e validar todas as datas achei que tinha algum parametro direto no campo data Abraço Quote Link to comment Share on other sites More sharing options...
alex2002 Posted November 16, 2022 Report Share Posted November 16, 2022 Uai Edu, Então vc colocou a pergunta errado. Porque 01/01/1000 é uma data válida. Isso o GET já valida, o que vc precisa é simplemente colocar o range que deseja conforme o João mandou. Um abraço, Alexandre Pereira Quote Link to comment Share on other sites More sharing options...
edutraini Posted November 16, 2022 Author Report Share Posted November 16, 2022 boa tarde Ale engraçado mas se colocar 01/01/1000 da erro usando sqlrdd Quote Link to comment Share on other sites More sharing options...
emotta Posted November 19, 2022 Report Share Posted November 19, 2022 Em 16/11/2022 at 14:02, edutraini disse: boa tarde Ale engraçado mas se colocar 01/01/1000 da erro usando sqlrdd Edu, no meu sistema eu considero em campos datas ano menor do que 1900 ou maior do que 2100 inválidos. Realmente no SQL SERVER se mandar gravar anos muitos antigos ou muito no futuro dá erro. 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.