Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    Controlli se le date sono antecedenti

    ho effettuato questi tipi di controlli sulle date:

    codice:
            If Trim(txtDataIniContratto.Text) <> "" And Trim(txtDataFineContratto.Text) <> "" Then
                If CDate(txtDataIniContratto.Text) >= CDate(txtDataFineContratto.Text) Then
                    MessageBox.Show("La data di inizio contratto deve essere antecedente con la data di fine contratto")
                    txtDataFineContratto.Focus()
                    Exit Function
                End If
            End If
    Volevo sapere se ci si può fidare al 100% di questo utilizzo dell'operatore < e > sulle date come se fossero numeri!

    Grazie
    Tony

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477

    Re: Controlli se le date sono antecedenti

    Originariamente inviato da tony83
    Volevo sapere se ci si può fidare al 100% di questo utilizzo dell'operatore < e > sulle date come se fossero numeri!
    Obviously...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    mi spiego meglio:

    è corretto usare gli operatori maggiore e minore per un confronto di date?
    Tony

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da tony83
    è corretto usare gli operatori maggiore e minore per un confronto di date?
    Sì, ma anche se la cosa fosse dubbia, sperimentarlo in pratica non sarebbe così complicato.

    Fai prima a scrivere un tentativo che scrivere due volte qui.

    Inoltre, sui confronti ci sono note anche nella documentazione che, come sempre, andrebbe letta.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Originariamente inviato da tony83
    mi spiego meglio:
    è corretto usare gli operatori maggiore e minore per un confronto di date?
    Senz'altro si' !

    Pero' tieni conto che e' forse meno corretto se ottieni le date convertendo "al volo" delle TextBox, che possono contenere... di tutto ! (stringhe non interpretabili come date... o formalmente non corrette, ecc...)

    Da notare che e' invece scorretto usare l'operatore '=' per verificare l'uguaglianza tra due date (potendo incorporare le variabili Date delle componenti 'orarie'), mentre andrebbe usata la funzione DateDiff().

    Ciao !
    IceCube_HT (VB6 fan Club)

  6. #6
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    ok cmq le textbox sono "SICURE" del loro valore visto che ho fatto dei controlli rigidissssssimi, forse anche 'troppo'..
    Ho creato una classe per la data che si occuperà di inserire lo slash subito dopo aver digitato giorno o il mese, controlli immediati su tutto,e inoltre visualizza un tooltip che dice di inserire il giorno, o mese o anno in base a dove sei posizionato con il cursore, forse è 'SOLO' da sistemare e modificare un pò.. (da migliorare visto che c'è qualche bug)!!
    Inoltre forse è un controllo in piu da eliminare, ho fatto in maniera tale che alla pressione continua di un tasto ti ferma e cancella tutta la data.
    Ovviamente il maxlenght a 10 da codice e da manina!

    ps. se le inizializzo lo faccio con il datetime.today quindi l'ora non prenderebbe comunque

    Grazie ciao
    Tony

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da icecube_HT
    Da notare che e' invece scorretto usare l'operatore '=' per verificare l'uguaglianza tra due date (potendo incorporare le variabili Date delle componenti 'orarie'), mentre andrebbe usata la funzione DateDiff().
    Dipende dai casi e dai punti in cui il valore data/ora viene prelevato.

    A meno che non si utilizzi Now, in genere le date sono codificate con le informazioni dell'ora solo quando richiesto o a seconda della situazione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da tony83
    ok cmq le textbox sono "SICURE" del loro valore visto che ho fatto dei controlli rigidissssssimi, forse anche 'troppo'..
    Ho creato una classe per la data che si occuperà di inserire lo slash subito dopo aver digitato giorno o il mese, controlli immediati su tutto,e inoltre visualizza un tooltip che dice di inserire il giorno, o mese o anno in base a dove sei posizionato con il cursore, forse è 'SOLO' da sistemare e modificare un pò.. (da migliorare visto che c'è qualche bug)!!
    Inoltre forse è un controllo in piu da eliminare, ho fatto in maniera tale che alla pressione continua di un tasto ti ferma e cancella tutta la data.
    Ovviamente il maxlenght a 10 da codice e da manina!

    ps. se le inizializzo lo faccio con il datetime.today quindi l'ora non prenderebbe comunque

    Grazie ciao
    cmq se qualcuno gli vuole dare un'occhiata la posso mettere a disposizione, chissà magari potrebbe servire a qualcuno sistemandola ovviamente..
    Tony

  9. #9
    Originariamente inviato da alka
    Dipende dai casi e dai punti in cui il valore data/ora viene prelevato.
    A meno che non si utilizzi Now, in genere le date sono codificate con le informazioni dell'ora solo quando richiesto o a seconda della situazione.
    Ok, volevo solo evidenziare che le date, internamente, sono memorizzate come valori floating point, soggette ad errori di arrotondamento, e fonti di potenziali problemi del tipo...
    codice:
    debug.Print (0.2+0.2+0.2 = 0.6)
    Falso !
    IceCube_HT (VB6 fan Club)

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Originariamente inviato da tony83
    ok cmq le textbox sono "SICURE" del loro valore visto che ho fatto dei controlli rigidissssssimi, forse anche 'troppo'..
    E' sufficiente effettuare un DateTime.Parse del valore testuale contenuto nella TextBox racchiudendolo in un blocco Try...Catch per verificare se è valido.

    Non serve nulla di più complesso; nel caso servisse, basta usare l'espressione regolare appropriata.

    Qualsiasi altro "controllo manuale" è un reinventare la ruota scrivendo codice che, a differenza di quello già disponibile e testato da Microsoft, va nuovamente verificato e può contenere facilmente "buchi".
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.