Problemi con le date

venerdì 06 luglio 2007 - 08.10

fede290 Profilo | Newbie

sto utilizzando access 2003
in una tabella ho i seguenti campi
nome; dataInizio; dataFine
pippo; 02/05/07; 15/07/07
pluto; 02/05/07; 25/08/07
minni; 02/05/07; 15/07/07
topolino; 02/05/07; 25/08/07
mi seve creare un controllo che premendo su un pulsante (controlla scadenze)mi confronti la data odierna con la dataFine;se la differenza è minore di 10 giorni vorrei che mi dia un messaggio di avviso scadenza
Grazie

secks Profilo | Senior Member

Con qury SQL in ACCESS questo funziona.

SELECT DateDiff('d',Date(),[datafine]) AS diff, Date() AS Oggi, *
FROM Tabella1
WHERE (DateDiff('d',Date(),[datafine])>10);

Ciao.
Paolo.

PS fammi sapere.

fede290 Profilo | Newbie

Con qury SQL in ACCESS questo funziona.

SELECT DateDiff('d',Date(),[datafine]) AS diff, Date() AS Oggi, *
FROM Tabella1
WHERE (DateDiff('d',Date(),[datafine])>10);

Ciao.
Paolo.

PS fammi sapere.

GRAZIE FUNZIONA
MA VISTO CHE VOGLIO IMPARARE MI SPIEGHI COSA VUOL DIRE IL PARAMETRO "D"

secks Profilo | Senior Member

Dall'HELP di MSDN:

Restituisce un valore Long corrispondente al numero di intervalli di tempo tra due valori Date.

