Titolo: Chiedere la data all'utente
Categoria: Codice |
|
Ultimo Aggiornamento: 21/05/05 |
Solitamente l'utente che si vede davanti una finestra di Request che gli chieda l'inserimento di una data è costretto ad inserire 6,8,10 caratteri (con i separatori), con conseguente perdita di tempo, soprattutto se la data da inserire è (relativamente alla data attuale) sempre la stessa: se, ad esempio, l'utente inserisce solitamente la data di inizio del mese corrente o della settimana corrente, possiamo generare delle scorciatoie per avere un vantaggio dalla possibilità di inserire una stringa.
Ecco allora un metodo che gestisce una serie di scorciatoie da tastiera per le date. Le scorciatoie sono:
1) M : la prima data del mese
2) U : l'ultima data del mese
3) A : il primo giorno dell'anno
4) F : l'ultimo giorno dell'anno
5) L : il primo giorno della settimana
6) D : l'ultimo giorno della settimana
7) + : domani
8) - : ieri
9) O : oggi
10) Se l'utente inserisce un numero, viene ritornata la data con il mese e l'anno correnti
11) Se l'utente inserisce un numero, un separatore e un numero, viene ritornata la data con l'anno corrente
12) Altrimenti viene ritornato il risultato della funzione "Date" di 4th Dimension.
Ecco il metodo.
C_TEXT($1)
C_DATE($0)
$currentMonthString_S:=String(Month of(Current date(*)))
$currentYearString_S:=String(Year of(Current date(*)))
$firstDateOfThisMonth_D:=Date("01/"+$currentMonthString_S+"/"+$currentYearString_S)
Case of : ($1="O") ` oggi
$0:=Current date(*)
: ($1="A") ` primo giorno dell'anno
$0:=Date("01/01/"+$currentYearString_S)
: ($1="F") ` ultimo giorno dell'anno
$0:=Date("31/12/"+$currentYearString_S)
: ($1="M") ` primo giorno del mese
$0:=$firstDateOfThisMonth_D
: ($1="U") ` ultimo giorno del mese
$0:=Add to date($firstDateOfThisMonth_D;0;1;-1)
` ho aggiunto un mese e tolto un giorno
: ($1="L") ` primo giorno della settimena. Lunedì
$data_D:=Current date(*)
$miogiorno_L:=((Day number($data_D))-1)+(7*(Num(((Day number($data_D))=1)))
$0:=Current date(*)-($miogiorno_L-1)
`se si vuole Domenica usare direttamente
`$0:=Current date(*)-(Day number(Current date(*))-1)
: ($1="D") ` ultimo giorno della settimana. Domenica.
$data_D:=Current date(*)
$miogiorno_L:=((Day number($data_D))-1)+(7*(Num(((Day number($data_D))=1)))
$0:=Current date(*)+(7-$miogiorno_L)
` se si vuole Sabato usare direttamente
` $0:=Current date(*)+(7-Day number(Current date(*)))
: ($1="+") `domani
$0:=Current date(*)+1
: ($1="-") `ieri
$0:=Current date(*)-1
Else `nessuno dei casi precedenti
$testDate_D:=Date($1)
If ($testDate_D=!00/00/00!) `se non è una data completa la riempio io
$1:=$1+"/"+$currentYearString_S
$testDate_D:=Date($1)
If ($testDate=!00/00/00!)
$1:=$1+"/"+$currentMonthString_S+"/"+$currentYearString_S
$testDate_D:=Date($1)
End if ` ($testDate_D=!00/00/00!)
End if ` ($testDate_D=!00/00/00!)
$0:=$testDate_D
End case
Inviato da: PierPaolo Sichera |
|
Visite: 12706 |
Se accedi con utente e password, puoi aggiungere dei commenti.