Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Validazione data

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    4

    Validazione data

    Ciao a tutti,
    ho una Text Box contenente una data formattata dd/mm/yy.
    Questa data viene poi validata per poter essere salvata in un db Access oppure viene visualizzato un messaggio di errore se non è una data valida.
    La funzione che uso è:

    if (Not isDate(TextData.Text)) then

    MESSAGGIO ERRORE

    end if

    Il problema è che se scrivo una data del tipo 01/15/03 (quindi col mese sbagliato) la riconosce come corretta vedendola e salvandola come 15/01/03 sul db.

    Ho provato anche a formattarla tramite

    Format (TextData.Text, "dd/mm/yy")

    prima di fare isDate ma non funziona comunque.

    Aiuto non riesco a vedere l'errore.

  2. #2
    Prova questa funzione, non so se ti va bene:
    codice:
    Public Function TestDate(dd As String) As Boolean
       TestDate = False
    
       If IsDate(dd) Then
          If Left$(dd, 5) = Left$(Format$(dd, "dd/mm/yyyy"), 5) Then
             TestDate = True
          End If
       End If
    End Function
    Chi non cerca trova.

  3. #3
    Io inserisco del codice per 3 eventi:
    codice:
    'Superfluo
    Public Sub ObjData_GotFocus(obj As Object)
        On Error Resume Next
        obj.SelStart = 0
        obj.SelLength = Len(obj.Text)
    End Sub
    
    Public Sub ObjData_KeyPress(KeyAscii As Integer)
        Select Case KeyAscii
            Case 48 To 57, 8  ' accetta solo 0-9 e {BS}
            'Accetta solo i numeri
            Case Else
                KeyAscii = 0
                Beep
        End Select
    End Sub
    
    Public Sub ObjData_Validate(obj As Object, Cancel As Boolean)
        On Error GoTo ErrValidate
        If Not obj.DataChanged Then Exit Sub
        If Len(obj.Text) = 0 Then Exit Sub
        If IsDate(obj.Text) Then Exit Sub
    
        'Controllo quante cifre sono state inserite, se 6 o 8
        Select Case Len(obj.Text)
        Case 6  'inserito la data breve
            obj.Text = Format(Format(obj.Text, "00/00/00"), "Short Date")
        Case 8  'inserito la data lunga
            obj.Text = Format(Format(obj.Text, "00/00/0000"), "Short Date")
        Case Else
            Beep
            MsgBox "Data errata! Inserire la data nel formato GGMMAAAA."
            obj.Text = ""
            Cancel = True
            Exit Sub
        End Select
    
        'ora controllo se è una data valida
        If Not IsDate(obj.Text) Then
            MsgBox "Inserire una data valida nel formato GGMMAA oppure GGMMAAAA, senza alcun separatore." & vbCr & vbCr & "Esempi di date valide:" & vbCr & "Inserire: 050201" & vbTab & " per ottenere: 05/02/2001" & vbCr & "Inserire: 05022001" & vbTab & " per ottenere: 05/02/2001", vbExclamation, "Data non valida"
            obj.SelStart = 0
            obj.SelLength = Len(obj.Text)
            Cancel = True
            Exit Sub
        End If
        Exit Sub
    ErrValidate:
        Cancel = False
    End Sub

  4. #4
    Ho incontrato questo errore anch'io usando Access....ho dovuto, per tagliare la testa al toro, invertire a mano la data prima della chiamata alla funzione di inserimento dati...

    usi Access anche tu?
    visitate www.pcprimipassi.it, il portale italiano per i neofiti del computer

    "Tanto prima o poi ti buco...." disse il baco alla noce!

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    4
    Si uso Access 2000 per i miei db.

    Grazie ai vostri consigli ho risolto.
    Mi ero fatto anch'io una funzione per la validazione della data senza utilizzare isDate ma, pur funzionando, ea sicuramente più lunga e laboriosa.

    Ciao Zam

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.