Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [VB6] Problema sintassi orari

    Buongiorno, ho un command button che mi deve effettuare due operazioni diverse alla pressione a seconda dell'orario in cui viene schiacciato.

    Faccio un esempio:

    dalle 22.00 alle 03.00 di mattino, mi deve eseguire l'operazione 2, altrimenti la 1


    Mi sono arenato su un IF, che sicuramente non è il modo adatto di affrontare la situazione, ho spaziato anche sulla datediff e altre prove, ma la mia mancanza di preparazione non riesce a farmi risolvere il problema.


    Il mio if dove mi sono bloccato
    codice:
    if  (adesso >= OraInizio AND adesso <= 0000) OR (adesso >= 0000 AND adesso <= OraFine) then
    operazione 2
    else
    operazione 1
    endif
    l'ho scritto al volo omettendo tutto.

    se orainizio è 2200 e orafine è 0300
    adesso 2330 esegue operazione 2
    adesso 1900 esegue operazione 1
    adesso 0230 esegue operazione 2

    e va bene.

    se orainizio è 0010 e orafine è 0450
    adesso 2330 esegue operazione 1
    adesso 0115 esegue operazione 2
    adesso 1230 esegue operazione 1

    e va bene

    se orainizio è 1100 e orafine è 1500
    adesso 0900 esegue operazione 2

    invece dovrebbe eseguire operazione 1


    Come posso ovviare a questo problema?

    Grazie mille
    PIERCHI

  2. #2
    diciamo che <0000 non si verificherà mai? forse intendevi <2359 ?

  3. #3
    Se non sbaglio è metto 2359, il mio secondo esempio, ultimo orario quello delle 1230, sballa. La cosa non cambia
    PIERCHI

  4. #4
    anche trasformando in secondi, non risolvo la cosa...
    codice:
    Dim A As String
    Dim b As String
    A = "22:00:00"
    b = "03:00:00"
    c = "22:01:00"
    ax = DateDiff("s", 0, A)
    bx = DateDiff("s", 0, b)
    cx = DateDiff("s", 0, c)
    If cx >= ax And cx <= bx Then
    Debug.Print "son dentro"
    Else
    Debug.Print "son fuori"
    End If
    mi dice che sono fuori, perchè le due condizioni non sono rispettate
    PIERCHI

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Usa la funzione Time e lascia perdere DateDiff, che non c'entra nulla.


  6. #6
    E come la uso scusa?

    Non posso neppure dirgli che 0100 corrisponde al giorno dopo...
    PIERCHI

  7. #7
    se la richiesta è

    dalle 22.00 alle 03.00 di mattino, mi deve eseguire l'operazione 2, altrimenti la 1

    la dovresti risolvere con

    codice:
    
    
    codice:
    If OraFine < OraInizio Then ' sono a cavallo di due giorni
       If Adesso >= OraInizio OR Adesso <= OraFine Then
          Operazione2
       Else
          Operazione1
       EndIf
    Else ' sono in giornata
       If Adesso >= OraInizio AND Adesso <= OraFine Then
          Operazione2
       Else
          Operazione1
       EndIf
    EndIf











  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da pierchi Visualizza il messaggio
    E come la uso scusa?

    Non posso neppure dirgli che 0100 corrisponde al giorno dopo...
    Basta rifletterci un po' su... ed invertire la condizione:

    codice:
    If Hours(Time) > 3 And Hours(Time)  < 22 Then
        ' esegui operazione2
    Else
       '  esegui operazione1
    End If

  9. #9
    Non avevo pensato di mettere due o più if. Ecco dove mi ero perso.

    Grazie a tutti
    PIERCHI

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.