Public Overloads Function DateDiff( _
ByVal Interval As DateInterval, _
ByVal Date1 As DateTime, _
ByVal Date2 As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
-oppure-

Public Overloads Function DateDiff( _
ByVal Interval As String, _
ByVal Date1 As Object, _
ByVal Date2 As Object, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
Parametri
Interval
Obbligatorio. Valore di enumerazione DateInterval o espressione String che rappresenta l'intervallo di tempo da utilizzare come unità di misura della differenza tra Date1 e Date2.
Date1, Date2
Obbligatorio. Di tipo Date. I due valori data/ora che si desidera utilizzare nel calcolo. Il valore Date1 viene sottratto dal valore Date2 per ottenere la differenza. Nessuno dei due valori viene modificato nel programma chiamante.
DayOfWeek
Facoltativo. Un valore tratto dall'enumerazione FirstDayOfWeek che specifica il primo giorno della settimana. In assenza di indicazioni, viene utilizzato il valore FirstDayOfWeek.Sunday.
WeekOfYear
Facoltativo. Un valore tratto dall'enumerazione FirstWeekOfYear che specifica la prima settimana dell'anno. In assenza di indicazioni, viene utilizzato il valore FirstWeekOfYear.Jan1.
Impostazioni
Di seguito sono indicate le possibili impostazioni dell'argomento Interval.

Valore di enumerazione Stringa Unità di misura della differenza temporale

DateInterval.Day d Giorno <----------------

DateInterval.DayOfYear y Giorno
DateInterval.Hour h Ora
DateInterval.Minute n Minuto
DateInterval.Month m Mese
DateInterval.Quarter q Trimestre
DateInterval.Second s Secondo
DateInterval.Weekday w Settimana
DateInterval.WeekOfYear ww Settimana del calendario
DateInterval.Year yyyy Anno

Di seguito sono indicate le possibili impostazioni dell'argomento DayOfWeek.

Valore di enumerazione Valore Descrizione
FirstDayOfWeek.System 0 Primo giorno della settimana specificato nelle impostazioni di sistema
FirstDayOfWeek.Sunday 1 Domenica (Sunday) (impostazione predefinita)
FirstDayOfWeek.Monday 2 Lunedì (Monday) (conforme allo standard ISO 8601, sezione 3.17)
FirstDayOfWeek.Tuesday 3 Martedì
FirstDayOfWeek.Wednesday 4 Mercoledì
FirstDayOfWeek.Thursday 5 Giovedì
FirstDayOfWeek.Friday 6 Venerdì
FirstDayOfWeek.Saturday 7 Sabato

Di seguito sono indicate le possibili impostazioni dell'argomento WeekOfYear.

Valore di enumerazione Valore Descrizione
FirstWeekOfYear.System 0 Prima settimana dell'anno specificata nelle impostazioni di sistema
FirstWeekOfYear.Jan1 1 Settimana in cui cade l'1 gennaio (impostazione predefinita).
FirstWeekOfYear.FirstFourDays 2 Settimana in cui almeno quattro giorni cadono nel nuovo anno (conforme allo standard ISO 8601, sezione 3.17)
FirstWeekOfYear.FirstFullWeek 3 Prima settimana completa del nuovo anno

Eccezioni/Errori
Tipo di eccezione Numero di errore Condizione
ArgumentException 5 Interval non valido.
ArgumentException 5 Date o DayofWeek non compreso nell'intervallo.
InvalidCastException 13 Date1 o Date2 costituito da tipi non validi.

Osservazioni
Utilizzare la funzione DateDiff per determinare quanti intervalli temporali specifici vi sono tra due valori data/ora. È ad esempio possibile utilizzarla per calcolare il numero di giorni tra due date o il numero di settimane comprese tra la data attuale e la fine dell'anno.

Se Interval è impostato su DateInterval.DayOfYear, verrà considerato alla stregua di DateInterval.Day poiché DayOfYear non è un'unità di misura significativa per un intervallo di tempo.

Se Interval è impostato su DateInterval.WeekOfYear, il valore restituito rappresenta il numero di settimane tra il primo giorno della settimana contenente Date1 e il primo giorno della settimana contenente Date2. Nell'esempio seguente è illustrato come ciò produca diversi risultati da DateInterval.Weekday:

Dim DatTim1 As Date = #1/4/2001# ' This is a Thursday.
Dim DatTim2 As Date = #1/9/2001# ' This is the next Tuesday.
' Assume Sunday is specified as first day of the week.
Dim WD As Long = DateDiff(DateInterval.Weekday, DatTim1, DatTim2)
Dim WY As Long = DateDiff(DateInterval.WeekOfYear, DatTim1, DatTim2)
Nell'esempio riportato sopra, DateDiff restituisce 0 per WD perché la differenza tra le due date è inferiore a sette giorni, mentre restituisce 1 per WY perché tra i primi giorni delle rispettive settimane di calendario vi è una differenza di sette giorni.

Se Interval è impostato su DateInterval.Year, il valore restituito viene calcolato unicamente dalle parti di Date1 e Date2 relative all'anno.

Poiché Date1 e Date2 sono di tipo Date, i valori di data e ora contenuti hanno l'accuratezza di 100 nanosecondi propria del timer di sistema. DateDiff, tuttavia, restituisce sempre il numero di intervalli di tempo come valore Long.

Se Date1 rappresenta una data e un'ora successiva rispetto a Date2, DateDiff restituirà un numero negativo.

Se un argomento contiene un valore non valido, verrà generato un errore ArgumentException. Se l'argomento Date1 o Date2 contiene un valore che non può essere assegnato forzatamente a un valore Date valido, verrà generato un errore InvalidCastException.

Nota Quando si confronta il 31 dicembre con l'1 gennaio dell'anno successivo, DateDiff restituisce 1 per DateInterval.Year, DateInterval.Quarter o DateInterval.Month anche se è trascorso un solo giorno.
Poiché ogni valore Date è supportato da una struttura DateTime, i relativi metodi offrono ulteriori opzioni per l'individuazione di intervalli di tempo. È ad esempio possibile utilizzare il metodo Subtract in una delle due relative forme di overload. Una di esse sottrae un TimeSpan da una variabile Date per restituire un altro valore Date; l'altra sottrae un valore Date per restituire un TimeSpan. È possibile cronometrare un processo per scoprire quanti millisecondi impiega, come nell'esempio che segue:

Dim StartTime As Date = Now ' Starting date/time.
' Run the process that is to be timed.
Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
Dim Millisecs As Integer = RunLength.Milliseconds
Esempio
In questo esempio viene utilizzata la funzione DateDiff per visualizzare il numero di giorni compreso tra una determinata data e la data odierna.

Dim FirstDate, Msg As String ' Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date")
SecondDate = CDate(FirstDate)
Msg = "Days from today: " & DateDiff(DateInterval.Day, Now, SecondDate)
MsgBox (Msg)
Requisiti
Spazio dei nomi: Microsoft.VisualBasic

Modulo: DateAndTime

Assembly: Microsoft Visual Basic .NET Runtime (in Microsoft.VisualBasic.dll)

Vedere anche
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5