Newsgroup: it.comp.lang.visual-basic
Titolo: Calcolare il turno di lavoro (intervallo orario!!!)

Sto provando con VB5 a calcolare in automatico il turno di lavoro in
base a determinati intervalli di orario. Ho scritto il seguente codice:
If oraet > #6:00:00 AM# And oraet < #2:00:00 PM# Then
    Text2.Text = 1
Else
    If oraet > #2:00:00 PM# And oraet < #10:00:00 PM# Then
        Text2.Text = 2
    Else
        If oraet > #10:00:00 PM# And oraet < #12:00:00 PM# Then
            Text2.Text = 3
        Else
            If oraet > #12:00:00 PM# And oraet < #6:00:00 AM# Then
                Text2.Text = 3
            End If
        End If
    End If
End If
Tutto bene per i turni 1 e 2, mentre per il turno 3 non viene digerita
la mezzanotte. In pratica se oraet = 23.30.00 non rientra nel terzo caso
dove l'intervallo è dalle #10:00:00 PM# alle #12:00:00 PM#.
Ringrazio già da ora chi mi aiuterà!!!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

12:00:00 PM è mezzogiorno.
Alberto

 Alberto
Non va neanche se metto 12:00:00 AM !!!
Troppo semplice!!!


#11:30:00 PM# < #12:00:00 AM# => FALSO
Perchè mezzanotte è il primo orario della giornata, non l'ultimo.
Lo dimostra il fatto che mezzanotte è AM, non PM.
Nel confronto degli orari, VB ragiona all'americana, per cui come prima cosa
confronta PM e AM, poi le cifre, partendo dalle ore, poi i minuti, poi i
secondi. Quindi, PM non può mai essere minore di AM!!
Devi usare <=#11:59:59 PM#
Ciao
Alberto

 wrote in message
news:a4bf41$gb0$2...@newsreader.mailgate.org...

Se faccio in questo modo:
        If oraet > #10:00:00 PM# And oraet < #11:59:59 PM# Then
            Text2.Text = 3
        Else
            If oraet > #12:00:01 AM# And oraet < #6:00:00 AM# Then
                Text2.Text = 3
            End If
        End If
Funziona tutto correttamente però se capita che oraet = 0:00 
allora non rientra, giustamente, in nessuno dei due casi.
Devo fare così e poi aggiungere una condizione solo per l'ora 0:00?
Ciao


         End If
e risolvevi tutto fin dall'inizio :-)
Per tua informazione, non č corretto usare Text2.Text=3, perchč 3 č un
numero e .text č una stringa.
Per correttezza, andrebbe usato Text2.Text=cstr(3)
Ciao
Alberto

 >             If oraet >= #12:00:00 PM# And oraet < #6:00:00 AM# Then

 wrote in message
news:a4bham$ia1$1...@newsreader.mailgate.org...

Ho risolto l'enigma (anche grazie a te che mi hai messo qualche pulce
nell'orecchio!!!!).
Il codice esatto è il seguente:
If oraet >= #6:00:00 AM# And oraet < #2:00:00 PM# Then
    Text2.Text = CStr(1)
Else
    If oraet >= #2:00:00 PM# And oraet < #10:00:00 PM# Then
        Text2.Text = CStr(2)
    Else
        If oraet >= #10:00:00 PM# And oraet <= #11:59:59 PM# Then
            Text2.Text = CStr(3)
        Else
            If oraet >= #12:00:00 AM# And oraet < #6:00:00 AM# Then
                Text2.Text = CStr(3)
            End If
        End If
    End If
End If
Come puoi vedere l'ultimo If non è PM come hai scritto ma AM.
Per quanto riguarda la versione "semplice", non funziona come dici tu.
Supponendo che oraet = 23.30.00 è vero che è maggiore delle 10.00 PM
però non è minore delle 6.00 AM in quanto non c'è una data di
riferimento
che indica il cambio del giorno.
Ciao e grazie per l'aiuto e la disponibilità.



Ma io ho scritto di usare OR, non AND, per cui se è maggiore delle 10PM, è
già sufficiente, indipendentemente dla fatto che non sia minore di 6AM.
Mi sfugge qualcosa, nella tua risposta.....
Alberto

 wrote in message
news:a4bkvp$kp1$1...@newsreader.mailgate.org...

OK!!! Hai ragione, non avevo visto OR (ormai sono cotto!!!) dimentica
le ultime cose che ho scritto. Adotterò la formula "semplice".
Grazie
Ciao


 base a determinati intervalli di orario. Ho scritto il seguente codice:
Ma non era sufficiente un:
Select Case oraet
Case #6:00:01 AM# To #2:00:00 PM#
    Caption = 1
Case #2:00:01 PM# To #10:00:00 PM#
    Caption = 2
Case (#10:00:01 PM# - 1) To #6:00:00 AM#
    Caption = 3
End Select
L'ultimo significa semplicemente "dalle 10 di sera del giorno precedente
(dato che siamo a cavallo della mezzanotte) e le 6 di mattina"
Ciao

 ha scritto nel
messaggio news:86592aa6c64d59a6717...@mygate.mailgate.org...
